Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
m68360_quicc.h
Go to the documentation of this file.
1 /***********************************
2  * $Id: m68360_quicc.h,v 1.1 2002/03/02 15:01:07 gerg Exp $
3  ***********************************
4  *
5  ***************************************
6  * Definitions of QUICC memory structures
7  ***************************************
8  */
9 
10 #ifndef __M68360_QUICC_H
11 #define __M68360_QUICC_H
12 
13 /*
14  * include registers and
15  * parameter ram definitions files
16  */
17 #include <asm/m68360_regs.h>
18 #include <asm/m68360_pram.h>
19 
20 
21 
22 /* Buffer Descriptors */
23 typedef struct quicc_bd {
24  volatile unsigned short status;
25  volatile unsigned short length;
26  volatile unsigned char *buf; /* WARNING: This is only true if *char is 32 bits */
27 } QUICC_BD;
28 
29 
30 #ifdef MOTOROLA_ORIGINAL
31 struct user_data {
32  /* BASE + 0x000: user data memory */
33  volatile unsigned char udata_bd_ucode[0x400]; /*user data bd's Ucode*/
34  volatile unsigned char udata_bd[0x200]; /*user data Ucode */
35  volatile unsigned char ucode_ext[0x100]; /*Ucode Extension ram */
36  volatile unsigned char RESERVED1[0x500]; /* Reserved area */
37 };
38 #else
39 struct user_data {
40  /* BASE + 0x000: user data memory */
41  volatile unsigned char udata_bd_ucode[0x400]; /* user data, bds, Ucode*/
42  volatile unsigned char udata_bd1[0x200]; /* user, bds */
43  volatile unsigned char ucode_bd_scratch[0x100]; /* user, bds, ucode scratch */
44  volatile unsigned char udata_bd2[0x100]; /* user, bds */
45  volatile unsigned char RESERVED1[0x400]; /* Reserved area */
46 };
47 #endif
48 
49 
50 /*
51  * internal ram
52  */
53 typedef struct quicc {
54  union {
55  struct quicc32_pram ch_pram_tbl[32]; /* 32*64(bytes) per channel */
56  struct user_data u;
57  }ch_or_u; /* multipul or user space */
58 
59  /* BASE + 0xc00: PARAMETER RAM */
60  union {
61  struct scc_pram {
62  union {
63  struct hdlc_pram h;
64  struct uart_pram u;
65  struct bisync_pram b;
67  unsigned char RESERVED66[0x70];
68  } pscc; /* scc parameter area (protocol dependent) */
69  union {
70  struct {
71  unsigned char RESERVED70[0x10];
72  struct spi_pram spi;
73  unsigned char RESERVED72[0x8];
74  struct timer_pram timer;
75  } timer_spi;
76  struct {
77  struct idma_pram idma;
78  unsigned char RESERVED67[0x4];
79  union {
80  struct smc_uart_pram u;
81  struct smc_trnsp_pram t;
82  } psmc;
83  } idma_smc;
84  } pothers;
85  } scc;
88  unsigned char pr[0x100];
89  } pram[4];
90 
91  /* reserved */
92 
93  /* BASE + 0x1000: INTERNAL REGISTERS */
94  /* SIM */
95  volatile unsigned long sim_mcr; /* module configuration reg */
96  volatile unsigned short sim_simtr; /* module test register */
97  volatile unsigned char RESERVED2[0x2]; /* Reserved area */
98  volatile unsigned char sim_avr; /* auto vector reg */
99  volatile unsigned char sim_rsr; /* reset status reg */
100  volatile unsigned char RESERVED3[0x2]; /* Reserved area */
101  volatile unsigned char sim_clkocr; /* CLCO control register */
102  volatile unsigned char RESERVED62[0x3]; /* Reserved area */
103  volatile unsigned short sim_pllcr; /* PLL control register */
104  volatile unsigned char RESERVED63[0x2]; /* Reserved area */
105  volatile unsigned short sim_cdvcr; /* Clock devider control register */
106  volatile unsigned short sim_pepar; /* Port E pin assignment register */
107  volatile unsigned char RESERVED64[0xa]; /* Reserved area */
108  volatile unsigned char sim_sypcr; /* system protection control*/
109  volatile unsigned char sim_swiv; /* software interrupt vector*/
110  volatile unsigned char RESERVED6[0x2]; /* Reserved area */
111  volatile unsigned short sim_picr; /* periodic interrupt control reg */
112  volatile unsigned char RESERVED7[0x2]; /* Reserved area */
113  volatile unsigned short sim_pitr; /* periodic interrupt timing reg */
114  volatile unsigned char RESERVED8[0x3]; /* Reserved area */
115  volatile unsigned char sim_swsr; /* software service */
116  volatile unsigned long sim_bkar; /* breakpoint address register*/
117  volatile unsigned long sim_bkcr; /* breakpoint control register*/
118  volatile unsigned char RESERVED10[0x8]; /* Reserved area */
119  /* MEMC */
120  volatile unsigned long memc_gmr; /* Global memory register */
121  volatile unsigned short memc_mstat; /* MEMC status register */
122  volatile unsigned char RESERVED11[0xa]; /* Reserved area */
123  volatile unsigned long memc_br0; /* base register 0 */
124  volatile unsigned long memc_or0; /* option register 0 */
125  volatile unsigned char RESERVED12[0x8]; /* Reserved area */
126  volatile unsigned long memc_br1; /* base register 1 */
127  volatile unsigned long memc_or1; /* option register 1 */
128  volatile unsigned char RESERVED13[0x8]; /* Reserved area */
129  volatile unsigned long memc_br2; /* base register 2 */
130  volatile unsigned long memc_or2; /* option register 2 */
131  volatile unsigned char RESERVED14[0x8]; /* Reserved area */
132  volatile unsigned long memc_br3; /* base register 3 */
133  volatile unsigned long memc_or3; /* option register 3 */
134  volatile unsigned char RESERVED15[0x8]; /* Reserved area */
135  volatile unsigned long memc_br4; /* base register 3 */
136  volatile unsigned long memc_or4; /* option register 3 */
137  volatile unsigned char RESERVED16[0x8]; /* Reserved area */
138  volatile unsigned long memc_br5; /* base register 3 */
139  volatile unsigned long memc_or5; /* option register 3 */
140  volatile unsigned char RESERVED17[0x8]; /* Reserved area */
141  volatile unsigned long memc_br6; /* base register 3 */
142  volatile unsigned long memc_or6; /* option register 3 */
143  volatile unsigned char RESERVED18[0x8]; /* Reserved area */
144  volatile unsigned long memc_br7; /* base register 3 */
145  volatile unsigned long memc_or7; /* option register 3 */
146  volatile unsigned char RESERVED9[0x28]; /* Reserved area */
147  /* TEST */
148  volatile unsigned short test_tstmra; /* master shift a */
149  volatile unsigned short test_tstmrb; /* master shift b */
150  volatile unsigned short test_tstsc; /* shift count */
151  volatile unsigned short test_tstrc; /* repetition counter */
152  volatile unsigned short test_creg; /* control */
153  volatile unsigned short test_dreg; /* destributed register */
154  volatile unsigned char RESERVED58[0x404]; /* Reserved area */
155  /* IDMA1 */
156  volatile unsigned short idma_iccr; /* channel configuration reg*/
157  volatile unsigned char RESERVED19[0x2]; /* Reserved area */
158  volatile unsigned short idma1_cmr; /* dma mode reg */
159  volatile unsigned char RESERVED68[0x2]; /* Reserved area */
160  volatile unsigned long idma1_sapr; /* dma source addr ptr */
161  volatile unsigned long idma1_dapr; /* dma destination addr ptr */
162  volatile unsigned long idma1_bcr; /* dma byte count reg */
163  volatile unsigned char idma1_fcr; /* function code reg */
164  volatile unsigned char RESERVED20; /* Reserved area */
165  volatile unsigned char idma1_cmar; /* channel mask reg */
166  volatile unsigned char RESERVED21; /* Reserved area */
167  volatile unsigned char idma1_csr; /* channel status reg */
168  volatile unsigned char RESERVED22[0x3]; /* Reserved area */
169  /* SDMA */
170  volatile unsigned char sdma_sdsr; /* status reg */
171  volatile unsigned char RESERVED23; /* Reserved area */
172  volatile unsigned short sdma_sdcr; /* configuration reg */
173  volatile unsigned long sdma_sdar; /* address reg */
174  /* IDMA2 */
175  volatile unsigned char RESERVED69[0x2]; /* Reserved area */
176  volatile unsigned short idma2_cmr; /* dma mode reg */
177  volatile unsigned long idma2_sapr; /* dma source addr ptr */
178  volatile unsigned long idma2_dapr; /* dma destination addr ptr */
179  volatile unsigned long idma2_bcr; /* dma byte count reg */
180  volatile unsigned char idma2_fcr; /* function code reg */
181  volatile unsigned char RESERVED24; /* Reserved area */
182  volatile unsigned char idma2_cmar; /* channel mask reg */
183  volatile unsigned char RESERVED25; /* Reserved area */
184  volatile unsigned char idma2_csr; /* channel status reg */
185  volatile unsigned char RESERVED26[0x7]; /* Reserved area */
186  /* Interrupt Controller */
187  volatile unsigned long intr_cicr; /* CP interrupt configuration reg*/
188  volatile unsigned long intr_cipr; /* CP interrupt pending reg */
189  volatile unsigned long intr_cimr; /* CP interrupt mask reg */
190  volatile unsigned long intr_cisr; /* CP interrupt in service reg*/
191  /* Parallel I/O */
192  volatile unsigned short pio_padir; /* port A data direction reg */
193  volatile unsigned short pio_papar; /* port A pin assignment reg */
194  volatile unsigned short pio_paodr; /* port A open drain reg */
195  volatile unsigned short pio_padat; /* port A data register */
196  volatile unsigned char RESERVED28[0x8]; /* Reserved area */
197  volatile unsigned short pio_pcdir; /* port C data direction reg*/
198  volatile unsigned short pio_pcpar; /* port C pin assignment reg*/
199  volatile unsigned short pio_pcso; /* port C special options */
200  volatile unsigned short pio_pcdat; /* port C data register */
201  volatile unsigned short pio_pcint; /* port C interrupt cntrl reg */
202  volatile unsigned char RESERVED29[0x16]; /* Reserved area */
203  /* Timer */
204  volatile unsigned short timer_tgcr; /* timer global configuration reg */
205  volatile unsigned char RESERVED30[0xe]; /* Reserved area */
206  volatile unsigned short timer_tmr1; /* timer 1 mode reg */
207  volatile unsigned short timer_tmr2; /* timer 2 mode reg */
208  volatile unsigned short timer_trr1; /* timer 1 referance reg */
209  volatile unsigned short timer_trr2; /* timer 2 referance reg */
210  volatile unsigned short timer_tcr1; /* timer 1 capture reg */
211  volatile unsigned short timer_tcr2; /* timer 2 capture reg */
212  volatile unsigned short timer_tcn1; /* timer 1 counter reg */
213  volatile unsigned short timer_tcn2; /* timer 2 counter reg */
214  volatile unsigned short timer_tmr3; /* timer 3 mode reg */
215  volatile unsigned short timer_tmr4; /* timer 4 mode reg */
216  volatile unsigned short timer_trr3; /* timer 3 referance reg */
217  volatile unsigned short timer_trr4; /* timer 4 referance reg */
218  volatile unsigned short timer_tcr3; /* timer 3 capture reg */
219  volatile unsigned short timer_tcr4; /* timer 4 capture reg */
220  volatile unsigned short timer_tcn3; /* timer 3 counter reg */
221  volatile unsigned short timer_tcn4; /* timer 4 counter reg */
222  volatile unsigned short timer_ter1; /* timer 1 event reg */
223  volatile unsigned short timer_ter2; /* timer 2 event reg */
224  volatile unsigned short timer_ter3; /* timer 3 event reg */
225  volatile unsigned short timer_ter4; /* timer 4 event reg */
226  volatile unsigned char RESERVED34[0x8]; /* Reserved area */
227  /* CP */
228  volatile unsigned short cp_cr; /* command register */
229  volatile unsigned char RESERVED35[0x2]; /* Reserved area */
230  volatile unsigned short cp_rccr; /* main configuration reg */
231  volatile unsigned char RESERVED37; /* Reserved area */
232  volatile unsigned char cp_rmds; /* development support status reg */
233  volatile unsigned long cp_rmdr; /* development support control reg */
234  volatile unsigned short cp_rctr1; /* ram break register 1 */
235  volatile unsigned short cp_rctr2; /* ram break register 2 */
236  volatile unsigned short cp_rctr3; /* ram break register 3 */
237  volatile unsigned short cp_rctr4; /* ram break register 4 */
238  volatile unsigned char RESERVED59[0x2]; /* Reserved area */
239  volatile unsigned short cp_rter; /* RISC timers event reg */
240  volatile unsigned char RESERVED38[0x2]; /* Reserved area */
241  volatile unsigned short cp_rtmr; /* RISC timers mask reg */
242  volatile unsigned char RESERVED39[0x14]; /* Reserved area */
243  /* BRG */
244  union {
245  volatile unsigned long l;
246  struct {
247  volatile unsigned short BRGC_RESERV:14;
248  volatile unsigned short rst:1;
249  volatile unsigned short en:1;
250  volatile unsigned short extc:2;
251  volatile unsigned short atb:1;
252  volatile unsigned short cd:12;
253  volatile unsigned short div16:1;
254  } b;
255  } brgc[4]; /* BRG1-BRG4 configuration regs*/
256  /* SCC registers */
257  struct scc_regs {
258  union {
259  struct {
260  /* Low word. */
261  volatile unsigned short GSMR_RESERV2:1;
262  volatile unsigned short edge:2;
263  volatile unsigned short tci:1;
264  volatile unsigned short tsnc:2;
265  volatile unsigned short rinv:1;
266  volatile unsigned short tinv:1;
267  volatile unsigned short tpl:3;
268  volatile unsigned short tpp:2;
269  volatile unsigned short tend:1;
270  volatile unsigned short tdcr:2;
271  volatile unsigned short rdcr:2;
272  volatile unsigned short renc:3;
273  volatile unsigned short tenc:3;
274  volatile unsigned short diag:2;
275  volatile unsigned short enr:1;
276  volatile unsigned short ent:1;
277  volatile unsigned short mode:4;
278  /* High word. */
279  volatile unsigned short GSMR_RESERV1:14;
280  volatile unsigned short pri:1;
281  volatile unsigned short gde:1;
282  volatile unsigned short tcrc:2;
283  volatile unsigned short revd:1;
284  volatile unsigned short trx:1;
285  volatile unsigned short ttx:1;
286  volatile unsigned short cdp:1;
287  volatile unsigned short ctsp:1;
288  volatile unsigned short cds:1;
289  volatile unsigned short ctss:1;
290  volatile unsigned short tfl:1;
291  volatile unsigned short rfw:1;
292  volatile unsigned short txsy:1;
293  volatile unsigned short synl:2;
294  volatile unsigned short rtsm:1;
295  volatile unsigned short rsyn:1;
296  } b;
297  struct {
298  volatile unsigned long low;
299  volatile unsigned long high;
300  } w;
301  } scc_gsmr; /* SCC general mode reg */
302  volatile unsigned short scc_psmr; /* protocol specific mode reg */
303  volatile unsigned char RESERVED42[0x2]; /* Reserved area */
304  volatile unsigned short scc_todr; /* SCC transmit on demand */
305  volatile unsigned short scc_dsr; /* SCC data sync reg */
306  volatile unsigned short scc_scce; /* SCC event reg */
307  volatile unsigned char RESERVED43[0x2];/* Reserved area */
308  volatile unsigned short scc_sccm; /* SCC mask reg */
309  volatile unsigned char RESERVED44[0x1];/* Reserved area */
310  volatile unsigned char scc_sccs; /* SCC status reg */
311  volatile unsigned char RESERVED45[0x8]; /* Reserved area */
312  } scc_regs[4];
313  /* SMC */
314  struct smc_regs {
315  volatile unsigned char RESERVED46[0x2]; /* Reserved area */
316  volatile unsigned short smc_smcmr; /* SMC mode reg */
317  volatile unsigned char RESERVED60[0x2]; /* Reserved area */
318  volatile unsigned char smc_smce; /* SMC event reg */
319  volatile unsigned char RESERVED47[0x3]; /* Reserved area */
320  volatile unsigned char smc_smcm; /* SMC mask reg */
321  volatile unsigned char RESERVED48[0x5]; /* Reserved area */
322  } smc_regs[2];
323  /* SPI */
324  volatile unsigned short spi_spmode; /* SPI mode reg */
325  volatile unsigned char RESERVED51[0x4]; /* Reserved area */
326  volatile unsigned char spi_spie; /* SPI event reg */
327  volatile unsigned char RESERVED52[0x3]; /* Reserved area */
328  volatile unsigned char spi_spim; /* SPI mask reg */
329  volatile unsigned char RESERVED53[0x2]; /* Reserved area */
330  volatile unsigned char spi_spcom; /* SPI command reg */
331  volatile unsigned char RESERVED54[0x4]; /* Reserved area */
332  /* PIP */
333  volatile unsigned short pip_pipc; /* pip configuration reg */
334  volatile unsigned char RESERVED65[0x2]; /* Reserved area */
335  volatile unsigned short pip_ptpr; /* pip timing parameters reg */
336  volatile unsigned long pip_pbdir; /* port b data direction reg */
337  volatile unsigned long pip_pbpar; /* port b pin assignment reg */
338  volatile unsigned long pip_pbodr; /* port b open drain reg */
339  volatile unsigned long pip_pbdat; /* port b data reg */
340  volatile unsigned char RESERVED71[0x18]; /* Reserved area */
341  /* Serial Interface */
342  volatile unsigned long si_simode; /* SI mode register */
343  volatile unsigned char si_sigmr; /* SI global mode register */
344  volatile unsigned char RESERVED55; /* Reserved area */
345  volatile unsigned char si_sistr; /* SI status register */
346  volatile unsigned char si_sicmr; /* SI command register */
347  volatile unsigned char RESERVED56[0x4]; /* Reserved area */
348  volatile unsigned long si_sicr; /* SI clock routing */
349  volatile unsigned long si_sirp; /* SI ram pointers */
350  volatile unsigned char RESERVED57[0xc]; /* Reserved area */
351  volatile unsigned short si_siram[0x80]; /* SI routing ram */
352 } QUICC;
353 
354 #endif
355 
356 /*
357  * Local variables:
358  * c-indent-level: 4
359  * c-basic-offset: 4
360  * tab-width: 4
361  * End:
362  */