spi-topcliff-pch: Fix issue for transmitting over 4KByte
[zen-stable.git] / arch / arm / mach-davinci / include / mach / asp.h
blob9aa240909a2cf4f9dac7bc1afc560712d9020ba2
1 /*
2 * <mach/asp.h> - DaVinci Audio Serial Port support
3 */
4 #ifndef __ASM_ARCH_DAVINCI_ASP_H
5 #define __ASM_ARCH_DAVINCI_ASP_H
7 #include <mach/irqs.h>
8 #include <mach/edma.h>
10 /* Bases of dm644x and dm355 register banks */
11 #define DAVINCI_ASP0_BASE 0x01E02000
12 #define DAVINCI_ASP1_BASE 0x01E04000
14 /* Bases of dm365 register banks */
15 #define DAVINCI_DM365_ASP0_BASE 0x01D02000
17 /* Bases of dm646x register banks */
18 #define DAVINCI_DM646X_MCASP0_REG_BASE 0x01D01000
19 #define DAVINCI_DM646X_MCASP1_REG_BASE 0x01D01800
21 /* Bases of da850/da830 McASP0 register banks */
22 #define DAVINCI_DA8XX_MCASP0_REG_BASE 0x01D00000
24 /* Bases of da830 McASP1 register banks */
25 #define DAVINCI_DA830_MCASP1_REG_BASE 0x01D04000
27 /* EDMA channels of dm644x and dm355 */
28 #define DAVINCI_DMA_ASP0_TX 2
29 #define DAVINCI_DMA_ASP0_RX 3
30 #define DAVINCI_DMA_ASP1_TX 8
31 #define DAVINCI_DMA_ASP1_RX 9
33 /* EDMA channels of dm646x */
34 #define DAVINCI_DM646X_DMA_MCASP0_AXEVT0 6
35 #define DAVINCI_DM646X_DMA_MCASP0_AREVT0 9
36 #define DAVINCI_DM646X_DMA_MCASP1_AXEVT1 12
38 /* EDMA channels of da850/da830 McASP0 */
39 #define DAVINCI_DA8XX_DMA_MCASP0_AREVT 0
40 #define DAVINCI_DA8XX_DMA_MCASP0_AXEVT 1
42 /* EDMA channels of da830 McASP1 */
43 #define DAVINCI_DA830_DMA_MCASP1_AREVT 2
44 #define DAVINCI_DA830_DMA_MCASP1_AXEVT 3
46 /* Interrupts */
47 #define DAVINCI_ASP0_RX_INT IRQ_MBRINT
48 #define DAVINCI_ASP0_TX_INT IRQ_MBXINT
49 #define DAVINCI_ASP1_RX_INT IRQ_MBRINT
50 #define DAVINCI_ASP1_TX_INT IRQ_MBXINT
52 struct snd_platform_data {
53 u32 tx_dma_offset;
54 u32 rx_dma_offset;
55 enum dma_event_q asp_chan_q; /* event queue number for ASP channel */
56 enum dma_event_q ram_chan_q; /* event queue number for RAM channel */
57 unsigned int codec_fmt;
59 * Allowing this is more efficient and eliminates left and right swaps
60 * caused by underruns, but will swap the left and right channels
61 * when compared to previous behavior.
63 unsigned enable_channel_combine:1;
64 unsigned sram_size_playback;
65 unsigned sram_size_capture;
68 * If McBSP peripheral gets the clock from an external pin,
69 * there are three chooses, that are MCBSP_CLKX, MCBSP_CLKR
70 * and MCBSP_CLKS.
71 * Depending on different hardware connections it is possible
72 * to use this setting to change the behaviour of McBSP
73 * driver. The dm365_clk_input_pin enum is available for dm365
75 int clk_input_pin;
78 * This flag works when both clock and FS are outputs for the cpu
79 * and makes clock more accurate (FS is not symmetrical and the
80 * clock is very fast.
81 * The clock becoming faster is named
82 * i2s continuous serial clock (I2S_SCK) and it is an externally
83 * visible bit clock.
85 * first line : WordSelect
86 * second line : ContinuousSerialClock
87 * third line: SerialData
89 * SYMMETRICAL APPROACH:
90 * _______________________ LEFT
91 * _| RIGHT |______________________|
92 * _ _ _ _ _ _ _ _
93 * _| |_| |_ x16 _| |_| |_| |_| |_ x16 _| |_| |_
94 * _ _ _ _ _ _ _ _
95 * _/ \_/ \_ ... _/ \_/ \_/ \_/ \_ ... _/ \_/ \_
96 * \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
98 * ACCURATE CLOCK APPROACH:
99 * ______________ LEFT
100 * _| RIGHT |_______________________________|
101 * _ _ _ _ _ _ _ _ _
102 * _| |_ x16 _| |_| |_ x16 _| |_| |_| |_| |_| |_| |
103 * _ _ _ _ dummy cycles
104 * _/ \_ ... _/ \_/ \_ ... _/ \__________________
105 * \_/ \_/ \_/ \_/
108 bool i2s_accurate_sck;
110 /* McASP specific fields */
111 int tdm_slots;
112 u8 op_mode;
113 u8 num_serializer;
114 u8 *serial_dir;
115 u8 version;
116 u8 txnumevt;
117 u8 rxnumevt;
120 enum {
121 MCASP_VERSION_1 = 0, /* DM646x */
122 MCASP_VERSION_2, /* DA8xx/OMAPL1x */
125 enum dm365_clk_input_pin {
126 MCBSP_CLKR = 0, /* DM365 */
127 MCBSP_CLKS,
130 #define INACTIVE_MODE 0
131 #define TX_MODE 1
132 #define RX_MODE 2
134 #define DAVINCI_MCASP_IIS_MODE 0
135 #define DAVINCI_MCASP_DIT_MODE 1
137 #endif /* __ASM_ARCH_DAVINCI_ASP_H */