2009-09-13 18:30:11 +04:00
/*
* Driver for the Conexant CX25821 PCIe bridge
*
* Copyright ( C ) 2009 Conexant Systems Inc .
* Authors < shu . lin @ conexant . com > , < hiep . huynh @ conexant . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
*
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# ifndef __CX25821_AUDIO_H__
# define __CX25821_AUDIO_H__
2011-10-22 08:43:28 +04:00
# define USE_RISC_NOOP 1
# define LINES_PER_BUFFER 15
# define AUDIO_LINE_SIZE 128
2009-09-13 18:30:11 +04:00
2010-07-04 21:15:38 +04:00
/* Number of buffer programs to use at once. */
2011-10-22 08:43:28 +04:00
# define NUMBER_OF_PROGRAMS 8
2009-09-13 18:30:11 +04:00
2010-07-04 21:15:38 +04:00
/*
2010-09-27 17:01:36 +04:00
* Max size of the RISC program for a buffer . - worst case is 2 writes per line
* Space is also added for the 4 no - op instructions added on the end .
*/
2009-09-13 18:30:11 +04:00
# ifndef USE_RISC_NOOP
2011-10-22 08:43:29 +04:00
# define MAX_BUFFER_PROGRAM_SIZE \
( 2 * LINES_PER_BUFFER * RISC_WRITE_INSTRUCTION_SIZE + \
RISC_WRITECR_INSTRUCTION_SIZE * 4 )
2009-09-13 18:30:11 +04:00
# endif
2010-07-04 21:15:38 +04:00
/* MAE 12 July 2005 Try to use NOOP RISC instruction instead */
2009-09-13 18:30:11 +04:00
# ifdef USE_RISC_NOOP
2011-10-22 08:43:29 +04:00
# define MAX_BUFFER_PROGRAM_SIZE \
( 2 * LINES_PER_BUFFER * RISC_WRITE_INSTRUCTION_SIZE + \
RISC_NOOP_INSTRUCTION_SIZE * 4 )
2009-09-13 18:30:11 +04:00
# endif
2010-07-04 21:15:38 +04:00
/* Sizes of various instructions in bytes. Used when adding instructions. */
2011-10-22 08:43:29 +04:00
# define RISC_WRITE_INSTRUCTION_SIZE 12
# define RISC_JUMP_INSTRUCTION_SIZE 12
# define RISC_SKIP_INSTRUCTION_SIZE 4
# define RISC_SYNC_INSTRUCTION_SIZE 4
# define RISC_WRITECR_INSTRUCTION_SIZE 16
# define RISC_NOOP_INSTRUCTION_SIZE 4
# define MAX_AUDIO_DMA_BUFFER_SIZE \
( MAX_BUFFER_PROGRAM_SIZE * NUMBER_OF_PROGRAMS + \
RISC_SYNC_INSTRUCTION_SIZE )
2009-09-13 18:30:11 +04:00
# endif