m68360_quicc.h 20 KB

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