s3c24x0.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656
  1. /*
  2. * (C) Copyright 2003
  3. * David Müller ELSOFT AG Switzerland. d.mueller@elsoft.ch
  4. *
  5. * See file CREDITS for list of people who contributed to this
  6. * project.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License as
  10. * published by the Free Software Foundation; either version 2 of
  11. * the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21. * MA 02111-1307 USA
  22. */
  23. /************************************************
  24. * NAME : s3c24x0.h
  25. * Version : 31.3.2003
  26. *
  27. * common stuff for SAMSUNG S3C24X0 SoC
  28. ************************************************/
  29. #ifndef __S3C24X0_H__
  30. #define __S3C24X0_H__
  31. typedef volatile u8 S3C24X0_REG8;
  32. typedef volatile u16 S3C24X0_REG16;
  33. typedef volatile u32 S3C24X0_REG32;
  34. /* Memory controller (see manual chapter 5) */
  35. struct s3c24x0_memctl {
  36. S3C24X0_REG32 BWSCON;
  37. S3C24X0_REG32 BANKCON[8];
  38. S3C24X0_REG32 REFRESH;
  39. S3C24X0_REG32 BANKSIZE;
  40. S3C24X0_REG32 MRSRB6;
  41. S3C24X0_REG32 MRSRB7;
  42. };
  43. /* USB HOST (see manual chapter 12) */
  44. struct s3c24x0_usb_host {
  45. S3C24X0_REG32 HcRevision;
  46. S3C24X0_REG32 HcControl;
  47. S3C24X0_REG32 HcCommonStatus;
  48. S3C24X0_REG32 HcInterruptStatus;
  49. S3C24X0_REG32 HcInterruptEnable;
  50. S3C24X0_REG32 HcInterruptDisable;
  51. S3C24X0_REG32 HcHCCA;
  52. S3C24X0_REG32 HcPeriodCuttendED;
  53. S3C24X0_REG32 HcControlHeadED;
  54. S3C24X0_REG32 HcControlCurrentED;
  55. S3C24X0_REG32 HcBulkHeadED;
  56. S3C24X0_REG32 HcBuldCurrentED;
  57. S3C24X0_REG32 HcDoneHead;
  58. S3C24X0_REG32 HcRmInterval;
  59. S3C24X0_REG32 HcFmRemaining;
  60. S3C24X0_REG32 HcFmNumber;
  61. S3C24X0_REG32 HcPeriodicStart;
  62. S3C24X0_REG32 HcLSThreshold;
  63. S3C24X0_REG32 HcRhDescriptorA;
  64. S3C24X0_REG32 HcRhDescriptorB;
  65. S3C24X0_REG32 HcRhStatus;
  66. S3C24X0_REG32 HcRhPortStatus1;
  67. S3C24X0_REG32 HcRhPortStatus2;
  68. };
  69. /* INTERRUPT (see manual chapter 14) */
  70. struct s3c24x0_interrupt {
  71. S3C24X0_REG32 SRCPND;
  72. S3C24X0_REG32 INTMOD;
  73. S3C24X0_REG32 INTMSK;
  74. S3C24X0_REG32 PRIORITY;
  75. S3C24X0_REG32 INTPND;
  76. S3C24X0_REG32 INTOFFSET;
  77. #ifdef CONFIG_S3C2410
  78. S3C24X0_REG32 SUBSRCPND;
  79. S3C24X0_REG32 INTSUBMSK;
  80. #endif
  81. };
  82. /* DMAS (see manual chapter 8) */
  83. struct s3c24x0_dma {
  84. S3C24X0_REG32 DISRC;
  85. #ifdef CONFIG_S3C2410
  86. S3C24X0_REG32 DISRCC;
  87. #endif
  88. S3C24X0_REG32 DIDST;
  89. #ifdef CONFIG_S3C2410
  90. S3C24X0_REG32 DIDSTC;
  91. #endif
  92. S3C24X0_REG32 DCON;
  93. S3C24X0_REG32 DSTAT;
  94. S3C24X0_REG32 DCSRC;
  95. S3C24X0_REG32 DCDST;
  96. S3C24X0_REG32 DMASKTRIG;
  97. #ifdef CONFIG_S3C2400
  98. S3C24X0_REG32 res[1];
  99. #endif
  100. #ifdef CONFIG_S3C2410
  101. S3C24X0_REG32 res[7];
  102. #endif
  103. };
  104. struct s3c24x0_dmas {
  105. struct s3c24x0_dma dma[4];
  106. };
  107. /* CLOCK & POWER MANAGEMENT (see S3C2400 manual chapter 6) */
  108. /* (see S3C2410 manual chapter 7) */
  109. struct s3c24x0_clock_power {
  110. S3C24X0_REG32 LOCKTIME;
  111. S3C24X0_REG32 MPLLCON;
  112. S3C24X0_REG32 UPLLCON;
  113. S3C24X0_REG32 CLKCON;
  114. S3C24X0_REG32 CLKSLOW;
  115. S3C24X0_REG32 CLKDIVN;
  116. };
  117. /* LCD CONTROLLER (see manual chapter 15) */
  118. struct s3c24x0_lcd {
  119. S3C24X0_REG32 LCDCON1;
  120. S3C24X0_REG32 LCDCON2;
  121. S3C24X0_REG32 LCDCON3;
  122. S3C24X0_REG32 LCDCON4;
  123. S3C24X0_REG32 LCDCON5;
  124. S3C24X0_REG32 LCDSADDR1;
  125. S3C24X0_REG32 LCDSADDR2;
  126. S3C24X0_REG32 LCDSADDR3;
  127. S3C24X0_REG32 REDLUT;
  128. S3C24X0_REG32 GREENLUT;
  129. S3C24X0_REG32 BLUELUT;
  130. S3C24X0_REG32 res[8];
  131. S3C24X0_REG32 DITHMODE;
  132. S3C24X0_REG32 TPAL;
  133. #ifdef CONFIG_S3C2410
  134. S3C24X0_REG32 LCDINTPND;
  135. S3C24X0_REG32 LCDSRCPND;
  136. S3C24X0_REG32 LCDINTMSK;
  137. S3C24X0_REG32 LPCSEL;
  138. #endif
  139. };
  140. /* NAND FLASH (see S3C2410 manual chapter 6) */
  141. struct s3c2410_nand {
  142. S3C24X0_REG32 NFCONF;
  143. S3C24X0_REG32 NFCMD;
  144. S3C24X0_REG32 NFADDR;
  145. S3C24X0_REG32 NFDATA;
  146. S3C24X0_REG32 NFSTAT;
  147. S3C24X0_REG32 NFECC;
  148. };
  149. /* UART (see manual chapter 11) */
  150. struct s3c24x0_uart {
  151. S3C24X0_REG32 ULCON;
  152. S3C24X0_REG32 UCON;
  153. S3C24X0_REG32 UFCON;
  154. S3C24X0_REG32 UMCON;
  155. S3C24X0_REG32 UTRSTAT;
  156. S3C24X0_REG32 UERSTAT;
  157. S3C24X0_REG32 UFSTAT;
  158. S3C24X0_REG32 UMSTAT;
  159. #ifdef __BIG_ENDIAN
  160. S3C24X0_REG8 res1[3];
  161. S3C24X0_REG8 UTXH;
  162. S3C24X0_REG8 res2[3];
  163. S3C24X0_REG8 URXH;
  164. #else /* Little Endian */
  165. S3C24X0_REG8 UTXH;
  166. S3C24X0_REG8 res1[3];
  167. S3C24X0_REG8 URXH;
  168. S3C24X0_REG8 res2[3];
  169. #endif
  170. S3C24X0_REG32 UBRDIV;
  171. };
  172. /* PWM TIMER (see manual chapter 10) */
  173. struct s3c24x0_timer {
  174. S3C24X0_REG32 TCNTB;
  175. S3C24X0_REG32 TCMPB;
  176. S3C24X0_REG32 TCNTO;
  177. };
  178. struct s3c24x0_timers {
  179. S3C24X0_REG32 TCFG0;
  180. S3C24X0_REG32 TCFG1;
  181. S3C24X0_REG32 TCON;
  182. struct s3c24x0_timer ch[4];
  183. S3C24X0_REG32 TCNTB4;
  184. S3C24X0_REG32 TCNTO4;
  185. };
  186. /* USB DEVICE (see manual chapter 13) */
  187. struct s3c24x0_usb_dev_fifos {
  188. #ifdef __BIG_ENDIAN
  189. S3C24X0_REG8 res[3];
  190. S3C24X0_REG8 EP_FIFO_REG;
  191. #else /* little endian */
  192. S3C24X0_REG8 EP_FIFO_REG;
  193. S3C24X0_REG8 res[3];
  194. #endif
  195. };
  196. struct s3c24x0_usb_dev_dmas {
  197. #ifdef __BIG_ENDIAN
  198. S3C24X0_REG8 res1[3];
  199. S3C24X0_REG8 EP_DMA_CON;
  200. S3C24X0_REG8 res2[3];
  201. S3C24X0_REG8 EP_DMA_UNIT;
  202. S3C24X0_REG8 res3[3];
  203. S3C24X0_REG8 EP_DMA_FIFO;
  204. S3C24X0_REG8 res4[3];
  205. S3C24X0_REG8 EP_DMA_TTC_L;
  206. S3C24X0_REG8 res5[3];
  207. S3C24X0_REG8 EP_DMA_TTC_M;
  208. S3C24X0_REG8 res6[3];
  209. S3C24X0_REG8 EP_DMA_TTC_H;
  210. #else /* little endian */
  211. S3C24X0_REG8 EP_DMA_CON;
  212. S3C24X0_REG8 res1[3];
  213. S3C24X0_REG8 EP_DMA_UNIT;
  214. S3C24X0_REG8 res2[3];
  215. S3C24X0_REG8 EP_DMA_FIFO;
  216. S3C24X0_REG8 res3[3];
  217. S3C24X0_REG8 EP_DMA_TTC_L;
  218. S3C24X0_REG8 res4[3];
  219. S3C24X0_REG8 EP_DMA_TTC_M;
  220. S3C24X0_REG8 res5[3];
  221. S3C24X0_REG8 EP_DMA_TTC_H;
  222. S3C24X0_REG8 res6[3];
  223. #endif
  224. };
  225. struct s3c24x0_usb_device {
  226. #ifdef __BIG_ENDIAN
  227. S3C24X0_REG8 res1[3];
  228. S3C24X0_REG8 FUNC_ADDR_REG;
  229. S3C24X0_REG8 res2[3];
  230. S3C24X0_REG8 PWR_REG;
  231. S3C24X0_REG8 res3[3];
  232. S3C24X0_REG8 EP_INT_REG;
  233. S3C24X0_REG8 res4[15];
  234. S3C24X0_REG8 USB_INT_REG;
  235. S3C24X0_REG8 res5[3];
  236. S3C24X0_REG8 EP_INT_EN_REG;
  237. S3C24X0_REG8 res6[15];
  238. S3C24X0_REG8 USB_INT_EN_REG;
  239. S3C24X0_REG8 res7[3];
  240. S3C24X0_REG8 FRAME_NUM1_REG;
  241. S3C24X0_REG8 res8[3];
  242. S3C24X0_REG8 FRAME_NUM2_REG;
  243. S3C24X0_REG8 res9[3];
  244. S3C24X0_REG8 INDEX_REG;
  245. S3C24X0_REG8 res10[7];
  246. S3C24X0_REG8 MAXP_REG;
  247. S3C24X0_REG8 res11[3];
  248. S3C24X0_REG8 EP0_CSR_IN_CSR1_REG;
  249. S3C24X0_REG8 res12[3];
  250. S3C24X0_REG8 IN_CSR2_REG;
  251. S3C24X0_REG8 res13[7];
  252. S3C24X0_REG8 OUT_CSR1_REG;
  253. S3C24X0_REG8 res14[3];
  254. S3C24X0_REG8 OUT_CSR2_REG;
  255. S3C24X0_REG8 res15[3];
  256. S3C24X0_REG8 OUT_FIFO_CNT1_REG;
  257. S3C24X0_REG8 res16[3];
  258. S3C24X0_REG8 OUT_FIFO_CNT2_REG;
  259. #else /* little endian */
  260. S3C24X0_REG8 FUNC_ADDR_REG;
  261. S3C24X0_REG8 res1[3];
  262. S3C24X0_REG8 PWR_REG;
  263. S3C24X0_REG8 res2[3];
  264. S3C24X0_REG8 EP_INT_REG;
  265. S3C24X0_REG8 res3[15];
  266. S3C24X0_REG8 USB_INT_REG;
  267. S3C24X0_REG8 res4[3];
  268. S3C24X0_REG8 EP_INT_EN_REG;
  269. S3C24X0_REG8 res5[15];
  270. S3C24X0_REG8 USB_INT_EN_REG;
  271. S3C24X0_REG8 res6[3];
  272. S3C24X0_REG8 FRAME_NUM1_REG;
  273. S3C24X0_REG8 res7[3];
  274. S3C24X0_REG8 FRAME_NUM2_REG;
  275. S3C24X0_REG8 res8[3];
  276. S3C24X0_REG8 INDEX_REG;
  277. S3C24X0_REG8 res9[7];
  278. S3C24X0_REG8 MAXP_REG;
  279. S3C24X0_REG8 res10[7];
  280. S3C24X0_REG8 EP0_CSR_IN_CSR1_REG;
  281. S3C24X0_REG8 res11[3];
  282. S3C24X0_REG8 IN_CSR2_REG;
  283. S3C24X0_REG8 res12[3];
  284. S3C24X0_REG8 OUT_CSR1_REG;
  285. S3C24X0_REG8 res13[7];
  286. S3C24X0_REG8 OUT_CSR2_REG;
  287. S3C24X0_REG8 res14[3];
  288. S3C24X0_REG8 OUT_FIFO_CNT1_REG;
  289. S3C24X0_REG8 res15[3];
  290. S3C24X0_REG8 OUT_FIFO_CNT2_REG;
  291. S3C24X0_REG8 res16[3];
  292. #endif /* __BIG_ENDIAN */
  293. struct s3c24x0_usb_dev_fifos fifo[5];
  294. struct s3c24x0_usb_dev_dmas dma[5];
  295. };
  296. /* WATCH DOG TIMER (see manual chapter 18) */
  297. struct s3c24x0_watchdog {
  298. S3C24X0_REG32 WTCON;
  299. S3C24X0_REG32 WTDAT;
  300. S3C24X0_REG32 WTCNT;
  301. };
  302. /* IIC (see manual chapter 20) */
  303. struct s3c24x0_i2c {
  304. S3C24X0_REG32 IICCON;
  305. S3C24X0_REG32 IICSTAT;
  306. S3C24X0_REG32 IICADD;
  307. S3C24X0_REG32 IICDS;
  308. };
  309. /* IIS (see manual chapter 21) */
  310. struct s3c24x0_i2s {
  311. #ifdef __BIG_ENDIAN
  312. S3C24X0_REG16 res1;
  313. S3C24X0_REG16 IISCON;
  314. S3C24X0_REG16 res2;
  315. S3C24X0_REG16 IISMOD;
  316. S3C24X0_REG16 res3;
  317. S3C24X0_REG16 IISPSR;
  318. S3C24X0_REG16 res4;
  319. S3C24X0_REG16 IISFCON;
  320. S3C24X0_REG16 res5;
  321. S3C24X0_REG16 IISFIFO;
  322. #else /* little endian */
  323. S3C24X0_REG16 IISCON;
  324. S3C24X0_REG16 res1;
  325. S3C24X0_REG16 IISMOD;
  326. S3C24X0_REG16 res2;
  327. S3C24X0_REG16 IISPSR;
  328. S3C24X0_REG16 res3;
  329. S3C24X0_REG16 IISFCON;
  330. S3C24X0_REG16 res4;
  331. S3C24X0_REG16 IISFIFO;
  332. S3C24X0_REG16 res5;
  333. #endif
  334. };
  335. /* I/O PORT (see manual chapter 9) */
  336. struct s3c24x0_gpio {
  337. #ifdef CONFIG_S3C2400
  338. S3C24X0_REG32 PACON;
  339. S3C24X0_REG32 PADAT;
  340. S3C24X0_REG32 PBCON;
  341. S3C24X0_REG32 PBDAT;
  342. S3C24X0_REG32 PBUP;
  343. S3C24X0_REG32 PCCON;
  344. S3C24X0_REG32 PCDAT;
  345. S3C24X0_REG32 PCUP;
  346. S3C24X0_REG32 PDCON;
  347. S3C24X0_REG32 PDDAT;
  348. S3C24X0_REG32 PDUP;
  349. S3C24X0_REG32 PECON;
  350. S3C24X0_REG32 PEDAT;
  351. S3C24X0_REG32 PEUP;
  352. S3C24X0_REG32 PFCON;
  353. S3C24X0_REG32 PFDAT;
  354. S3C24X0_REG32 PFUP;
  355. S3C24X0_REG32 PGCON;
  356. S3C24X0_REG32 PGDAT;
  357. S3C24X0_REG32 PGUP;
  358. S3C24X0_REG32 OPENCR;
  359. S3C24X0_REG32 MISCCR;
  360. S3C24X0_REG32 EXTINT;
  361. #endif
  362. #ifdef CONFIG_S3C2410
  363. S3C24X0_REG32 GPACON;
  364. S3C24X0_REG32 GPADAT;
  365. S3C24X0_REG32 res1[2];
  366. S3C24X0_REG32 GPBCON;
  367. S3C24X0_REG32 GPBDAT;
  368. S3C24X0_REG32 GPBUP;
  369. S3C24X0_REG32 res2;
  370. S3C24X0_REG32 GPCCON;
  371. S3C24X0_REG32 GPCDAT;
  372. S3C24X0_REG32 GPCUP;
  373. S3C24X0_REG32 res3;
  374. S3C24X0_REG32 GPDCON;
  375. S3C24X0_REG32 GPDDAT;
  376. S3C24X0_REG32 GPDUP;
  377. S3C24X0_REG32 res4;
  378. S3C24X0_REG32 GPECON;
  379. S3C24X0_REG32 GPEDAT;
  380. S3C24X0_REG32 GPEUP;
  381. S3C24X0_REG32 res5;
  382. S3C24X0_REG32 GPFCON;
  383. S3C24X0_REG32 GPFDAT;
  384. S3C24X0_REG32 GPFUP;
  385. S3C24X0_REG32 res6;
  386. S3C24X0_REG32 GPGCON;
  387. S3C24X0_REG32 GPGDAT;
  388. S3C24X0_REG32 GPGUP;
  389. S3C24X0_REG32 res7;
  390. S3C24X0_REG32 GPHCON;
  391. S3C24X0_REG32 GPHDAT;
  392. S3C24X0_REG32 GPHUP;
  393. S3C24X0_REG32 res8;
  394. S3C24X0_REG32 MISCCR;
  395. S3C24X0_REG32 DCLKCON;
  396. S3C24X0_REG32 EXTINT0;
  397. S3C24X0_REG32 EXTINT1;
  398. S3C24X0_REG32 EXTINT2;
  399. S3C24X0_REG32 EINTFLT0;
  400. S3C24X0_REG32 EINTFLT1;
  401. S3C24X0_REG32 EINTFLT2;
  402. S3C24X0_REG32 EINTFLT3;
  403. S3C24X0_REG32 EINTMASK;
  404. S3C24X0_REG32 EINTPEND;
  405. S3C24X0_REG32 GSTATUS0;
  406. S3C24X0_REG32 GSTATUS1;
  407. S3C24X0_REG32 GSTATUS2;
  408. S3C24X0_REG32 GSTATUS3;
  409. S3C24X0_REG32 GSTATUS4;
  410. #endif
  411. };
  412. /* RTC (see manual chapter 17) */
  413. struct s3c24x0_rtc {
  414. #ifdef __BIG_ENDIAN
  415. S3C24X0_REG8 res1[67];
  416. S3C24X0_REG8 RTCCON;
  417. S3C24X0_REG8 res2[3];
  418. S3C24X0_REG8 TICNT;
  419. S3C24X0_REG8 res3[11];
  420. S3C24X0_REG8 RTCALM;
  421. S3C24X0_REG8 res4[3];
  422. S3C24X0_REG8 ALMSEC;
  423. S3C24X0_REG8 res5[3];
  424. S3C24X0_REG8 ALMMIN;
  425. S3C24X0_REG8 res6[3];
  426. S3C24X0_REG8 ALMHOUR;
  427. S3C24X0_REG8 res7[3];
  428. S3C24X0_REG8 ALMDATE;
  429. S3C24X0_REG8 res8[3];
  430. S3C24X0_REG8 ALMMON;
  431. S3C24X0_REG8 res9[3];
  432. S3C24X0_REG8 ALMYEAR;
  433. S3C24X0_REG8 res10[3];
  434. S3C24X0_REG8 RTCRST;
  435. S3C24X0_REG8 res11[3];
  436. S3C24X0_REG8 BCDSEC;
  437. S3C24X0_REG8 res12[3];
  438. S3C24X0_REG8 BCDMIN;
  439. S3C24X0_REG8 res13[3];
  440. S3C24X0_REG8 BCDHOUR;
  441. S3C24X0_REG8 res14[3];
  442. S3C24X0_REG8 BCDDATE;
  443. S3C24X0_REG8 res15[3];
  444. S3C24X0_REG8 BCDDAY;
  445. S3C24X0_REG8 res16[3];
  446. S3C24X0_REG8 BCDMON;
  447. S3C24X0_REG8 res17[3];
  448. S3C24X0_REG8 BCDYEAR;
  449. #else /* little endian */
  450. S3C24X0_REG8 res0[64];
  451. S3C24X0_REG8 RTCCON;
  452. S3C24X0_REG8 res1[3];
  453. S3C24X0_REG8 TICNT;
  454. S3C24X0_REG8 res2[11];
  455. S3C24X0_REG8 RTCALM;
  456. S3C24X0_REG8 res3[3];
  457. S3C24X0_REG8 ALMSEC;
  458. S3C24X0_REG8 res4[3];
  459. S3C24X0_REG8 ALMMIN;
  460. S3C24X0_REG8 res5[3];
  461. S3C24X0_REG8 ALMHOUR;
  462. S3C24X0_REG8 res6[3];
  463. S3C24X0_REG8 ALMDATE;
  464. S3C24X0_REG8 res7[3];
  465. S3C24X0_REG8 ALMMON;
  466. S3C24X0_REG8 res8[3];
  467. S3C24X0_REG8 ALMYEAR;
  468. S3C24X0_REG8 res9[3];
  469. S3C24X0_REG8 RTCRST;
  470. S3C24X0_REG8 res10[3];
  471. S3C24X0_REG8 BCDSEC;
  472. S3C24X0_REG8 res11[3];
  473. S3C24X0_REG8 BCDMIN;
  474. S3C24X0_REG8 res12[3];
  475. S3C24X0_REG8 BCDHOUR;
  476. S3C24X0_REG8 res13[3];
  477. S3C24X0_REG8 BCDDATE;
  478. S3C24X0_REG8 res14[3];
  479. S3C24X0_REG8 BCDDAY;
  480. S3C24X0_REG8 res15[3];
  481. S3C24X0_REG8 BCDMON;
  482. S3C24X0_REG8 res16[3];
  483. S3C24X0_REG8 BCDYEAR;
  484. S3C24X0_REG8 res17[3];
  485. #endif
  486. };
  487. /* ADC (see manual chapter 16) */
  488. struct s3c2400_adc {
  489. S3C24X0_REG32 ADCCON;
  490. S3C24X0_REG32 ADCDAT;
  491. };
  492. /* ADC (see manual chapter 16) */
  493. struct s3c2410_adc {
  494. S3C24X0_REG32 ADCCON;
  495. S3C24X0_REG32 ADCTSC;
  496. S3C24X0_REG32 ADCDLY;
  497. S3C24X0_REG32 ADCDAT0;
  498. S3C24X0_REG32 ADCDAT1;
  499. };
  500. /* SPI (see manual chapter 22) */
  501. struct s3c24x0_spi_channel {
  502. S3C24X0_REG8 SPCON;
  503. S3C24X0_REG8 res1[3];
  504. S3C24X0_REG8 SPSTA;
  505. S3C24X0_REG8 res2[3];
  506. S3C24X0_REG8 SPPIN;
  507. S3C24X0_REG8 res3[3];
  508. S3C24X0_REG8 SPPRE;
  509. S3C24X0_REG8 res4[3];
  510. S3C24X0_REG8 SPTDAT;
  511. S3C24X0_REG8 res5[3];
  512. S3C24X0_REG8 SPRDAT;
  513. S3C24X0_REG8 res6[3];
  514. S3C24X0_REG8 res7[16];
  515. };
  516. struct s3c24x0_spi {
  517. struct s3c24x0_spi_channel ch[S3C24X0_SPI_CHANNELS];
  518. };
  519. /* MMC INTERFACE (see S3C2400 manual chapter 19) */
  520. struct s3c2400_mmc {
  521. #ifdef __BIG_ENDIAN
  522. S3C24X0_REG8 res1[3];
  523. S3C24X0_REG8 MMCON;
  524. S3C24X0_REG8 res2[3];
  525. S3C24X0_REG8 MMCRR;
  526. S3C24X0_REG8 res3[3];
  527. S3C24X0_REG8 MMFCON;
  528. S3C24X0_REG8 res4[3];
  529. S3C24X0_REG8 MMSTA;
  530. S3C24X0_REG16 res5;
  531. S3C24X0_REG16 MMFSTA;
  532. S3C24X0_REG8 res6[3];
  533. S3C24X0_REG8 MMPRE;
  534. S3C24X0_REG16 res7;
  535. S3C24X0_REG16 MMLEN;
  536. S3C24X0_REG8 res8[3];
  537. S3C24X0_REG8 MMCR7;
  538. S3C24X0_REG32 MMRSP[4];
  539. S3C24X0_REG8 res9[3];
  540. S3C24X0_REG8 MMCMD0;
  541. S3C24X0_REG32 MMCMD1;
  542. S3C24X0_REG16 res10;
  543. S3C24X0_REG16 MMCR16;
  544. S3C24X0_REG8 res11[3];
  545. S3C24X0_REG8 MMDAT;
  546. #else
  547. S3C24X0_REG8 MMCON;
  548. S3C24X0_REG8 res1[3];
  549. S3C24X0_REG8 MMCRR;
  550. S3C24X0_REG8 res2[3];
  551. S3C24X0_REG8 MMFCON;
  552. S3C24X0_REG8 res3[3];
  553. S3C24X0_REG8 MMSTA;
  554. S3C24X0_REG8 res4[3];
  555. S3C24X0_REG16 MMFSTA;
  556. S3C24X0_REG16 res5;
  557. S3C24X0_REG8 MMPRE;
  558. S3C24X0_REG8 res6[3];
  559. S3C24X0_REG16 MMLEN;
  560. S3C24X0_REG16 res7;
  561. S3C24X0_REG8 MMCR7;
  562. S3C24X0_REG8 res8[3];
  563. S3C24X0_REG32 MMRSP[4];
  564. S3C24X0_REG8 MMCMD0;
  565. S3C24X0_REG8 res9[3];
  566. S3C24X0_REG32 MMCMD1;
  567. S3C24X0_REG16 MMCR16;
  568. S3C24X0_REG16 res10;
  569. S3C24X0_REG8 MMDAT;
  570. S3C24X0_REG8 res11[3];
  571. #endif
  572. };
  573. /* SD INTERFACE (see S3C2410 manual chapter 19) */
  574. struct s3c2410_sdi {
  575. S3C24X0_REG32 SDICON;
  576. S3C24X0_REG32 SDIPRE;
  577. S3C24X0_REG32 SDICARG;
  578. S3C24X0_REG32 SDICCON;
  579. S3C24X0_REG32 SDICSTA;
  580. S3C24X0_REG32 SDIRSP0;
  581. S3C24X0_REG32 SDIRSP1;
  582. S3C24X0_REG32 SDIRSP2;
  583. S3C24X0_REG32 SDIRSP3;
  584. S3C24X0_REG32 SDIDTIMER;
  585. S3C24X0_REG32 SDIBSIZE;
  586. S3C24X0_REG32 SDIDCON;
  587. S3C24X0_REG32 SDIDCNT;
  588. S3C24X0_REG32 SDIDSTA;
  589. S3C24X0_REG32 SDIFSTA;
  590. #ifdef __BIG_ENDIAN
  591. S3C24X0_REG8 res[3];
  592. S3C24X0_REG8 SDIDAT;
  593. #else
  594. S3C24X0_REG8 SDIDAT;
  595. S3C24X0_REG8 res[3];
  596. #endif
  597. S3C24X0_REG32 SDIIMSK;
  598. };
  599. #endif /*__S3C24X0_H__*/