s2440.h
上传用户:qiulin1960
上传日期:2013-10-16
资源大小:2844k
文件大小:41k
源码类别:

Windows CE

开发平台:

Windows_Unix

  1. //
  2. // Copyright (c) Microsoft Corporation.  All rights reserved.
  3. //
  4. //
  5. // Use of this source code is subject to the terms of the Microsoft end-user
  6. // license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
  7. // If you did not accept the terms of the EULA, you are not authorized to use
  8. // this source code. For a copy of the EULA, please see the LICENSE.RTF on your
  9. // install media.
  10. //
  11. /*++
  12. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  13. ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  14. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  15. PARTICULAR PURPOSE.
  16. Copyright (c) 2001. Samsung Electronics, co. ltd  All rights reserved.
  17. Module Name:  
  18. Abstract:
  19.     ARM920(S3C2440) definitions
  20. rev:
  21. 2002.5.20 : add define  CE_MAJOR_VER == 0x0004 for CE.Net    by pcj ( bestworld@samsung.com )
  22. 2002.5.16  : change OEM_CLOCK_FREQ value for Audio ( bestworld@samsung.com )
  23. 2002.4.3 : S3C2410 Support (SOC)
  24. 2002.1.29 : change Timer values
  25. 2002.1.29 : CE.NET port
  26. 2002.1.22 : Add USBD definitions (kwangyoon LEE, kwangyoon@samsung.com)
  27. Notes: 
  28. --*/
  29. #define ARM920
  30. #define USE_AFC 1
  31. // Board timer constants.
  32. //
  33. #define CLK400 1 // 1:400Mhz, 0:533MHz
  34. #if CLK400
  35. #define HCLKDIV          4
  36. #define PCLKDIV          8
  37. #define PRESCALER 24
  38. #define S2440FCLK (400000000)
  39. #else // CLK533
  40. #define HCLKDIV          4
  41. #define PCLKDIV          8 // P-clock (PCLK) divisor.
  42. #define S2440FCLK (532800000)
  43. #define PRESCALER 32
  44. #endif
  45. //#define S2410FCLK        (203 * 1000 * 1000) // 203MHz (FCLK).
  46. #define S2440HCLK (S2440FCLK / HCLKDIV) // PCLK.
  47. #define S2440PCLK        (S2440FCLK / PCLKDIV) // PCLK.
  48. #define S2440UCLK        S2440PCLK // 
  49. #define D1_2 0x0
  50. #define D1_4 0x1
  51. #define D1_8 0x2
  52. #define D1_16 0x3
  53. #define D2 2
  54. #define D4 4
  55. #define D8 8
  56. #define D16 16
  57. #define SYS_TIMER_DIVIDER D2 // D4
  58. #define OEM_CLOCK_FREQ      (S2440PCLK / (PRESCALER+1) / SYS_TIMER_DIVIDER)
  59. #define OEM_COUNT_1MS       (OEM_CLOCK_FREQ / 1000) // Timer count for 1ms.
  60. #define RESCHED_PERIOD      25 // Reschedule period in ms.
  61. #define RESCHED_INCREMENT   (RESCHED_PERIOD * OEM_COUNT_1MS) // Number of ticks per reschedule period.
  62. // Define LCD type of S3C2400X01
  63. #define STN8BPP 1
  64. #define TFT16BPP 2
  65. #define LCDTYPE TFT16BPP   // define LCD type as upper definition.
  66. #define TFT240_320 1
  67. #define TFT640_480 4
  68. #define LCD_TYPE TFT240_320
  69. //#define LCD_TYPE TFT640_480
  70. #define AUDIO_CODEC_CLOCK  384
  71. #if (S2440FCLK == 112800000)
  72. #define AUDIO_CODEC_CLOCK  256
  73. #else
  74. #define AUDIO_CODEC_CLOCK  384
  75. #endif
  76. // by pcj for ce.net power management.
  77. #define CE_MAJOR_VER  0x0004
  78. //
  79. // Define S3C2440 Special Registers 
  80. //
  81. #ifndef __2440X_H__
  82. #define __2440X_H__
  83. #define CS8900DBG_IOBASE (0xa7000300)
  84. #define CS8900DBG_MEMBASE (0xa6000000)
  85. #define CS8900DBG_IP ((165 << 0) | (213 << 8) | (206 << 16) | (199 << 24))
  86. //#define CS8900DBG_IP ((165 << 0) | (213 << 8) | (172 << 16) | (102 << 24))
  87. #define CS8900DBG_MASK ((255 << 0) | (255 << 8) | (255 << 16) | (0   << 24))
  88. #define CS8900DBG_MAC0 0x00
  89. #define CS8900DBG_MAC1 0x00
  90. #define CS8900DBG_MAC2 0xf0
  91. #define CS8900DBG_MAC3 0x51
  92. #define CS8900DBG_MAC4 0xff
  93. #define CS8900DBG_MAC5 0xc1
  94. #define CS8900DBG_USHORT(l, h) (l | (h << 8))
  95. //
  96. //  Registers : NAND Controller FWOOD 0801
  97. //
  98. #define NAND_BASE 0xB0E00000 // 0x4E000000
  99. #define NFC_BASE 0x90E00000 // 0x4E000000
  100. #define NFC_BASE_PHYSICAL 0x4E000000
  101. typedef struct {
  102. unsigned int  rNFCONF; // 0x00
  103. unsigned int  rNFCONT; // 0x04 new
  104. unsigned int  rNFCMMD; // 0x08 update
  105. unsigned int  rNFADDR; // 0x0c            
  106. unsigned int  rNFDATA; // 0x10
  107. unsigned int  rNFMECCD0; // 0x14
  108. unsigned int  rNFMECCD1; // 0x18
  109. unsigned int  rNFSECCD; // 0x1c
  110. unsigned int  rNFSTAT; // 0x20
  111. unsigned int  rNFESTAT0; // 0x24
  112. unsigned int  rNFESTAT1; // 0x28
  113. unsigned int  rNFMECC0; // 0x2c
  114. unsigned int  rNFMECC1; // 0x30
  115. unsigned int  rNFSECC; // 0x34
  116. unsigned int  rNFSBLK; // 0x38
  117. unsigned int  rNFEBLK; // 0x3c
  118. } NANDreg;    
  119. //
  120. // Memory Controller Register
  121. //
  122. #define MEMCTRL_BASE    0xB0800000 // 0x49000000
  123. typedef struct  {
  124. unsigned long  rBWSCON;    // 0
  125. unsigned long  rBANKCON0;  // 4
  126. unsigned long  rBANKCON1;  // 8
  127. unsigned long  rBANKCON2;  // c
  128. unsigned long  rBANKCON3;  // 10
  129. unsigned long  rBANKCON4;  // 1c
  130. unsigned long  rBANKCON5;  // 18
  131. unsigned long  rBANKCON6;  // 1c
  132. unsigned long  rBANKCON7;  // 20
  133. unsigned long  rREFRESH;   // 24
  134. unsigned long  rBANKSIZE;  // 28
  135. unsigned long  rMRSRB6;    // 2c
  136. unsigned long  rMRSRB7;     // 30
  137. }MEMreg;
  138. //
  139. // Clock & Power Management Special Register
  140. #define CLKPWR_BASE    0xB0C00000 // 0x4C000000
  141. typedef struct {
  142. unsigned long  rLOCKTIME;
  143. unsigned long  rMPLLCON;
  144. unsigned long  rUPLLCON;
  145. unsigned long  rCLKCON;
  146. unsigned long  rCLKSLOW;
  147. unsigned long  rCLKDIVN;
  148. unsigned long  rCAMDIVN;
  149. }CLKPWRreg;
  150. // Make sure this matches entry in config.bib
  151. // These buffs are now offset via a constant
  152. #define DMA_BUFFER_BASE 0xAC000000
  153. #define DMA_PHYSICAL_BASE 0x30000000  // S3C2440X01
  154. #define AUDIO_DMA_BUFFER_BASE (DMA_BUFFER_BASE + 0x00002000)
  155. #define AUDIO_DMA_BUFFER_PHYS (DMA_PHYSICAL_BASE + 0x00002000)
  156. #define SDI_DMA_BUFFER_BASE (DMA_BUFFER_BASE + 0x00028000)
  157. #define SDI_DMA_BUFFER_PHYS (DMA_PHYSICAL_BASE + 0x00028000)
  158. #define FRAMEBUF_BASE (DMA_BUFFER_BASE + 0x001d0000)
  159. #define FRAMEBUF_DMA_BASE (DMA_PHYSICAL_BASE + 0x001d0000)
  160. //
  161. // DMA Register
  162. //
  163. #define DMA_BASE    0xB0B00000 // 0x4B0000000
  164. typedef struct {
  165.         unsigned int    rDISRC0;        // 00
  166.         unsigned int rDISRCC0; // 04
  167.         unsigned int    rDIDST0;        // 08
  168.         unsigned int  rDIDSTC0; // 0C
  169.         unsigned int    rDCON0;         // 10
  170.         unsigned int    rDSTAT0;        // 14
  171.         unsigned int    rDCSRC0;        // 18
  172.         unsigned int    rDCDST0;        // 1C
  173.         unsigned int    rDMASKTRIG0;    // 20
  174.         unsigned int rPAD1[7]; // 24 - 3C
  175.         unsigned int    rDISRC1;        // 40
  176.         unsigned int rDISRCC1; // 44
  177.         unsigned int    rDIDST1;        // 48
  178.         unsigned int  rDIDSTC1; // 4C
  179.         unsigned int    rDCON1;         // 50
  180.         unsigned int    rDSTAT1;        // 54
  181.         unsigned int    rDCSRC1;        // 58
  182.         unsigned int    rDCDST1;        // 5C
  183.         unsigned int    rDMASKTRIG1;    // 60
  184.         unsigned int rPAD2[7]; // 64 - 7C
  185.         unsigned int    rDISRC2;        // 80
  186.         unsigned int rDISRCC2; // 84
  187.         unsigned int    rDIDST2;        // 88
  188.         unsigned int  rDIDSTC2; // 8C
  189.         unsigned int    rDCON2;         // 90
  190.         unsigned int    rDSTAT2;        // 94
  191.         unsigned int    rDCSRC2;        // 98
  192.         unsigned int    rDCDST2;        // 9C
  193.         unsigned int    rDMASKTRIG2;    // A0
  194.         unsigned int rPAD3[7]; // A4 - BC
  195.         unsigned int    rDISRC3;        // C0
  196.         unsigned int rDISRCC3; // C4
  197.         unsigned int    rDIDST3;        // C8
  198.         unsigned int  rDIDSTC3; // CC
  199.         unsigned int    rDCON3;         // D0
  200.         unsigned int    rDSTAT3;        // D4
  201.         unsigned int    rDCSRC3;        // D8
  202.         unsigned int    rDCDST3;        // DC
  203.         unsigned int    rDMASKTRIG3;    // E0
  204.  }DMAreg;
  205. // 
  206. // Register : Camera Interface
  207. //
  208. #define CAM_BASE      0xB0F00000 // 0x4F000000
  209. // 
  210. // Register : Camera Interface
  211. //
  212. #define CAM_BASE      0xB0F00000 //0x90F00000 // 0x4F000000
  213. typedef struct {
  214. unsigned int rCISRCFMT; // 00
  215. unsigned int rCIWDOFST; // 04
  216. unsigned int rCIGCTRL; // 08
  217. unsigned int rPAD1; // 0c
  218. unsigned int rPAD2; // 10
  219. unsigned int rPAD3; // 14
  220. unsigned int rCICOYSA1; // 18
  221. unsigned int rCICOYSA2; // 1c
  222. unsigned int rCICOYSA3; // 20
  223. unsigned int rCICOYSA4; // 24
  224. unsigned int rCICOCBSA1; // 28
  225. unsigned int rCICOCBSA2; // 2c
  226. unsigned int rCICOCBSA3; // 30
  227. unsigned int rCICOCBSA4; // 34
  228. unsigned int rCICOCRSA1; // 38
  229. unsigned int rCICOCRSA2; // 3c
  230. unsigned int rCICOCRSA3; // 40
  231. unsigned int rCICOCRSA4; // 44
  232. unsigned int rCICOTRGFMT; // 48
  233. unsigned int rCICOCTRL; // 4c
  234. unsigned int rCICOSCPRERATIO; // 50
  235. unsigned int rCICOSCPREDST; // 54
  236. unsigned int rCICOSCCTRL; // 58
  237. unsigned int rCICOTAREA; // 5c
  238. unsigned int rPAD4; // 60
  239. unsigned int rCICOSTATUS; // 64
  240. unsigned int rPAD5; // 68
  241. unsigned int rCIPRCLRSA1; // 6c
  242. unsigned int rCIPRCLRSA2; // 70
  243. unsigned int rCIPRCLRSA3; // 74
  244. unsigned int rCIPRCLRSA4; // 78
  245. unsigned int rCIPRTRGFMT; // 7c
  246. unsigned int rCIPRCTRL; // 80
  247. unsigned int rCIPRSCPRERATIO; // 84
  248. unsigned int rCIPRSCPREDST; // 88
  249. unsigned int rCIPRSCCTRL; // 8c
  250. unsigned int rCIPRTAREA; // 90
  251. unsigned int rPAD6; // 94
  252. unsigned int rCIPRSTATUS; // 98
  253. unsigned int rPAD7; // 9c
  254. unsigned int rCIIMGCPT; // a0
  255. } CAMreg;
  256. /*
  257. typedef struct  {
  258. unsigned int rASIZE;
  259. unsigned int rSTAY1;
  260. unsigned int rSTAY2;
  261. unsigned int rSTAY3;
  262. unsigned int rSTAY4;
  263. unsigned int rAYBURST;
  264. unsigned int rACBBURST;
  265. unsigned int rACRBURST;
  266. unsigned int rBSIZE;
  267. unsigned int rSTBY1;
  268. unsigned int rSTBY2;
  269. unsigned int rSTBY3;
  270. unsigned int rSTBY4;
  271. unsigned int rBYBURST;
  272. unsigned int rBCBBURST;
  273. unsigned int rBCRBURST;
  274. unsigned int rADISTWIDTH;
  275. unsigned int rBDISTWIDTH;
  276. unsigned int rTmp; // 0x4F000048
  277. unsigned int rYRATIO;
  278. unsigned int rCRATIO;
  279. unsigned int rYORIGINAL;
  280. unsigned int rTmp1; // 0x4F000058
  281. unsigned int rCORIGINAL; // 0x4F00005C
  282. unsigned int rTp1; // 0x4F000060
  283. unsigned int rTp2; // 0x4F000064
  284. unsigned int rTp3; // 0x4F000068
  285. unsigned int rTp4; // 0x4F00006C
  286. unsigned int rTp5; // 0x4F000070
  287. unsigned int rSTACB1; // 0x4F000074
  288. unsigned int rSTACB2;
  289. unsigned int rSTACB3;
  290. unsigned int rSTACB4;
  291. unsigned int rSTACR1;
  292. unsigned int rSTACR2;
  293. unsigned int rSTACR3;
  294. unsigned int rSTACR4;
  295. unsigned int rTmp2; // 0x4F000094
  296. unsigned int rTmp3; // 0x4F000098
  297. unsigned int rSTBCB1;
  298. unsigned int rSTBCB2;
  299. unsigned int rSTBCB3;
  300. unsigned int rSTBCB4;
  301. unsigned int rSTBCR1;
  302. unsigned int rSTBCR2;
  303. unsigned int rSTBCR3;
  304. unsigned int rSTBCR4;
  305. unsigned int rCTRL_C;
  306.  }CAMreg;        
  307. */
  308. // camera
  309. // read only register   
  310. typedef struct  {
  311. unsigned int rRDSTAT; // 0x4F000000
  312. unsigned int rTmp4; // 0x4F000004
  313. unsigned int rTmp5; // 0x4F000008
  314. unsigned int rTmp6; // 0x4F00000C
  315. unsigned int rTmp7; // 0x4F000010
  316. unsigned int rRDSTAY; // 0x4F000014
  317. unsigned int rRDSTACB;
  318. unsigned int rRDSTACR;
  319. unsigned int rRDSTACB1;
  320. unsigned int rRDSTACR1;
  321. unsigned int rRDSTBY1;
  322. unsigned int rRDSTBY2;
  323. unsigned int rRDSTBY3;
  324. unsigned int rRDSTBY4;
  325. unsigned int rRDSTBY;
  326. unsigned int rRDSTBCB;
  327. unsigned int rRDSTBCR; // 0x4F000040
  328. unsigned int rRDSTBCB1;
  329. unsigned int rRDSTBCR1;
  330. unsigned int rRDADISTWIDTH;
  331. unsigned int rRDBDISTWIDTH;
  332.  }CAM_Rreg;
  333. //
  334. // Registers : I/O port
  335. //
  336. #define IOP_BASE      0xB1600000 // 0x56000000
  337. typedef struct  {
  338. unsigned int  rGPACON; // 00
  339. unsigned int  rGPADAT;
  340. unsigned int  rPAD1[2];
  341.     
  342. unsigned int  rGPBCON; // 10
  343. unsigned int  rGPBDAT;
  344. unsigned int  rGPBUP;
  345. unsigned int  rPAD2;
  346.     
  347. unsigned int  rGPCCON; // 20
  348. unsigned int  rGPCDAT;
  349. unsigned int  rGPCUP;
  350. unsigned int  rPAD3;
  351.     
  352. unsigned int  rGPDCON; // 30
  353. unsigned int  rGPDDAT;
  354.     unsigned int  rGPDUP; 
  355.     unsigned int  rPAD4;
  356.     
  357. unsigned int  rGPECON; // 40
  358. unsigned int  rGPEDAT;
  359. unsigned int  rGPEUP;
  360. unsigned int  rPAD5;
  361.     
  362. unsigned int  rGPFCON; // 50
  363. unsigned int  rGPFDAT;
  364. unsigned int  rGPFUP; 
  365. unsigned int  rPAD6;
  366.     
  367. unsigned int  rGPGCON; // 60
  368. unsigned int  rGPGDAT;
  369. unsigned int  rGPGUP; 
  370. unsigned int  rPAD7;
  371.     
  372. unsigned int  rGPHCON; // 70
  373. unsigned int  rGPHDAT;
  374. unsigned int  rGPHUP; 
  375. unsigned int  rPAD8;
  376.     
  377. unsigned int  rMISCCR; // 80
  378. unsigned int  rDCKCON;
  379. unsigned int  rEXTINT0;
  380. unsigned int  rEXTINT1;
  381. unsigned int  rEXTINT2; // 90
  382. unsigned int  rEINTFLT0;
  383. unsigned int  rEINTFLT1;
  384. unsigned int  rEINTFLT2;
  385. unsigned int  rEINTFLT3; // A0
  386. unsigned int  rEINTMASK;
  387. unsigned int  rEINTPEND;
  388. unsigned int  rGSTATUS0; // AC
  389. unsigned int  rGSTATUS1; // B0
  390. unsigned int  rGSTATUS2; // B4 ;;; SHL
  391. unsigned int  rGSTATUS3; // B8
  392. unsigned int  rGSTATUS4; // BC
  393. unsigned int  rFLTOUT; // C0
  394. unsigned int  rDSC0;
  395. unsigned int  rDSC1;
  396. unsigned int  rMSLCON;
  397. unsigned int  rGPJCON; // D0
  398. unsigned int  rGPJDAT;
  399. unsigned int  rGPJUP;
  400. unsigned int  rPAD9;
  401. }IOPreg;  
  402.  
  403. //
  404. // Registers : PWM
  405. //
  406. #define PWM_BASE      0xB1100000 // 0x51000000
  407. typedef struct  {
  408. unsigned int  rTCFG0;
  409. unsigned int  rTCFG1;
  410. unsigned int  rTCON;
  411. unsigned int  rTCNTB0;
  412. unsigned int  rTCMPB0;
  413. unsigned int  rTCNTO0;
  414. unsigned int  rTCNTB1;
  415. unsigned int  rTCMPB1;
  416. unsigned int  rTCNTO1;
  417. unsigned int  rTCNTB2;
  418. unsigned int  rTCMPB2;
  419. unsigned int  rTCNTO2;
  420. unsigned int  rTCNTB3;
  421. unsigned int  rTCMPB3;
  422. unsigned int  rTCNTO3;
  423. unsigned int  rTCNTB4;
  424. unsigned int  rTCNTO4;
  425. }PWMreg ;
  426. //
  427. // Registers : UART
  428. //
  429. #define UART0_BASE      0xB1000000 // 0x50000000
  430. #define UART1_BASE      0xB1004000
  431. #define UART2_BASE      0xB1008000
  432. typedef struct  {
  433. unsigned int  rULCON;
  434. unsigned int  rUCON;
  435. unsigned int  rUFCON;
  436. unsigned int  rUMCON;
  437. unsigned int  rUTRSTAT;
  438. unsigned int  rUERSTAT;
  439. unsigned int  rUFSTAT;
  440. unsigned int  rUMSTAT;
  441. unsigned int  rUTXH;
  442. unsigned int  rURXH;
  443. unsigned int  rUBRDIV;
  444. }UART0reg, UART1reg, UART2reg, UARTreg, S2440_UART_REG, *PS2440_UART_REG;
  445. // 2440 USB DEVICE Function (Written by Seung-han, Lim)
  446. // Little-Endian
  447. struct udcFARBits { // function address reg
  448. BYTE func_addr :7; // function_address
  449. BYTE addr_up :1; // addr_update
  450. };
  451. struct PMRBits { // power management reg
  452. BYTE sus_en :1; // suspend_en
  453. BYTE sus_mo :1; // suspend_mode
  454. BYTE muc_res :1; // mcu_resume
  455. BYTE usb_re :1; // usb_reset
  456. BYTE rsvd1 :3;
  457. BYTE iso_up :1; // iso_update
  458. };
  459. struct EIRBits { // ep interrupt reg
  460. BYTE ep0_int :1; // ep0_interrupt
  461. BYTE ep1_int :1; // ep1_interrupt
  462. BYTE ep2_int :1; // ep2_interrupt
  463. BYTE ep3_int :1; // ep3_interrupt
  464. BYTE ep4_int :1; // ep4_interrupt
  465. BYTE rsvd0 :3;
  466. };
  467. struct UIRBits { // usb interrupt reg
  468. BYTE sus_int :1; // suspend inaterrupt
  469. BYTE resume_int :1; // resume interrupt
  470. BYTE reset_int :1; // reset interrupt
  471. BYTE rsvd0 :5;
  472. };
  473. struct EIERBits { // interrupt mask reg
  474. BYTE ep0_int_en :1; // ep1_int_reg
  475. BYTE ep1_int_en :1; // ep1_int_reg
  476. BYTE ep2_int_en :1; // ep2_int_reg
  477. BYTE ep3_int_en :1; // ep3_int_reg
  478. BYTE ep4_int_en :1; // ep4_int_reg
  479. BYTE rsvd0 :3;
  480. };
  481. struct UIERBits {
  482. BYTE sus_int_en :1; // suspend_int_en
  483. BYTE rsvd1 :1;
  484. BYTE reset_int_en :1; // reset_enable_reg
  485. BYTE rsvd0 :5;
  486. };
  487. struct FNR1Bits { // frame number1 register
  488. BYTE fr_n1 :8; // frame_num1_reg
  489. };
  490. struct FNR2Bits { // frame number2 register
  491. BYTE fr_n2 :8; // frame_num2_reg
  492. };
  493. struct INDEXBits { // index register
  494. BYTE index :8; // index_reg
  495. };
  496. struct EP0ICSR1Bits // EP0 & ICSR1 shared
  497. {
  498. BYTE opr_ipr :1;
  499. BYTE ipr_ :1;
  500. BYTE sts_ur :1;
  501. BYTE de_ff :1;
  502. BYTE se_sds :1;
  503. BYTE sds_sts :1;
  504. BYTE sopr_cdt :1;
  505. BYTE sse_ :1;
  506. };
  507. struct ICSR2Bits { // in csr2 areg
  508. BYTE rsvd1 :4;
  509. BYTE in_dma_int_en :1; // in_dma_int_en
  510. BYTE mode_in :1; // mode_in
  511. BYTE iso :1;  // iso/bulk mode
  512. BYTE auto_set :1; // auto_set
  513. };
  514. struct OCSR1Bits { // out csr1 reg
  515. BYTE out_pkt_rdy :1; // out packet reday
  516. BYTE rsvd1 :1;
  517. BYTE ov_run :1; // over_run
  518. BYTE data_error :1; // data_error
  519. BYTE fifo_flush :1; // fifo_flush
  520. BYTE send_stall :1; // send_stall
  521. BYTE sent_stall :1;  // sent_stall
  522. BYTE clr_data_tog :1; // clear data toggle
  523. };
  524. struct OCSR2Bits { // out csr2 reg
  525. BYTE rsvd1 :5;
  526. BYTE out_dma_int_en :1; // out_dma_int_en
  527. BYTE iso :1; // iso/bulk mode
  528. BYTE auto_clr :1; // auto_clr
  529. };
  530. struct EP0FBits { // ep0 fifo reg
  531. BYTE fifo_data :8; // fifo data
  532. };
  533. struct EP1FBits { // ep0 fifo reg
  534. BYTE fifo_data :8; // fifo data
  535. };
  536. struct EP2FBits { // ep0 fifo reg
  537. BYTE fifo_data :8; // fifo data
  538. };
  539. struct EP3FBits { // ep0 fifo reg
  540. BYTE fifo_data :8; // fifo data
  541. };
  542. struct EP4FBits { // ep0 fifo reg
  543. BYTE fifo_data :8; // fifo data
  544. };
  545. struct MAXPBits {
  546. BYTE maxp :4; // max packet reg
  547. BYTE rsvd0 :4;
  548. };
  549. struct OFCR1Bits { // out_fifo_cnt1_reg
  550. BYTE out_cnt_low :8; // out_cnt_low
  551. };
  552. struct OFCR2Bits { // out_fifo_cnt2_reg
  553. BYTE out_cnt_high :8; // out_cnt_high
  554. };
  555. struct EP1DCBits { // ep1 dma interface control
  556. BYTE dma_mo_en :1; // dma_mode_en
  557. BYTE in_dma_run :1; // in_dma_run
  558. BYTE orb_odr :1; // out_run_ob/out_dma_run
  559. BYTE demand_mo :1; // demand_mode
  560. BYTE state :3; // state
  561. BYTE in_run_ob :1; // in_run_ob
  562. };
  563. struct EP2DCBits { // ep2 dma interface control
  564. BYTE dma_mo_en :1; // dma_mode_en
  565. BYTE in_dma_run :1; // in_dma_run
  566. BYTE orb_odr :1; // out_run_ob/out_dma_run
  567. BYTE demand_mo :1; // demand_mode
  568. BYTE state :3; // state
  569. BYTE in_run_ob :1; // in_run_ob
  570. };
  571. struct EP3DCBits { // ep3 dma interface control
  572. BYTE dma_mo_en :1; // dma_mode_en
  573. BYTE in_dma_run :1; // in_dma_run
  574. BYTE orb_odr :1; // out_run_ob/out_dma_run
  575. BYTE demand_mo :1; // demand_mode
  576. BYTE state :3; // state
  577. BYTE in_run_ob :1; // in_run_ob
  578. };
  579. struct EP4DCBits { // ep4 dma interface control
  580. BYTE dma_mo_en :1; // dma_mode_en
  581. BYTE in_dma_run :1; // in_dma_run
  582. BYTE orb_odr :1; // out_run_ob/out_dma_run
  583. BYTE demand_mo :1; // demand_mode
  584. BYTE state :3; // state
  585. BYTE in_run_ob :1; // in_run_ob
  586. };
  587. struct EP1DUBits {
  588. BYTE ep1_unit_cnt :8; // ep0_unit_cnt
  589. };
  590. struct EP2DUBits {
  591. BYTE ep2_unit_cnt :8; // ep0_unit_cnt
  592. };
  593. struct EP3DUBits {
  594. BYTE ep3_unit_cnt :8; // ep0_unit_cnt
  595. };
  596. struct EP4DUBits {
  597. BYTE ep4_unit_cnt :8; // ep0_unit_cnt
  598. };
  599. struct EP1DFBits {
  600. BYTE ep1_fifo_cnt :8;
  601. };
  602. struct EP2DFBits {
  603. BYTE ep2_fifo_cnt :8;
  604. };
  605. struct EP3DFBits {
  606. BYTE ep3_fifo_cnt :8;
  607. };
  608. struct EP4DFBits {
  609. BYTE ep4_fifo_cnt :8;
  610. };
  611. struct EP1DTLBits {
  612. BYTE ep1_ttl_l :8;
  613. };
  614. struct EP1DTMBits {
  615. BYTE ep1_ttl_m :8;
  616. };
  617. struct EP1DTHBits {
  618. BYTE ep1_ttl_h :8;
  619. };
  620. struct EP2DTLBits {
  621. BYTE ep2_ttl_l :8;
  622. };
  623. struct EP2DTMBits {
  624. BYTE ep2_ttl_m :8;
  625. };
  626. struct EP2DTHBits {
  627. BYTE ep2_ttl_h :8;
  628. };
  629. struct EP3DTLBits {
  630. BYTE ep3_ttl_l :8;
  631. };
  632. struct EP3DTMBits {
  633. BYTE ep3_ttl_m :8;
  634. };
  635. struct EP3DTHBits {
  636. BYTE ep3_ttl_h :8;
  637. };
  638. struct EP4DTLBits {
  639. BYTE ep4_ttl_l :8;
  640. };
  641. struct EP4DTMBits {
  642. BYTE ep4_ttl_m :8;
  643. };
  644. struct EP4DTHBits {
  645. BYTE ep4_ttl_h :8;
  646. };
  647. struct udcreg { // PHY BASE : 0x52000140(Little Endian)
  648. struct udcFARBits udcFAR; // 0x140
  649. BYTE rsvd0; // 0x141
  650. BYTE rsvd1; // 0x142
  651. BYTE rsvd2; // 0x143
  652. struct PMRBits PMR; // 0x144
  653. BYTE rsvd3; // 0x145
  654. BYTE rsvd4; // 0x146
  655. BYTE rsvd5; // 0x147
  656. struct EIRBits EIR; // 0x148
  657. BYTE rsvd6; // 0x149
  658. BYTE rsvd7; // 0x14a
  659. BYTE rsvd8; // 0x14b
  660. BYTE rsvd9; // 0x14C
  661. BYTE rsvd10; // 0x14d
  662. BYTE rsvd11; // 0x14e
  663. BYTE rsvd12; // 0x14f
  664. BYTE rsvd13; // 0x150
  665. BYTE rsvd14; // 0x151
  666. BYTE rsvd15; // 0x152
  667. BYTE rsvd16; // 0x153
  668. BYTE rsvd17; // 0x154
  669. BYTE rsvd18; // 0x155
  670. BYTE rsvd19; // 0x156
  671. BYTE rsvd20; // 0x157
  672. struct UIRBits UIR; // 0x158
  673. BYTE rsvd21; // 0x159
  674. BYTE rsvd22; // 0x15a
  675. BYTE rsvd23; // 0x15b
  676. struct EIERBits EIER; // 0x15C
  677. BYTE rsvd24; // 0x15d
  678. BYTE rsvd25; // 0x15e
  679. BYTE rsvd26; // 0x15f
  680. BYTE rsvd27; // 0x160
  681. BYTE rsvd28; // 0x161
  682. BYTE rsvd29; // 0x162
  683. BYTE rsvd30; // 0x163
  684. BYTE rsvd31; // 0x164
  685. BYTE rsvd32; // 0x165
  686. BYTE rsvd33; // 0x166
  687. BYTE rsvd34; // 0x167
  688. BYTE rsvd35; // 0x168
  689. BYTE rsvd36; // 0x169
  690. BYTE rsvd37; // 0x16a
  691. BYTE rsvd38; // 0x16b
  692. struct UIERBits UIER; // 0x16c
  693. BYTE rsvd39; // 0x16d
  694. BYTE rsvd40; // 0x16e
  695. BYTE rsvd41; // 0x16f
  696. struct FNR1Bits FNR1; // 0x170
  697. BYTE rsvd42; // 0x171
  698. BYTE rsvd43; // 0x172
  699. BYTE rsvd44; // 0x173
  700. struct FNR2Bits FNR2; // 0x174
  701. BYTE rsvd45; // 0x175
  702. BYTE rsvd46; // 0x176
  703. BYTE rsvd47; // 0x177
  704. struct INDEXBits INDEX; // 0x178
  705. BYTE rsvd48; // 0x179
  706. BYTE rsvd49; // 0x17a
  707. BYTE rsvd50; // 0x17b
  708. BYTE rsvd51; // 0x17C
  709. BYTE rsvd52; // 0x17d
  710. BYTE rsvd53; // 0x17e
  711. BYTE rsvd54; // 0x17f
  712. struct MAXPBits MAXP; // 0x180
  713. BYTE rsvd56; // 0x181
  714. BYTE rsvd57; // 0x182
  715. BYTE rsvd58; // 0x183
  716. struct EP0ICSR1Bits EP0ICSR1; // 0x184
  717. // struct ICSR1Bits ICSR1; // 0x184
  718. // struct EP0CSRBits EP0CSR; // mapped to the in_csr1 reg 
  719. BYTE rsvd59; // 0x185
  720. BYTE rsvd60; // 0x186
  721. BYTE rsvd61; // 0x187
  722. struct ICSR2Bits ICSR2; // 0x188
  723. BYTE rsvd63; // 0x189
  724. BYTE rsvd64; // 0x18a
  725. BYTE rsvd65; // 0x18b
  726. BYTE rsvd55; // 0x180
  727. BYTE rsvd66; // 0x18d
  728. BYTE rsvd67; // 0x18e
  729. BYTE rsvd68; // 0x18f
  730. struct OCSR1Bits OCSR1; // 0x190
  731. BYTE rsvd69; // 0x191
  732. BYTE rsvd70; // 0x192
  733. BYTE rsvd71; // 0x193
  734. struct OCSR2Bits OCSR2; // 0x194
  735. BYTE rsvd73; // 0x195
  736. BYTE rsvd74; // 0x196
  737. BYTE rsvd75; // 0x197
  738. struct OFCR1Bits OFCR1; // 0x198
  739. BYTE rsvd76; // 0x199
  740. BYTE rsvd77; // 0x19a
  741. BYTE rsvd78; // 0x19b
  742. struct OFCR2Bits OFCR2; // 0x19C
  743. BYTE rsvd79; // 0x19d
  744. BYTE rsvd80; // 0x19e
  745. BYTE rsvd81; // 0x19f
  746. BYTE rsvd82; // 0x1A0
  747. BYTE rsvd83; // 0x1a1
  748. BYTE rsvd84; // 0x1a2
  749. BYTE rsvd85; // 0x1a3
  750. BYTE rsvd86; // 0x1A4
  751. BYTE rsvd87; // 0x1a5
  752. BYTE rsvd88; // 0x1a6
  753. BYTE rsvd89; // 0x1a7
  754. BYTE rsvd90; // 0x1A8
  755. BYTE rsvd91; // 0x1a9
  756. BYTE rsvd92; // 0x1aa
  757. BYTE rsvd93; // 0x1ab
  758. BYTE rsvd94; // 0x1AC
  759. BYTE rsvd95; // 0x1ad
  760. BYTE rsvd96; // 0x1ae
  761. BYTE rsvd97; // 0x1af
  762. BYTE rsvd98; // 0x1B0
  763. BYTE rsvd99; // 0x1B1
  764. BYTE rsvd100; // 0x1B2
  765. BYTE rsvd101; // 0x1B3
  766. BYTE rsvd102; // 0x1B4
  767. BYTE rsvd103; // 0x1B5
  768. BYTE rsvd104; // 0x1B6
  769. BYTE rsvd105; // 0x1B7
  770. BYTE rsvd106; // 0x1B8
  771. BYTE rsvd107; // 0x1B9
  772. BYTE rsvd108; // 0x1Ba
  773. BYTE rsvd109; // 0x1Bb
  774. BYTE rsvd110; // 0x1BC
  775. BYTE rsvd111; // 0x1Bd
  776. BYTE rsvd112; // 0x1Be
  777. BYTE rsvd113; // 0x1Bf
  778. struct EP0FBits EP0F; // 0x1C0
  779. BYTE rsvd114; // 0x1c1
  780. BYTE rsvd115; // 0x1c2
  781. BYTE rsvd116; // 0x1c3
  782. struct EP1FBits EP1F; // 0x1C4
  783. BYTE rsvd117; // 0x1c5
  784. BYTE rsvd118; // 0x1c6
  785. BYTE rsvd119; // 0x1c7
  786. struct EP2FBits EP2F; // 0x1C8
  787. BYTE rsvd120; // 0x1c9
  788. BYTE rsvd121; // 0x1ca
  789. BYTE rsvd122; // 0x1cb
  790. struct EP3FBits EP3F; // 0x1CC
  791. BYTE rsvd123; // 0x1cd
  792. BYTE rsvd124; // 0x1ce
  793. BYTE rsvd125; // 0x1cf
  794. struct EP4FBits EP4F; // 0x1D0
  795. BYTE rsvd126; // 0x1d1
  796. BYTE rsvd127; // 0x1d2
  797. BYTE rsvd128; // 0x1d3
  798. BYTE rsvd169; // 0x1D4
  799. BYTE rsvd170; // 0x1d5
  800. BYTE rsvd171; // 0x1d6
  801. BYTE rsvd172; // 0x1d7
  802. BYTE rsvd173; // 0x1D8
  803. BYTE rsvd174; // 0x1d9
  804. BYTE rsvd175; // 0x1da
  805. BYTE rsvd176; // 0x1db
  806. BYTE rsvd177; // 0x1DC
  807. BYTE rsvd178; // 0x1dd
  808. BYTE rsvd179; // 0x1de
  809. BYTE rsvd180; // 0x1df
  810. BYTE rsvd1e0; // 0x1e0
  811. BYTE rsvd1e1; // 0x1e1
  812. BYTE rsvd1e2; // 0x1e2
  813. BYTE rsvd1e3; // 0x1e3
  814. BYTE rsvd1e4; // 0x1e4
  815. BYTE rsvd1e5; // 0x1e5
  816. BYTE rsvd1e6; // 0x1e6
  817. BYTE rsvd1e7; // 0x1e7
  818. BYTE rsvd1e8; // 0x1e8
  819. BYTE rsvd1e9; // 0x1e9
  820. BYTE rsvd1ea; // 0x1ea
  821. BYTE rsvd1eb; // 0x1eb
  822. BYTE rsvd1ec; // 0x1ec
  823. BYTE rsvd1ed; // 0x1ed
  824. BYTE rsvd1ee; // 0x1ee
  825. BYTE rsvd1ef; // 0x1ef
  826. BYTE rsvd181; // 0x1F0
  827. BYTE rsvd182; // 0x1F1
  828. BYTE rsvd183; // 0x1F2
  829. BYTE rsvd184; // 0x1F3
  830. BYTE rsvd185; // 0x1F4
  831. BYTE rsvd186; // 0x1F5
  832. BYTE rsvd187; // 0x1F6
  833. BYTE rsvd188; // 0x1F7
  834. BYTE rsvd189; // 0x1F8
  835. BYTE rsvd190; // 0x1F9
  836. BYTE rsvd191; // 0x1Fa
  837. BYTE rsvd192; // 0x1Fb
  838. BYTE rsvd193; // 0x1FC
  839. BYTE rsvd194; // 0x1Fd
  840. BYTE rsvd195; // 0x1Fe
  841. BYTE rsvd196; // 0x1Ff
  842. struct EP1DCBits EP1DC; // 0x200
  843. BYTE rsvd197; // 0x201
  844. BYTE rsvd198; // 0x202
  845. BYTE rsvd199; // 0x203
  846. struct EP1DUBits EP1DU; // 0x204
  847. BYTE rsvd200; // 0x205
  848. BYTE rsvd201; // 0x206
  849. BYTE rsvd202; // 0x207
  850. struct EP1DFBits EP1DF; // 0x208
  851. BYTE rsvd203; // 0x209
  852. BYTE rsvd204; // 0x20a
  853. BYTE rsvd205; // 0x20b
  854. struct EP1DTLBits EP1DTL; // 0x20C
  855. BYTE rsvd206; // 0x20d
  856. BYTE rsvd207; // 0x20e
  857. BYTE rsvd208; // 0x20f
  858. struct EP1DTMBits EP1DTM; // 0x210
  859. BYTE rsvd209; // 0x211
  860. BYTE rsvd210; // 0x212
  861. BYTE rsvd211; // 0x213
  862. struct EP1DTHBits EP1DTH; // 0x214
  863. BYTE rsvd212; // 0x215
  864. BYTE rsvd213; // 0x216
  865. BYTE rsvd214; // 0x217
  866. struct EP2DCBits EP2DC; // 0x218
  867. BYTE rsvd215; // 0x219
  868. BYTE rsvd216; // 0x21a
  869. BYTE rsvd217; // 0x21b
  870. struct EP2DUBits EP2DU; // 0x21C
  871. BYTE rsvd218; // 0x21d
  872. BYTE rsvd219; // 0x21e
  873. BYTE rsvd220; // 0x21f
  874. struct EP2DFBits EP2DF; // 0x220
  875. BYTE rsvd221; // 0x221
  876. BYTE rsvd222; // 0x222
  877. BYTE rsvd223; // 0x223
  878. struct EP2DTLBits EP2DTL; // 0x224
  879. BYTE rsvd224; // 0x225
  880. BYTE rsvd225; // 0x226
  881. BYTE rsvd226; // 0x227
  882. struct EP2DTMBits EP2DTM; // 0x228
  883. BYTE rsvd227; // 0x229
  884. BYTE rsvd228; // 0x22a
  885. BYTE rsvd229; // 0x22b
  886. struct EP2DTHBits EP2DTH; // 0x22C
  887. BYTE rsvd230; // 0x22d
  888. BYTE rsvd231; // 0x22e
  889. BYTE rsvd232; // 0x22f
  890. BYTE rsvd233; // 0x230
  891. BYTE rsvd234; // 0x231
  892. BYTE rsvd235; // 0x232
  893. BYTE rsvd236; // 0x233
  894. BYTE rsvd237; // 0x234
  895. BYTE rsvd238; // 0x235
  896. BYTE rsvd239; // 0x236
  897. BYTE rsvd240; // 0x237
  898. BYTE rsvd241; // 0x238
  899. BYTE rsvd242; // 0x239
  900. BYTE rsvd243; // 0x23a
  901. BYTE rsvd244; // 0x23b
  902. BYTE rsvd245; // 0x23C
  903. BYTE rsvd246; // 0x23d
  904. BYTE rsvd247; // 0x23e
  905. BYTE rsvd248; // 0x23f
  906. struct EP3DCBits EP3DC; // 0x240
  907. BYTE rsvd249; // 0x241
  908. BYTE rsvd250; // 0x242
  909. BYTE rsvd251; // 0x243
  910. struct EP3DUBits EP3DU; // 0x244
  911. BYTE rsvd252; // 0x245
  912. BYTE rsvd253; // 0x246
  913. BYTE rsvd254; // 0x247
  914. struct EP3DFBits EP3DF; // 0x248
  915. BYTE rsvd255; // 0x249
  916. BYTE rsvd256; // 0x24a
  917. BYTE rsvd257; // 0x24b
  918. struct EP3DTLBits EP3DTL; // 0x24C
  919. BYTE rsvd258; // 0x24d
  920. BYTE rsvd259; // 0x24e
  921. BYTE rsvd260; // 0x24f
  922. struct EP3DTMBits EP3DTM; // 0x250
  923. BYTE rsvd261; // 0x251
  924. BYTE rsvd262; // 0x252
  925. BYTE rsvd263; // 0x253
  926. struct EP3DTHBits EP3DTH; // 0x254
  927. BYTE rsvd264; // 0x255
  928. BYTE rsvd265; // 0x256
  929. BYTE rsvd266; // 0x257
  930. struct EP4DCBits EP4DC; // 0x258
  931. BYTE rsvd267; // 0x259
  932. BYTE rsvd268; // 0x25a
  933. BYTE rsvd269; // 0x25b
  934. struct EP4DUBits EP4DU; // 0x25C
  935. BYTE rsvd270; // 0x25d
  936. BYTE rsvd271; // 0x25e
  937. BYTE rsvd272; // 0x25f
  938. struct EP4DFBits EP4DF; // 0x260
  939. BYTE rsvd273; // 0x261
  940. BYTE rsvd274; // 0x262
  941. BYTE rsvd275; // 0x263
  942. struct EP4DTLBits EP4DTL; // 0x264
  943. BYTE rsvd276; // 0x265
  944. BYTE rsvd277; // 0x266
  945. BYTE rsvd278; // 0x267
  946. struct EP4DTMBits EP4DTM; // 0x268
  947. BYTE rsvd279; // 0x269
  948. BYTE rsvd280; // 0x26a
  949. BYTE rsvd281; // 0x26b
  950. struct EP4DTHBits EP4DTH; // 0x26C
  951. };
  952. //
  953. // Registers : Interrupt Controller
  954. //
  955. #define INT_BASE      0xB0A00000 // 0x4A000000
  956. typedef struct  {
  957.     unsigned int  rSRCPND;
  958.     unsigned int  rINTMOD;
  959.     unsigned int  rINTMSK;
  960.     unsigned int  rPRIORITY;
  961.     unsigned int  rINTPND;
  962.     unsigned int  rINTOFFSET;
  963.     unsigned int  rSUBSRCPND;
  964.     unsigned int  rINTSUBMSK;
  965. }INTreg ;    
  966. // S3C2440X01 Interrupt controller bit positions
  967. #define    BIT_EINT0        (0x1)
  968. #define    BIT_EINT1        (0x1<<1)
  969. #define    BIT_EINT2        (0x1<<2)
  970. #define    BIT_EINT3        (0x1<<3)
  971. #define    BIT_EINT4_7      (0x1<<4)
  972. #define    BIT_EINT8_23     (0x1<<5)
  973. #define    BIT_CAM          (0x1<<6)
  974. #define    BIT_BAT_FLT      (0x1<<7)
  975. #define    BIT_TICK         (0x1<<8)
  976. #define    BIT_WDT_AC97     (0x1<<9)
  977. #define    BIT_TIMER0       (0x1<<10)
  978. #define    BIT_TIMER1       (0x1<<11)
  979. #define    BIT_TIMER2       (0x1<<12)
  980. #define    BIT_TIMER3       (0x1<<13)
  981. #define    BIT_TIMER4       (0x1<<14)
  982. #define    BIT_UART2        (0x1<<15)
  983. #define    BIT_LCD          (0x1<<16)
  984. #define    BIT_DMA0         (0x1<<17)
  985. #define    BIT_DMA1         (0x1<<18)
  986. #define    BIT_DMA2         (0x1<<19)
  987. #define    BIT_DMA3         (0x1<<20)
  988. #define    BIT_MMC         (0x1<<21)
  989. #define    BIT_SPI0         (0x1<<22)
  990. #define    BIT_UART1        (0x1<<23)
  991. #define    BIT_RSV2         (0x1<<24)
  992. #define    BIT_USBD         (0x1<<25)
  993. #define    BIT_USBH         (0x1<<26)
  994. #define    BIT_IIC         (0x1<<27)
  995. #define    BIT_UART0        (0x1<<28)
  996. #define    BIT_SPI1         (0x1<<29)
  997. #define    BIT_RTC         (0x1<<30)
  998. #define    BIT_ADC         (0x1<<31)
  999. #define    BIT_ALLMSK       (0xffffffff)
  1000. #define    BIT_SUB_AC97 (0x1<<14)
  1001. #define    BIT_SUB_WDT (0x1<<13)
  1002. #define    BIT_SUB_CAM_P (0x1<<12)
  1003. #define    BIT_SUB_CAM_C (0x1<<11)
  1004. #define    BIT_SUB_ADC_S (0x1<<10)
  1005. //#define    BIT_SUB_ADC (0x1<<10)
  1006. #define    BIT_SUB_TC (0x1<<9)
  1007. #define    BIT_SUB_ERR2 (0x1<<8)
  1008. #define    BIT_SUB_TXD2 (0x1<<7)
  1009. #define    BIT_SUB_RXD2 (0x1<<6)
  1010. #define    BIT_SUB_ERR1 (0x1<<5)
  1011. #define    BIT_SUB_TXD1 (0x1<<4)
  1012. #define    BIT_SUB_RXD1 (0x1<<3)
  1013. #define    BIT_SUB_ERR0 (0x1<<2)
  1014. #define    BIT_SUB_TXD0 (0x1<<1)
  1015. #define    BIT_SUB_RXD0 (0x1<<0)
  1016. #define    BIT_SUB_ALLMSK (0x7ff)
  1017. // S3C2440X01 Interrupt controller source number
  1018. #define    INTSRC_EINT0     0
  1019. #define    INTSRC_EINT1     1
  1020. #define    INTSRC_EINT2     2
  1021. #define    INTSRC_EINT3     3
  1022. #define    INTSRC_EINT4_7   4
  1023. #define    INTSRC_EINT8_23  5
  1024. #define    INTSRC_CAM       6
  1025. #define    INTSRC_BAT_FLT   7
  1026. #define    INTSRC_TICK      8
  1027. #define    INTSRC_WDT_AC97  9
  1028. #define    INTSRC_TIMER0    10
  1029. #define    INTSRC_TIMER1    11
  1030. #define    INTSRC_TIMER2    12
  1031. #define    INTSRC_TIMER3    13
  1032. #define    INTSRC_TIMER4    14
  1033. #define    INTSRC_UART2     15
  1034. #define    INTSRC_LCD       16
  1035. #define    INTSRC_DMA0      17
  1036. #define    INTSRC_DMA1      18
  1037. #define    INTSRC_DMA2      19
  1038. #define    INTSRC_DMA3      20
  1039. #define    INTSRC_MMC     21
  1040. #define    INTSRC_SPI0     22
  1041. #define    INTSRC_UART1     23
  1042. #define    INTSRC_RSV2      24
  1043. #define    INTSRC_USBD      25
  1044. #define    INTSRC_USBH      26
  1045. #define    INTSRC_IIC     27
  1046. #define    INTSRC_UART0     28
  1047. #define    INTSRC_SPI1      29
  1048. #define    INTSRC_RTC     30
  1049. #define    INTSRC_ADC     31
  1050. #define    INTSRC_ALLMSK    (0xffffffff)
  1051. // S3C2440X01 Interrupt controller bit positions
  1052. // For SUB source pending bit.
  1053. #define  INTSUB_RXD0 (0x1 << 0)
  1054. #define INTSUB_TXD0 (0x1 << 1)
  1055. #define INTSUB_ERR0 (0x1 << 2)
  1056. #define INTSUB_RXD1 (0x1 << 3)
  1057. #define  INTSUB_TXD1 (0x1 << 4)
  1058. #define INTSUB_ERR1 (0x1 << 5)
  1059. #define INTSUB_RXD2 (0x1 << 6)
  1060. #define  INTSUB_TXD2 (0x1 << 7)
  1061. #define INTSUB_ERR2 (0x1 << 8)
  1062. #define INTSUB_TC (0x1 << 9)
  1063. #define INTSUB_ADC (0x1 << 10)
  1064. #define INTSUB_CAM_C (0x1 << 11) // 030610
  1065. #define INTSUB_CAM_P (0x1 << 12) // 040218, INTSUB_CAM_S - 030610
  1066. #define INTSUB_WDT (0x1 << 13) // 040218
  1067. #define INTSUB_AC97 (0x1 << 14) // 040218
  1068. #define  INTSUB_SLLMSK (0xFFFFFFFF)
  1069. #define INTSUB_BASE     0xB0A00018 // 0x4A000018 // serial
  1070. #define INTSUB_MSK      0xB0A0001C // 0x4A00001C // serial
  1071. #define BIT_SUB_ALLMSK (0x7ff)
  1072. //
  1073. // Registers : LCD Controller
  1074. //
  1075. #define LCD_BASE      0xB0D00000 // 0x4D000000
  1076. typedef struct  {
  1077.     unsigned int  rLCDCON1; // 00
  1078.     unsigned int  rLCDCON2; // 04
  1079.     unsigned int  rLCDCON3; // 08
  1080.     unsigned int  rLCDCON4; // 0C
  1081.     unsigned int  rLCDCON5; // 10
  1082.     unsigned int  rLCDSADDR1; // 14
  1083.     unsigned int  rLCDSADDR2; // 18
  1084.     unsigned int  rLCDSADDR3; // 1C
  1085.     unsigned int  rREDLUT; // 20
  1086.     unsigned int  rGREENLUT; // 24
  1087.     unsigned int  rBLUELUT; // 28
  1088.     unsigned int  rPAD[8]; // 2C - 48
  1089.     unsigned int  rDITHMODE; // 4C
  1090.     unsigned int  rTPAL; // 50
  1091.     unsigned int  rLCDINTPND; // 54
  1092.     unsigned int  rLCDSRCPND; // 58
  1093.     unsigned int  rLCDINTMSK; // 5C
  1094.     unsigned int  rTCONSEL; // 60 ;;; SHL
  1095. }LCDreg ;    
  1096. // LCD register value...    
  1097. #define MODE_STN_1BIT  (1)
  1098. #define MODE_STN_2BIT   (2)
  1099. #define MODE_STN_4BIT   (4)
  1100. #define MODE_CSTN_8BIT  (108)
  1101. #define MODE_CSTN_12BIT (112)
  1102. #define MODE_TFT_1BIT (201)
  1103. //#define MODE_TFT_2BIT (202)
  1104. //#define MODE_TFT_4BIT (204)
  1105. #define MODE_TFT_8BIT (208)
  1106. #define MODE_TFT_16BIT (216)
  1107. #define SCR_XSIZE (640) //for virtual screen  
  1108. #define SCR_YSIZE (480)
  1109. //#define SCR_XSIZE_TFT (1280) //for virtual screen  
  1110. //#define SCR_YSIZE_TFT (960)
  1111. #define LCD_XSIZE_STN (320)
  1112. #define LCD_YSIZE_STN (240)
  1113. #define LCD_XSIZE_CSTN (320)
  1114. #define LCD_YSIZE_CSTN (240)
  1115. //#define LCD_XSIZE_STN (240)
  1116. //#define LCD_YSIZE_STN (320)
  1117. //#define LCD_XSIZE_CSTN (240)
  1118. //#define LCD_YSIZE_CSTN (320)
  1119. #if (LCD_TYPE == TFT640_480)
  1120. #define LCD_XSIZE_TFT (640)
  1121. #define LCD_YSIZE_TFT (480)
  1122. #elif (LCD_TYPE == TFT240_320)
  1123. #define LCD_XSIZE_TFT (240)
  1124. #define LCD_YSIZE_TFT (320)
  1125. #endif
  1126. #if (LCD_TYPE == TFT640_480)
  1127. #define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2)
  1128. #define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)
  1129. #elif (LCD_TYPE == TFT240_320)
  1130. #define SCR_XSIZE_TFT (480) //for virtual screen  
  1131. #define SCR_YSIZE_TFT (640)
  1132. #endif
  1133. #define ARRAY_SIZE_STN_1BIT     (SCR_XSIZE/8*SCR_YSIZE)
  1134. #define ARRAY_SIZE_STN_2BIT     (SCR_XSIZE/4*SCR_YSIZE)
  1135. #define ARRAY_SIZE_STN_4BIT     (SCR_XSIZE/2*SCR_YSIZE)
  1136. #define ARRAY_SIZE_CSTN_8BIT    (SCR_XSIZE/1*SCR_YSIZE)
  1137. #define ARRAY_SIZE_CSTN_12BIT   (SCR_XSIZE*2*SCR_YSIZE)
  1138. #define ARRAY_SIZE_TFT_8BIT     (SCR_XSIZE/1*SCR_YSIZE)
  1139. //#define ARRAY_SIZE_TFT_16BIT    (SCR_XSIZE*2*SCR_YSIZE)
  1140. #define ARRAY_SIZE_TFT_16BIT    (LCD_XSIZE_TFT*2*LCD_YSIZE_TFT)
  1141. #define HOZVAL_STN (LCD_XSIZE_STN/4-1)
  1142. #define LINEVAL_STN (LCD_YSIZE_STN-1)
  1143. #define HOZVAL_CSTN (LCD_XSIZE_CSTN*3/8-1)
  1144. #define LINEVAL_CSTN (LCD_YSIZE_CSTN-1)
  1145. #if (LCD_TYPE == TFT640_480)
  1146. #define HOZVAL_TFT (LCD_XSIZE_TFT-1)
  1147. #define LINEVAL_TFT (LCD_YSIZE_TFT-1)
  1148. #elif (LCD_TYPE == TFT240_320)
  1149. #define HOZVAL_TFT (LCD_XSIZE_TFT-1)
  1150. #define LINEVAL_TFT (LCD_YSIZE_TFT-1)
  1151. #endif
  1152. //STN/CSTN timing parameter for LCBHBT161M(NANYA)
  1153. #define WLH (3)
  1154. #define WDLY (3)
  1155. #define LINEBLANK (1 &0xff)
  1156. //TFT timing parameter for V16C6448AB(PRIME VIEW) 
  1157. #if (LCD_TYPE == TFT640_480)
  1158. #define MVAL (13)
  1159. #define MVAL_USED (0)
  1160. #define VBPD ((3)&0xff)
  1161. #define VFPD ((3)&0xff)
  1162. #define VSPW ((2) &0x3f)
  1163. #define HBPD ((12)&0x7f)
  1164. #define HFPD ((12)&0xff)
  1165. #define HSPW ((30)&0xff)
  1166. #elif (LCD_TYPE == TFT240_320)
  1167. #define MVAL (13)
  1168. #define MVAL_USED (12) //wujiarui
  1169. #define VBPD ((3)&0xff)
  1170. #define VFPD ((3)&0xff)
  1171. #define VSPW ((2) &0x3f)
  1172. #define HBPD ((12)&0x7f)
  1173. #define HFPD ((12)&0xff)
  1174. #define HSPW ((30)&0xff)
  1175. #endif
  1176. #define CLKVAL_STN_MONO (22) 
  1177.     //69.14hz @60Mhz,WLH=16clk,WDLY=16clk,LINEBLANK=1*8,VD=4 
  1178. #define CLKVAL_STN_GRAY (12) 
  1179.     //124hz @60Mhz,WLH=16clk,WDLY=16clk,LINEBLANK=1*8,VD=4  
  1180. #define CLKVAL_CSTN (8) 
  1181.     //135hz @60Mhz,WLH=16clk,WDLY=16clk,LINEBLANK=1*8,VD=8  
  1182. //#define CLKVAL_TFT (1)
  1183. #define CLKVAL_TFT (6)
  1184. //#define CLKVAL_TFT (7)
  1185.     //NOTE: 1)SDRAM should have 32-bit bus width. 
  1186.     //      2)HBPD,HFPD,HSPW should be optimized. 
  1187.     //44.6hz @75Mhz
  1188.     //VSYNC,HSYNC should be inverted
  1189.     //HBPD=48VCLK,HFPD=16VCLK,HSPW=96VCLK
  1190.     //VBPD=33HSYNC,VFPD=10HSYNC,VSPW=2HSYNC
  1191. #define M5D(n) ((n) & 0x1fffff)
  1192. //
  1193. // ADC
  1194. //
  1195. #define ADC_BASE      0xB1800000 // 0x58000000
  1196. typedef struct {
  1197.         unsigned int  rADCCON;
  1198.         unsigned int  rADCTSC;
  1199.         unsigned int rADCDLY;
  1200.         unsigned int  rADCDAT0;
  1201.         unsigned int  rADCDAT1;
  1202. unsigned int rADCUPDN; // fwood 030830
  1203. }ADCreg ;        
  1204. //
  1205. // Registers : RTC
  1206. //
  1207. #define RTC_BASE      0xB1700000 // 0x57000000
  1208. typedef struct {
  1209. unsigned int  rPAD1[16];  // 00 - 3C
  1210. unsigned int  rRTCCON; // 40
  1211. unsigned int  rTICINT;
  1212. unsigned int  rPAD2[2];      
  1213. unsigned int  rRTCALM;
  1214. unsigned int  rALMSEC;
  1215. unsigned int  rALMMIN;
  1216. unsigned int  rALMHOUR;
  1217. unsigned int  rALMDAY;
  1218. unsigned int  rALMMON;
  1219. unsigned int  rALMYEAR;
  1220. unsigned int  rRTCRST;
  1221. unsigned int  rBCDSEC;
  1222. unsigned int  rBCDMIN;
  1223. unsigned int  rBCDHOUR;
  1224. unsigned int  rBCDDAY;
  1225. unsigned int  rBCDDATE;
  1226. unsigned int  rBCDMON;
  1227. unsigned int  rBCDYEAR;
  1228. } RTCreg;    
  1229. #if 0 // _BIG_ENDIAN
  1230. #define rRTCCON (*(volatile unsigned char *)0xB1700043)
  1231. #define rRTCALM (*(volatile unsigned char *)0xB1700053)
  1232. #define rALMSEC (*(volatile unsigned char *)0xB1700057)
  1233. #define rALMMIN (*(volatile unsigned char *)0xB170005b)
  1234. #define rALMHOUR (*(volatile unsigned char *)0xB170005f)
  1235. #define rALMDAY (*(volatile unsigned char *)0xB1700063)
  1236. #define rALMMON (*(volatile unsigned char *)0xB1700067)
  1237. #define rALMYEAR (*(volatile unsigned char *)0xB170006b)
  1238. #define rRTCRST (*(volatile unsigned char *)0xB170006f)
  1239. #define rBCDSEC (*(volatile unsigned char *)0xB1700073)
  1240. #define rBCDMIN (*(volatile unsigned char *)0xB1700077)
  1241. #define rBCDHOUR (*(volatile unsigned char *)0xB170007b)
  1242. #define rBCDDAY (*(volatile unsigned char *)0xB170007f)
  1243. #define rBCDDATE (*(volatile unsigned char *)0xB1700083)
  1244. #define rBCDMON (*(volatile unsigned char *)0xB1700087)
  1245. #define rBCDYEAR (*(volatile unsigned char *)0xB170008b)
  1246. #define rTICINT (*(volatile unsigned char *)0xB1700047)
  1247. #endif
  1248. //
  1249. // Watch-Dog Timver
  1250. //
  1251. #define WATCH_BASE 0xB1300000 // 0x53000000
  1252. typedef struct {
  1253. unsigned long   rWTCON;
  1254. unsigned long   rWTDAT;
  1255. unsigned long   rWTCNT;
  1256. } WATCHreg;
  1257.     
  1258. //
  1259. // SD / MMC 
  1260. //
  1261. #define MMC_BACE        0xB1A00000 // 0x5A000000
  1262. #define MMC_BASE        0xB1A00000 // 0x5A000000
  1263. typedef struct {
  1264. unsigned int    rSDICON;
  1265. unsigned int    rSDIPRE;
  1266. unsigned int    rSDICMDARG;
  1267. unsigned int    rSDICMDCON;
  1268. unsigned int    rSDICMDSTA;
  1269. unsigned int    rSDIRSP0;
  1270. unsigned int    rSDIRSP1;
  1271. unsigned int    rSDIRSP2;
  1272. unsigned int    rSDIRSP3;
  1273. unsigned int  rSDIDTIMER;
  1274. unsigned int rSDIBSIZE;
  1275. unsigned int  rSDIDATCON;
  1276. unsigned int rSDIDATCNT;
  1277. unsigned int rSDIDATSTA;
  1278. unsigned int rSDIFSTA;
  1279. unsigned int rSDIDAT;
  1280. unsigned int rSDIINTMSK;
  1281. } MMCreg;
  1282. //
  1283. // IIC 
  1284. //
  1285. #define IIC_BASE        0xB1400000 // 54000000
  1286. #define IICFIF_PHYS     0x54000000  // physical address of IIC
  1287. typedef struct {
  1288.         unsigned int    rIICCON;
  1289.         unsigned int    rIICSTAT;
  1290.         unsigned int    rIICADD;
  1291.         unsigned int    rIICDS;
  1292. unsigned int    rIICLC;
  1293. }IICreg;        
  1294. //
  1295. // IIS 
  1296. //
  1297. #define IIS_BASE        0xB1500000
  1298. #define IISFIF_PHYS     0x55000010  // physical address of IISFIF for DMA
  1299. typedef struct {
  1300.         unsigned int    rIISCON;
  1301.         unsigned int    rIISMOD;
  1302.         unsigned int    rIISPSR;
  1303.         unsigned int    rIISFCON;
  1304.         unsigned int    rIISFIF;
  1305. }IISreg;        
  1306. //
  1307. // SPI 
  1308. //
  1309. #define SSP_BASE 0xB1900000  // 0x59000000
  1310. typedef struct  {
  1311. unsigned int rSPCON0;  // 00
  1312. unsigned int rSPSTA0;
  1313. unsigned int rSPPIN0;
  1314. unsigned int rSPPRE0;
  1315. unsigned int rSPTDAT0; // 10
  1316. unsigned int rSPRDAT0;
  1317. unsigned int rPAD[2];
  1318. unsigned int rSPCON1;  // 20
  1319. unsigned int rSPSTA1;
  1320. unsigned int rSPPIN1;
  1321. unsigned int rSPPRE1;
  1322. unsigned int rSPTDAT1;  // 30
  1323. unsigned int rSPRDAT1;
  1324. }SSPreg ; 
  1325. //
  1326. // AC97
  1327. //
  1328. #define AC97_BASE 0xB1B00000 // 0x5B000000
  1329. #define AC_PCMDATA_PHYS 0x5B000018 // For PCM In and Out - Stereo
  1330. #define AC_MICDATA_PHYS 0x5B00001C // For MIC In - Mono
  1331. typedef struct {
  1332. unsigned int rAC_GLBCTRL; // 0x00
  1333. unsigned int rAC_GLBSTAT; // 0x04
  1334. unsigned int rAC_CODEC_CMD; // 0x08
  1335. unsigned int rAC_CODEC_STAT; // 0x0c
  1336. unsigned int rAC_PCMADDR; // 0x10
  1337. unsigned int rAC_MICADDR; // 0x14
  1338. unsigned int rAC_PCMDATA; // 0x18
  1339. unsigned int rAC_MICDATA; // 0x1c
  1340. } AC97reg;
  1341. #endif