1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
/* mb93493-regs.h: MB93493 companion chip registers
*
* Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
* Written by David Howells (dhowells@redhat.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.
*/
#ifndef _ASM_MB93493_REGS_H
#define _ASM_MB93493_REGS_H
#include <asm/mb-regs.h>
#include <asm/mb93493-irqs.h>
#define __addr_MB93493(X) ((volatile unsigned long *)(__region_CS3 + (X)))
#define __get_MB93493(X) ({ *(volatile unsigned long *)(__region_CS3 + (X)); })
#define __set_MB93493(X,V) \
do { \
*(volatile unsigned long *)(__region_CS3 + (X)) = (V); mb(); \
} while(0)
#define __get_MB93493_STSR(X) __get_MB93493(0x3c0 + (X) * 4)
#define __set_MB93493_STSR(X,V) __set_MB93493(0x3c0 + (X) * 4, (V))
#define MB93493_STSR_EN
#define __addr_MB93493_IQSR(X) __addr_MB93493(0x3d0 + (X) * 4)
#define __get_MB93493_IQSR(X) __get_MB93493(0x3d0 + (X) * 4)
#define __set_MB93493_IQSR(X,V) __set_MB93493(0x3d0 + (X) * 4, (V))
#define __get_MB93493_DQSR(X) __get_MB93493(0x3e0 + (X) * 4)
#define __set_MB93493_DQSR(X,V) __set_MB93493(0x3e0 + (X) * 4, (V))
#define __get_MB93493_LBSER() __get_MB93493(0x3f0)
#define __set_MB93493_LBSER(V) __set_MB93493(0x3f0, (V))
#define MB93493_LBSER_VDC 0x00010000
#define MB93493_LBSER_VCC 0x00020000
#define MB93493_LBSER_AUDIO 0x00040000
#define MB93493_LBSER_I2C_0 0x00080000
#define MB93493_LBSER_I2C_1 0x00100000
#define MB93493_LBSER_USB 0x00200000
#define MB93493_LBSER_GPIO 0x00800000
#define MB93493_LBSER_PCMCIA 0x01000000
#define __get_MB93493_LBSR() __get_MB93493(0x3fc)
#define __set_MB93493_LBSR(V) __set_MB93493(0x3fc, (V))
/*
* video display controller
*/
#define __get_MB93493_VDC(X) __get_MB93493(MB93493_VDC_##X)
#define __set_MB93493_VDC(X,V) __set_MB93493(MB93493_VDC_##X, (V))
#define MB93493_VDC_RCURSOR 0x140 /* cursor position */
#define MB93493_VDC_RCT1 0x144 /* cursor colour 1 */
#define MB93493_VDC_RCT2 0x148 /* cursor colour 2 */
#define MB93493_VDC_RHDC 0x150 /* horizontal display period */
#define MB93493_VDC_RH_MARGINS 0x154 /* horizontal margin sizes */
#define MB93493_VDC_RVDC 0x158 /* vertical display period */
#define MB93493_VDC_RV_MARGINS 0x15c /* vertical margin sizes */
#define MB93493_VDC_RC 0x170 /* VDC control */
#define MB93493_VDC_RCLOCK 0x174 /* clock divider, DMA req delay */
#define MB93493_VDC_RBLACK 0x178 /* black insert sizes */
#define MB93493_VDC_RS 0x17c /* VDC status */
#define __addr_MB93493_VDC_BCI(X) ({ (volatile unsigned long *)(__region_CS3 + 0x000 + (X)); })
#define __addr_MB93493_VDC_TPO(X) (__region_CS3 + 0x1c0 + (X))
#define VDC_TPO_WIDTH 32
#define VDC_RC_DSR 0x00000080 /* VDC master reset */
#define VDC_RS_IT 0x00060000 /* interrupt indicators */
#define VDC_RS_IT_UNDERFLOW 0x00040000 /* - underflow event */
#define VDC_RS_IT_VSYNC 0x00020000 /* - VSYNC event */
#define VDC_RS_DFI 0x00010000 /* current interlace field number */
#define VDC_RS_DFI_TOP 0x00000000 /* - top field */
#define VDC_RS_DFI_BOTTOM 0x00010000 /* - bottom field */
#define VDC_RS_DCSR 0x00000010 /* cursor state */
#define VDC_RS_DCM 0x00000003 /* display mode */
#define VDC_RS_DCM_DISABLED 0x00000000 /* - display disabled */
#define VDC_RS_DCM_STOPPED 0x00000001 /* - VDC stopped */
#define VDC_RS_DCM_FREERUNNING 0x00000002 /* - VDC free-running */
#define VDC_RS_DCM_TRANSFERRING 0x00000003 /* - data being transferred to VDC */
/*
* video capture controller
*/
#define __get_MB93493_VCC(X) __get_MB93493(MB93493_VCC_##X)
#define __set_MB93493_VCC(X,V) __set_MB93493(MB93493_VCC_##X, (V))
#define MB93493_VCC_RREDUCT 0x104 /* reduction rate */
#define MB93493_VCC_RHY 0x108 /* horizontal brightness filter coefficients */
#define MB93493_VCC_RHC 0x10c /* horizontal colour-difference filter coefficients */
#define MB93493_VCC_RHSIZE 0x110 /* horizontal cycle sizes */
#define MB93493_VCC_RHBC 0x114 /* horizontal back porch size */
#define MB93493_VCC_RVCC 0x118 /* vertical capture period */
#define MB93493_VCC_RVBC 0x11c /* vertical back porch period */
#define MB93493_VCC_RV 0x120 /* vertical filter coefficients */
#define MB93493_VCC_RDTS 0x128 /* DMA transfer size */
#define MB93493_VCC_RDTS_4B 0x01000000 /* 4-byte transfer */
#define MB93493_VCC_RDTS_32B 0x03000000 /* 32-byte transfer */
#define MB93493_VCC_RDTS_SHIFT 24
#define MB93493_VCC_RCC 0x130 /* VCC control */
#define MB93493_VCC_RIS 0x134 /* VCC interrupt status */
#define __addr_MB93493_VCC_TPI(X) (__region_CS3 + 0x180 + (X))
#define VCC_RHSIZE_RHCC 0x000007ff
#define VCC_RHSIZE_RHCC_SHIFT 0
#define VCC_RHSIZE_RHTCC 0x0fff0000
#define VCC_RHSIZE_RHTCC_SHIFT 16
#define VCC_RVBC_RVBC 0x00003f00
#define VCC_RVBC_RVBC_SHIFT 8
#define VCC_RREDUCT_RHR 0x07ff0000
#define VCC_RREDUCT_RHR_SHIFT 16
#define VCC_RREDUCT_RVR 0x000007ff
#define VCC_RREDUCT_RVR_SHIFT 0
#define VCC_RCC_CE 0x00000001 /* VCC enable */
#define VCC_RCC_CS 0x00000002 /* request video capture start */
#define VCC_RCC_CPF 0x0000000c /* pixel format */
#define VCC_RCC_CPF_YCBCR_16 0x00000000 /* - YCbCr 4:2:2 16-bit format */
#define VCC_RCC_CPF_RGB 0x00000004 /* - RGB 4:4:4 format */
#define VCC_RCC_CPF_YCBCR_24 0x00000008 /* - YCbCr 4:2:2 24-bit format */
#define VCC_RCC_CPF_BT656 0x0000000c /* - ITU R-BT.656 format */
#define VCC_RCC_CPF_SHIFT 2
#define VCC_RCC_CSR 0x00000080 /* request reset */
#define VCC_RCC_HSIP 0x00000100 /* HSYNC polarity */
#define VCC_RCC_HSIP_LOACT 0x00000000 /* - low active */
#define VCC_RCC_HSIP_HIACT 0x00000100 /* - high active */
#define VCC_RCC_VSIP 0x00000200 /* VSYNC polarity */
#define VCC_RCC_VSIP_LOACT 0x00000000 /* - low active */
#define VCC_RCC_VSIP_HIACT 0x00000200 /* - high active */
#define VCC_RCC_CIE 0x00000800 /* interrupt enable */
#define VCC_RCC_CFP 0x00001000 /* RGB pixel packing */
#define VCC_RCC_CFP_4TO3 0x00000000 /* - pack 4 pixels into 3 words */
#define VCC_RCC_CFP_1TO1 0x00001000 /* - pack 1 pixel into 1 words */
#define VCC_RCC_CSM 0x00006000 /* interlace specification */
#define VCC_RCC_CSM_ONEPASS 0x00002000 /* - non-interlaced */
#define VCC_RCC_CSM_INTERLACE 0x00004000 /* - interlaced */
#define VCC_RCC_CSM_SHIFT 13
#define VCC_RCC_ES 0x00008000 /* capture start polarity */
#define VCC_RCC_ES_NEG 0x00000000 /* - negative edge */
#define VCC_RCC_ES_POS 0x00008000 /* - positive edge */
#define VCC_RCC_IFI 0x00080000 /* inferlace field evaluation reverse */
#define VCC_RCC_FDTS 0x00300000 /* interlace field start */
#define VCC_RCC_FDTS_3_8 0x00000000 /* - 3/8 of horizontal entire cycle */
#define VCC_RCC_FDTS_1_4 0x00100000 /* - 1/4 of horizontal entire cycle */
#define VCC_RCC_FDTS_7_16 0x00200000 /* - 7/16 of horizontal entire cycle */
#define VCC_RCC_FDTS_SHIFT 20
#define VCC_RCC_MOV 0x00400000 /* test bit - always set to 1 */
#define VCC_RCC_STP 0x00800000 /* request video capture stop */
#define VCC_RCC_TO 0x01000000 /* input during top-field only */
#define VCC_RIS_VSYNC 0x01000000 /* VSYNC interrupt */
#define VCC_RIS_OV 0x02000000 /* overflow interrupt */
#define VCC_RIS_BOTTOM 0x08000000 /* interlace bottom field */
#define VCC_RIS_STARTED 0x10000000 /* capture started */
/*
* I2C
*/
#define MB93493_I2C_BSR 0x340 /* bus status */
#define MB93493_I2C_BCR 0x344 /* bus control */
#define MB93493_I2C_CCR 0x348 /* clock control */
#define MB93493_I2C_ADR 0x34c /* address */
#define MB93493_I2C_DTR 0x350 /* data */
#define MB93493_I2C_BC2R 0x35c /* bus control 2 */
#define __addr_MB93493_I2C(port,X) (__region_CS3 + MB93493_I2C_##X + ((port)*0x20))
#define __get_MB93493_I2C(port,X) __get_MB93493(MB93493_I2C_##X + ((port)*0x20))
#define __set_MB93493_I2C(port,X,V) __set_MB93493(MB93493_I2C_##X + ((port)*0x20), (V))
#define I2C_BSR_BB (1 << 7)
/*
* audio controller (I2S) registers
*/
#define __get_MB93493_I2S(X) __get_MB93493(MB93493_I2S_##X)
#define __set_MB93493_I2S(X,V) __set_MB93493(MB93493_I2S_##X, (V))
#define MB93493_I2S_ALDR 0x300 /* L-channel data */
#define MB93493_I2S_ARDR 0x304 /* R-channel data */
#define MB93493_I2S_APDR 0x308 /* 16-bit packed data */
#define MB93493_I2S_AISTR 0x310 /* status */
#define MB93493_I2S_AICR 0x314 /* control */
#define __addr_MB93493_I2S_ALDR(X) (__region_CS3 + MB93493_I2S_ALDR + (X))
#define __addr_MB93493_I2S_ARDR(X) (__region_CS3 + MB93493_I2S_ARDR + (X))
#define __addr_MB93493_I2S_APDR(X) (__region_CS3 + MB93493_I2S_APDR + (X))
#define __addr_MB93493_I2S_ADR(X) (__region_CS3 + 0x320 + (X))
#define I2S_AISTR_OTST 0x00000003 /* status of output data transfer */
#define I2S_AISTR_OTR 0x00000010 /* output transfer request pending */
#define I2S_AISTR_OUR 0x00000020 /* output FIFO underrun detected */
#define I2S_AISTR_OOR 0x00000040 /* output FIFO overrun detected */
#define I2S_AISTR_ODS 0x00000100 /* output DMA transfer size */
#define I2S_AISTR_ODE 0x00000400 /* output DMA transfer request enable */
#define I2S_AISTR_OTRIE 0x00001000 /* output transfer request interrupt enable */
#define I2S_AISTR_OURIE 0x00002000 /* output FIFO underrun interrupt enable */
#define I2S_AISTR_OORIE 0x00004000 /* output FIFO overrun interrupt enable */
#define I2S_AISTR__OUT_MASK 0x00007570
#define I2S_AISTR_ITST 0x00030000 /* status of input data transfer */
#define I2S_AISTR_ITST_SHIFT 16
#define I2S_AISTR_ITR 0x00100000 /* input transfer request pending */
#define I2S_AISTR_IUR 0x00200000 /* input FIFO underrun detected */
#define I2S_AISTR_IOR 0x00400000 /* input FIFO overrun detected */
#define I2S_AISTR_IDS 0x01000000 /* input DMA transfer size */
#define I2S_AISTR_IDE 0x04000000 /* input DMA transfer request enable */
#define I2S_AISTR_ITRIE 0x10000000 /* input transfer request interrupt enable */
#define I2S_AISTR_IURIE 0x20000000 /* input FIFO underrun interrupt enable */
#define I2S_AISTR_IORIE 0x40000000 /* input FIFO overrun interrupt enable */
#define I2S_AISTR__IN_MASK 0x75700000
#define I2S_AICR_MI 0x00000001 /* mono input requested */
#define I2S_AICR_AMI 0x00000002 /* relation between LRCKI/FS1 and SDI */
#define I2S_AICR_LRI 0x00000004 /* function of LRCKI pin */
#define I2S_AICR_SDMI 0x00000070 /* format of input audio data */
#define I2S_AICR_SDMI_SHIFT 4
#define I2S_AICR_CLI 0x00000080 /* input FIFO clearing control */
#define I2S_AICR_IM 0x00000300 /* input state control */
#define I2S_AICR_IM_SHIFT 8
#define I2S_AICR__IN_MASK 0x000003f7
#define I2S_AICR_MO 0x00001000 /* mono output requested */
#define I2S_AICR_AMO 0x00002000 /* relation between LRCKO/FS0 and SDO */
#define I2S_AICR_AMO_SHIFT 13
#define I2S_AICR_LRO 0x00004000 /* function of LRCKO pin */
#define I2S_AICR_SDMO 0x00070000 /* format of output audio data */
#define I2S_AICR_SDMO_SHIFT 16
#define I2S_AICR_CLO 0x00080000 /* output FIFO clearing control */
#define I2S_AICR_OM 0x00100000 /* output state control */
#define I2S_AICR__OUT_MASK 0x001f7000
#define I2S_AICR_DIV 0x03000000 /* frequency division rate */
#define I2S_AICR_DIV_SHIFT 24
#define I2S_AICR_FL 0x20000000 /* frame length */
#define I2S_AICR_FS 0x40000000 /* frame sync method */
#define I2S_AICR_ME 0x80000000 /* master enable */
/*
* PCMCIA
*/
#define __addr_MB93493_PCMCIA(X) ((volatile unsigned long *)(__region_CS5 + (X)))
/*
* GPIO
*/
#define __get_MB93493_GPIO_PDR(X) __get_MB93493(0x380 + (X) * 0xc0)
#define __set_MB93493_GPIO_PDR(X,V) __set_MB93493(0x380 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_GPDR(X) __get_MB93493(0x384 + (X) * 0xc0)
#define __set_MB93493_GPIO_GPDR(X,V) __set_MB93493(0x384 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_SIR(X) __get_MB93493(0x388 + (X) * 0xc0)
#define __set_MB93493_GPIO_SIR(X,V) __set_MB93493(0x388 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_SOR(X) __get_MB93493(0x38c + (X) * 0xc0)
#define __set_MB93493_GPIO_SOR(X,V) __set_MB93493(0x38c + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_PDSR(X) __get_MB93493(0x390 + (X) * 0xc0)
#define __set_MB93493_GPIO_PDSR(X,V) __set_MB93493(0x390 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_PDCR(X) __get_MB93493(0x394 + (X) * 0xc0)
#define __set_MB93493_GPIO_PDCR(X,V) __set_MB93493(0x394 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_INTST(X) __get_MB93493(0x398 + (X) * 0xc0)
#define __set_MB93493_GPIO_INTST(X,V) __set_MB93493(0x398 + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_IEHL(X) __get_MB93493(0x39c + (X) * 0xc0)
#define __set_MB93493_GPIO_IEHL(X,V) __set_MB93493(0x39c + (X) * 0xc0, (V))
#define __get_MB93493_GPIO_IELH(X) __get_MB93493(0x3a0 + (X) * 0xc0)
#define __set_MB93493_GPIO_IELH(X,V) __set_MB93493(0x3a0 + (X) * 0xc0, (V))
#endif /* _ASM_MB93493_REGS_H */
|