SA-1100.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:110k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * FILE     SA-1100.h
  3.  *
  4.  * Version  1.2
  5.  * Author   Copyright (c) Marc A. Viredaz, 1998
  6.  *          DEC Western Research Laboratory, Palo Alto, CA
  7.  * Date     January 1998 (April 1997)
  8.  * System   StrongARM SA-1100
  9.  * Language C or ARM Assembly
  10.  * Purpose  Definition of constants related to the StrongARM
  11.  *          SA-1100 microprocessor (Advanced RISC Machine (ARM)
  12.  *          architecture version 4). This file is based on the
  13.  *          StrongARM SA-1100 data sheet version 2.2.
  14.  *
  15.  */
  16. /* Be sure that virtual mapping is defined right */
  17. #ifndef __ASM_ARCH_HARDWARE_H
  18. #error You must include hardware.h not SA-1100.h
  19. #endif
  20. #include "bitfield.h"
  21. /*
  22.  * Personal Computer Memory Card International Association (PCMCIA) sockets
  23.  */
  24. #define PCMCIAPrtSp 0x04000000 /* PCMCIA Partition Space [byte]   */
  25. #define PCMCIASp (4*PCMCIAPrtSp) /* PCMCIA Space [byte]             */
  26. #define PCMCIAIOSp PCMCIAPrtSp /* PCMCIA I/O Space [byte]         */
  27. #define PCMCIAAttrSp PCMCIAPrtSp /* PCMCIA Attribute Space [byte]   */
  28. #define PCMCIAMemSp PCMCIAPrtSp /* PCMCIA Memory Space [byte]      */
  29. #define PCMCIA0Sp PCMCIASp /* PCMCIA 0 Space [byte]           */
  30. #define PCMCIA0IOSp PCMCIAIOSp /* PCMCIA 0 I/O Space [byte]       */
  31. #define PCMCIA0AttrSp PCMCIAAttrSp /* PCMCIA 0 Attribute Space [byte] */
  32. #define PCMCIA0MemSp PCMCIAMemSp /* PCMCIA 0 Memory Space [byte]    */
  33. #define PCMCIA1Sp PCMCIASp /* PCMCIA 1 Space [byte]           */
  34. #define PCMCIA1IOSp PCMCIAIOSp /* PCMCIA 1 I/O Space [byte]       */
  35. #define PCMCIA1AttrSp PCMCIAAttrSp /* PCMCIA 1 Attribute Space [byte] */
  36. #define PCMCIA1MemSp PCMCIAMemSp /* PCMCIA 1 Memory Space [byte]    */
  37. #define _PCMCIA(Nb)          /* PCMCIA [0..1]                   */ 
  38.                  (0x20000000 + (Nb)*PCMCIASp)
  39. #define _PCMCIAIO(Nb) _PCMCIA (Nb) /* PCMCIA I/O [0..1]               */
  40. #define _PCMCIAAttr(Nb)          /* PCMCIA Attribute [0..1]         */ 
  41.                  (_PCMCIA (Nb) + 2*PCMCIAPrtSp)
  42. #define _PCMCIAMem(Nb)          /* PCMCIA Memory [0..1]            */ 
  43.                  (_PCMCIA (Nb) + 3*PCMCIAPrtSp)
  44. #define _PCMCIA0 _PCMCIA (0) /* PCMCIA 0                        */
  45. #define _PCMCIA0IO _PCMCIAIO (0) /* PCMCIA 0 I/O                    */
  46. #define _PCMCIA0Attr _PCMCIAAttr (0) /* PCMCIA 0 Attribute              */
  47. #define _PCMCIA0Mem _PCMCIAMem (0) /* PCMCIA 0 Memory                 */
  48. #define _PCMCIA1 _PCMCIA (1) /* PCMCIA 1                        */
  49. #define _PCMCIA1IO _PCMCIAIO (1) /* PCMCIA 1 I/O                    */
  50. #define _PCMCIA1Attr _PCMCIAAttr (1) /* PCMCIA 1 Attribute              */
  51. #define _PCMCIA1Mem _PCMCIAMem (1) /* PCMCIA 1 Memory                 */
  52. /*
  53.  * Universal Serial Bus (USB) Device Controller (UDC) control registers
  54.  *
  55.  * Registers
  56.  *    Ser0UDCCR  Serial port 0 Universal Serial Bus (USB) Device
  57.  *               Controller (UDC) Control Register (read/write).
  58.  *    Ser0UDCAR  Serial port 0 Universal Serial Bus (USB) Device
  59.  *               Controller (UDC) Address Register (read/write).
  60.  *    Ser0UDCOMP Serial port 0 Universal Serial Bus (USB) Device
  61.  *               Controller (UDC) Output Maximum Packet size register
  62.  *               (read/write).
  63.  *    Ser0UDCIMP Serial port 0 Universal Serial Bus (USB) Device
  64.  *               Controller (UDC) Input Maximum Packet size register
  65.  *               (read/write).
  66.  *    Ser0UDCCS0 Serial port 0 Universal Serial Bus (USB) Device
  67.  *               Controller (UDC) Control/Status register end-point 0
  68.  *               (read/write).
  69.  *    Ser0UDCCS1 Serial port 0 Universal Serial Bus (USB) Device
  70.  *               Controller (UDC) Control/Status register end-point 1
  71.  *               (output, read/write).
  72.  *    Ser0UDCCS2 Serial port 0 Universal Serial Bus (USB) Device
  73.  *               Controller (UDC) Control/Status register end-point 2
  74.  *               (input, read/write).
  75.  *    Ser0UDCD0  Serial port 0 Universal Serial Bus (USB) Device
  76.  *               Controller (UDC) Data register end-point 0
  77.  *               (read/write).
  78.  *    Ser0UDCWC  Serial port 0 Universal Serial Bus (USB) Device
  79.  *               Controller (UDC) Write Count register end-point 0
  80.  *               (read).
  81.  *    Ser0UDCDR  Serial port 0 Universal Serial Bus (USB) Device
  82.  *               Controller (UDC) Data Register (read/write).
  83.  *    Ser0UDCSR  Serial port 0 Universal Serial Bus (USB) Device
  84.  *               Controller (UDC) Status Register (read/write).
  85.  */
  86. #define Ser0UDCCR __REG(0x80000000)  /* Ser. port 0 UDC Control Reg. */
  87. #define Ser0UDCAR __REG(0x80000004)  /* Ser. port 0 UDC Address Reg. */
  88. #define Ser0UDCOMP __REG(0x80000008)  /* Ser. port 0 UDC Output Maximum Packet size reg. */
  89. #define Ser0UDCIMP __REG(0x8000000C)  /* Ser. port 0 UDC Input Maximum Packet size reg. */
  90. #define Ser0UDCCS0 __REG(0x80000010)  /* Ser. port 0 UDC Control/Status reg. end-point 0 */
  91. #define Ser0UDCCS1 __REG(0x80000014)  /* Ser. port 0 UDC Control/Status reg. end-point 1 (output) */
  92. #define Ser0UDCCS2 __REG(0x80000018)  /* Ser. port 0 UDC Control/Status reg. end-point 2 (input) */
  93. #define Ser0UDCD0 __REG(0x8000001C)  /* Ser. port 0 UDC Data reg. end-point 0 */
  94. #define Ser0UDCWC __REG(0x80000020)  /* Ser. port 0 UDC Write Count reg. end-point 0 */
  95. #define Ser0UDCDR __REG(0x80000028)  /* Ser. port 0 UDC Data Reg. */
  96. #define Ser0UDCSR __REG(0x80000030)  /* Ser. port 0 UDC Status Reg. */
  97. #define UDCCR_UDD 0x00000001 /* UDC Disable                     */
  98. #define UDCCR_UDA 0x00000002 /* UDC Active (read)               */
  99. #define UDCCR_RESIM 0x00000004 /* Resume Interrupt Mask, per errata */
  100. #define UDCCR_EIM 0x00000008 /* End-point 0 Interrupt Mask      */
  101.                           /* (disable)                       */
  102. #define UDCCR_RIM 0x00000010 /* Receive Interrupt Mask          */
  103.                           /* (disable)                       */
  104. #define UDCCR_TIM 0x00000020 /* Transmit Interrupt Mask         */
  105.                           /* (disable)                       */
  106. #define UDCCR_SRM 0x00000040 /* Suspend/Resume interrupt Mask   */
  107.                           /* (disable)                       */
  108. #define UDCCR_SUSIM UDCCR_SRM /* Per errata, SRM just masks suspend */
  109. #define UDCCR_REM 0x00000080 /* REset interrupt Mask (disable)  */
  110. #define UDCAR_ADD Fld (7, 0) /* function ADDress                */
  111. #define UDCOMP_OUTMAXP Fld (8, 0) /* OUTput MAXimum Packet size - 1  */
  112.                           /* [byte]                          */
  113. #define UDCOMP_OutMaxPkt(Size)   /* Output Maximum Packet size      */ 
  114.                           /* [1..256 byte]                   */ 
  115.                  (((Size) - 1) << FShft (UDCOMP_OUTMAXP))
  116. #define UDCIMP_INMAXP Fld (8, 0) /* INput MAXimum Packet size - 1   */
  117.                           /* [byte]                          */
  118. #define UDCIMP_InMaxPkt(Size)    /* Input Maximum Packet size       */ 
  119.                           /* [1..256 byte]                   */ 
  120.                  (((Size) - 1) << FShft (UDCIMP_INMAXP))
  121. #define UDCCS0_OPR 0x00000001 /* Output Packet Ready (read)      */
  122. #define UDCCS0_IPR 0x00000002 /* Input Packet Ready              */
  123. #define UDCCS0_SST 0x00000004 /* Sent STall                      */
  124. #define UDCCS0_FST 0x00000008 /* Force STall                     */
  125. #define UDCCS0_DE 0x00000010 /* Data End                        */
  126. #define UDCCS0_SE 0x00000020 /* Setup End (read)                */
  127. #define UDCCS0_SO 0x00000040 /* Serviced Output packet ready    */
  128.                           /* (write)                         */
  129. #define UDCCS0_SSE 0x00000080 /* Serviced Setup End (write)      */
  130. #define UDCCS1_RFS 0x00000001 /* Receive FIFO 12-bytes or more   */
  131.                           /* Service request (read)          */
  132. #define UDCCS1_RPC 0x00000002 /* Receive Packet Complete         */
  133. #define UDCCS1_RPE 0x00000004 /* Receive Packet Error (read)     */
  134. #define UDCCS1_SST 0x00000008 /* Sent STall                      */
  135. #define UDCCS1_FST 0x00000010 /* Force STall                     */
  136. #define UDCCS1_RNE 0x00000020 /* Receive FIFO Not Empty (read)   */
  137. #define UDCCS2_TFS 0x00000001 /* Transmit FIFO 8-bytes or less   */
  138.                           /* Service request (read)          */
  139. #define UDCCS2_TPC 0x00000002 /* Transmit Packet Complete        */
  140. #define UDCCS2_TPE 0x00000004 /* Transmit Packet Error (read)    */
  141. #define UDCCS2_TUR 0x00000008 /* Transmit FIFO Under-Run         */
  142. #define UDCCS2_SST 0x00000010 /* Sent STall                      */
  143. #define UDCCS2_FST 0x00000020 /* Force STall                     */
  144. #define UDCD0_DATA Fld (8, 0) /* receive/transmit DATA FIFOs     */
  145. #define UDCWC_WC Fld (4, 0) /* Write Count                     */
  146. #define UDCDR_DATA Fld (8, 0) /* receive/transmit DATA FIFOs     */
  147. #define UDCSR_EIR 0x00000001 /* End-point 0 Interrupt Request   */
  148. #define UDCSR_RIR 0x00000002 /* Receive Interrupt Request       */
  149. #define UDCSR_TIR 0x00000004 /* Transmit Interrupt Request      */
  150. #define UDCSR_SUSIR 0x00000008 /* SUSpend Interrupt Request       */
  151. #define UDCSR_RESIR 0x00000010 /* RESume Interrupt Request        */
  152. #define UDCSR_RSTIR 0x00000020 /* ReSeT Interrupt Request         */
  153. /*
  154.  * Universal Asynchronous Receiver/Transmitter (UART) control registers
  155.  *
  156.  * Registers
  157.  *    Ser1UTCR0  Serial port 1 Universal Asynchronous
  158.  *               Receiver/Transmitter (UART) Control Register 0
  159.  *               (read/write).
  160.  *    Ser1UTCR1  Serial port 1 Universal Asynchronous
  161.  *               Receiver/Transmitter (UART) Control Register 1
  162.  *               (read/write).
  163.  *    Ser1UTCR2  Serial port 1 Universal Asynchronous
  164.  *               Receiver/Transmitter (UART) Control Register 2
  165.  *               (read/write).
  166.  *    Ser1UTCR3  Serial port 1 Universal Asynchronous
  167.  *               Receiver/Transmitter (UART) Control Register 3
  168.  *               (read/write).
  169.  *    Ser1UTDR   Serial port 1 Universal Asynchronous
  170.  *               Receiver/Transmitter (UART) Data Register
  171.  *               (read/write).
  172.  *    Ser1UTSR0  Serial port 1 Universal Asynchronous
  173.  *               Receiver/Transmitter (UART) Status Register 0
  174.  *               (read/write).
  175.  *    Ser1UTSR1  Serial port 1 Universal Asynchronous
  176.  *               Receiver/Transmitter (UART) Status Register 1 (read).
  177.  *
  178.  *    Ser2UTCR0  Serial port 2 Universal Asynchronous
  179.  *               Receiver/Transmitter (UART) Control Register 0
  180.  *               (read/write).
  181.  *    Ser2UTCR1  Serial port 2 Universal Asynchronous
  182.  *               Receiver/Transmitter (UART) Control Register 1
  183.  *               (read/write).
  184.  *    Ser2UTCR2  Serial port 2 Universal Asynchronous
  185.  *               Receiver/Transmitter (UART) Control Register 2
  186.  *               (read/write).
  187.  *    Ser2UTCR3  Serial port 2 Universal Asynchronous
  188.  *               Receiver/Transmitter (UART) Control Register 3
  189.  *               (read/write).
  190.  *    Ser2UTCR4  Serial port 2 Universal Asynchronous
  191.  *               Receiver/Transmitter (UART) Control Register 4
  192.  *               (read/write).
  193.  *    Ser2UTDR   Serial port 2 Universal Asynchronous
  194.  *               Receiver/Transmitter (UART) Data Register
  195.  *               (read/write).
  196.  *    Ser2UTSR0  Serial port 2 Universal Asynchronous
  197.  *               Receiver/Transmitter (UART) Status Register 0
  198.  *               (read/write).
  199.  *    Ser2UTSR1  Serial port 2 Universal Asynchronous
  200.  *               Receiver/Transmitter (UART) Status Register 1 (read).
  201.  *
  202.  *    Ser3UTCR0  Serial port 3 Universal Asynchronous
  203.  *               Receiver/Transmitter (UART) Control Register 0
  204.  *               (read/write).
  205.  *    Ser3UTCR1  Serial port 3 Universal Asynchronous
  206.  *               Receiver/Transmitter (UART) Control Register 1
  207.  *               (read/write).
  208.  *    Ser3UTCR2  Serial port 3 Universal Asynchronous
  209.  *               Receiver/Transmitter (UART) Control Register 2
  210.  *               (read/write).
  211.  *    Ser3UTCR3  Serial port 3 Universal Asynchronous
  212.  *               Receiver/Transmitter (UART) Control Register 3
  213.  *               (read/write).
  214.  *    Ser3UTDR   Serial port 3 Universal Asynchronous
  215.  *               Receiver/Transmitter (UART) Data Register
  216.  *               (read/write).
  217.  *    Ser3UTSR0  Serial port 3 Universal Asynchronous
  218.  *               Receiver/Transmitter (UART) Status Register 0
  219.  *               (read/write).
  220.  *    Ser3UTSR1  Serial port 3 Universal Asynchronous
  221.  *               Receiver/Transmitter (UART) Status Register 1 (read).
  222.  *
  223.  * Clocks
  224.  *    fxtl, Txtl Frequency, period of the system crystal (3.6864 MHz
  225.  *               or 3.5795 MHz).
  226.  *    fua, Tua   Frequency, period of the UART communication.
  227.  */
  228. #define _UTCR0(Nb) __REG(0x80010000 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 0 [1..3] */
  229. #define _UTCR1(Nb) __REG(0x80010004 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 1 [1..3] */
  230. #define _UTCR2(Nb) __REG(0x80010008 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 2 [1..3] */
  231. #define _UTCR3(Nb) __REG(0x8001000C + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 3 [1..3] */
  232. #define _UTCR4(Nb) __REG(0x80010010 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 4 [2] */
  233. #define _UTDR(Nb) __REG(0x80010014 + ((Nb) - 1)*0x00020000)  /* UART Data Reg. [1..3] */
  234. #define _UTSR0(Nb) __REG(0x8001001C + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 0 [1..3] */
  235. #define _UTSR1(Nb) __REG(0x80010020 + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 1 [1..3] */
  236. #define Ser1UTCR0 _UTCR0 (1) /* Ser. port 1 UART Control Reg. 0 */
  237. #define Ser1UTCR1 _UTCR1 (1) /* Ser. port 1 UART Control Reg. 1 */
  238. #define Ser1UTCR2 _UTCR2 (1) /* Ser. port 1 UART Control Reg. 2 */
  239. #define Ser1UTCR3 _UTCR3 (1) /* Ser. port 1 UART Control Reg. 3 */
  240. #define Ser1UTDR _UTDR (1) /* Ser. port 1 UART Data Reg.      */
  241. #define Ser1UTSR0 _UTSR0 (1) /* Ser. port 1 UART Status Reg. 0  */
  242. #define Ser1UTSR1 _UTSR1 (1) /* Ser. port 1 UART Status Reg. 1  */
  243. #define Ser2UTCR0 _UTCR0 (2) /* Ser. port 2 UART Control Reg. 0 */
  244. #define Ser2UTCR1 _UTCR1 (2) /* Ser. port 2 UART Control Reg. 1 */
  245. #define Ser2UTCR2 _UTCR2 (2) /* Ser. port 2 UART Control Reg. 2 */
  246. #define Ser2UTCR3 _UTCR3 (2) /* Ser. port 2 UART Control Reg. 3 */
  247. #define Ser2UTCR4 _UTCR4 (2) /* Ser. port 2 UART Control Reg. 4 */
  248. #define Ser2UTDR _UTDR (2) /* Ser. port 2 UART Data Reg.      */
  249. #define Ser2UTSR0 _UTSR0 (2) /* Ser. port 2 UART Status Reg. 0  */
  250. #define Ser2UTSR1 _UTSR1 (2) /* Ser. port 2 UART Status Reg. 1  */
  251. #define Ser3UTCR0 _UTCR0 (3) /* Ser. port 3 UART Control Reg. 0 */
  252. #define Ser3UTCR1 _UTCR1 (3) /* Ser. port 3 UART Control Reg. 1 */
  253. #define Ser3UTCR2 _UTCR2 (3) /* Ser. port 3 UART Control Reg. 2 */
  254. #define Ser3UTCR3 _UTCR3 (3) /* Ser. port 3 UART Control Reg. 3 */
  255. #define Ser3UTDR _UTDR (3) /* Ser. port 3 UART Data Reg.      */
  256. #define Ser3UTSR0 _UTSR0 (3) /* Ser. port 3 UART Status Reg. 0  */
  257. #define Ser3UTSR1 _UTSR1 (3) /* Ser. port 3 UART Status Reg. 1  */
  258. /* Those are still used in some places */
  259. #define _Ser1UTCR0 __PREG(Ser1UTCR0)
  260. #define _Ser2UTCR0 __PREG(Ser2UTCR0)
  261. #define _Ser3UTCR0 __PREG(Ser3UTCR0)
  262. /* Register offsets */
  263. #define UTCR0 0x00
  264. #define UTCR1 0x04
  265. #define UTCR2 0x08
  266. #define UTCR3 0x0c
  267. #define UTDR 0x14
  268. #define UTSR0 0x1c
  269. #define UTSR1 0x20
  270. #define UTCR0_PE 0x00000001 /* Parity Enable                   */
  271. #define UTCR0_OES 0x00000002 /* Odd/Even parity Select          */
  272. #define UTCR0_OddPar (UTCR0_OES*0) /*  Odd Parity                     */
  273. #define UTCR0_EvenPar (UTCR0_OES*1) /*  Even Parity                    */
  274. #define UTCR0_SBS 0x00000004 /* Stop Bit Select                 */
  275. #define UTCR0_1StpBit (UTCR0_SBS*0) /*  1 Stop Bit per frame           */
  276. #define UTCR0_2StpBit (UTCR0_SBS*1) /*  2 Stop Bits per frame          */
  277. #define UTCR0_DSS 0x00000008 /* Data Size Select                */
  278. #define UTCR0_7BitData (UTCR0_DSS*0) /*  7-Bit Data                     */
  279. #define UTCR0_8BitData (UTCR0_DSS*1) /*  8-Bit Data                     */
  280. #define UTCR0_SCE 0x00000010 /* Sample Clock Enable             */
  281.                           /* (ser. port 1: GPIO [18],        */
  282.                           /* ser. port 3: GPIO [20])         */
  283. #define UTCR0_RCE 0x00000020 /* Receive Clock Edge select       */
  284. #define UTCR0_RcRsEdg (UTCR0_RCE*0) /*  Receive clock Rising-Edge      */
  285. #define UTCR0_RcFlEdg (UTCR0_RCE*1) /*  Receive clock Falling-Edge     */
  286. #define UTCR0_TCE 0x00000040 /* Transmit Clock Edge select      */
  287. #define UTCR0_TrRsEdg (UTCR0_TCE*0) /*  Transmit clock Rising-Edge     */
  288. #define UTCR0_TrFlEdg (UTCR0_TCE*1) /*  Transmit clock Falling-Edge    */
  289. #define UTCR0_Ser2IrDA          /* Ser. port 2 IrDA settings       */ 
  290.                  (UTCR0_1StpBit + UTCR0_8BitData)
  291. #define UTCR1_BRD Fld (4, 0) /* Baud Rate Divisor/16 - 1 [11:8] */
  292. #define UTCR2_BRD Fld (8, 0) /* Baud Rate Divisor/16 - 1  [7:0] */
  293.                           /* fua = fxtl/(16*(BRD[11:0] + 1)) */
  294.                           /* Tua = 16*(BRD [11:0] + 1)*Txtl  */
  295. #define UTCR1_BdRtDiv(Div)       /*  Baud Rate Divisor [16..65536]  */ 
  296.                  (((Div) - 16)/16 >> FSize (UTCR2_BRD) << 
  297.                   FShft (UTCR1_BRD))
  298. #define UTCR2_BdRtDiv(Div)       /*  Baud Rate Divisor [16..65536]  */ 
  299.                  (((Div) - 16)/16 & FAlnMsk (UTCR2_BRD) << 
  300.                   FShft (UTCR2_BRD))
  301.                           /*  fua = fxtl/(16*Floor (Div/16)) */
  302.                           /*  Tua = 16*Floor (Div/16)*Txtl   */
  303. #define UTCR1_CeilBdRtDiv(Div)   /*  Ceil. of BdRtDiv [16..65536]   */ 
  304.                  (((Div) - 1)/16 >> FSize (UTCR2_BRD) << 
  305.                   FShft (UTCR1_BRD))
  306. #define UTCR2_CeilBdRtDiv(Div)   /*  Ceil. of BdRtDiv [16..65536]   */ 
  307.                  (((Div) - 1)/16 & FAlnMsk (UTCR2_BRD) << 
  308.                   FShft (UTCR2_BRD))
  309.                           /*  fua = fxtl/(16*Ceil (Div/16))  */
  310.                           /*  Tua = 16*Ceil (Div/16)*Txtl    */
  311. #define UTCR3_RXE 0x00000001 /* Receive Enable                  */
  312. #define UTCR3_TXE 0x00000002 /* Transmit Enable                 */
  313. #define UTCR3_BRK 0x00000004 /* BReaK mode                      */
  314. #define UTCR3_RIE 0x00000008 /* Receive FIFO 1/3-to-2/3-full or */
  315.                           /* more Interrupt Enable           */
  316. #define UTCR3_TIE 0x00000010 /* Transmit FIFO 1/2-full or less  */
  317.                           /* Interrupt Enable                */
  318. #define UTCR3_LBM 0x00000020 /* Look-Back Mode                  */
  319. #define UTCR3_Ser2IrDA          /* Ser. port 2 IrDA settings (RIE, */ 
  320.                           /* TIE, LBM can be set or cleared) */ 
  321.                  (UTCR3_RXE + UTCR3_TXE)
  322. #define UTCR4_HSE 0x00000001 /* Hewlett-Packard Serial InfraRed */
  323.                           /* (HP-SIR) modulation Enable      */
  324. #define UTCR4_NRZ (UTCR4_HSE*0) /*  Non-Return to Zero modulation  */
  325. #define UTCR4_HPSIR (UTCR4_HSE*1) /*  HP-SIR modulation              */
  326. #define UTCR4_LPM 0x00000002 /* Low-Power Mode                  */
  327. #define UTCR4_Z3_16Bit (UTCR4_LPM*0) /*  Zero pulse = 3/16 Bit time     */
  328. #define UTCR4_Z1_6us (UTCR4_LPM*1) /*  Zero pulse = 1.6 us            */
  329. #define UTDR_DATA Fld (8, 0) /* receive/transmit DATA FIFOs     */
  330. #if 0                     /* Hidden receive FIFO bits        */
  331. #define UTDR_PRE 0x00000100 /*  receive PaRity Error (read)    */
  332. #define UTDR_FRE 0x00000200 /*  receive FRaming Error (read)   */
  333. #define UTDR_ROR 0x00000400 /*  Receive FIFO Over-Run (read)   */
  334. #endif /* 0 */
  335. #define UTSR0_TFS 0x00000001 /* Transmit FIFO 1/2-full or less  */
  336.                           /* Service request (read)          */
  337. #define UTSR0_RFS 0x00000002 /* Receive FIFO 1/3-to-2/3-full or */
  338.                           /* more Service request (read)     */
  339. #define UTSR0_RID 0x00000004 /* Receiver IDle                   */
  340. #define UTSR0_RBB 0x00000008 /* Receive Beginning of Break      */
  341. #define UTSR0_REB 0x00000010 /* Receive End of Break            */
  342. #define UTSR0_EIF 0x00000020 /* Error In FIFO (read)            */
  343. #define UTSR1_TBY 0x00000001 /* Transmitter BusY (read)         */
  344. #define UTSR1_RNE 0x00000002 /* Receive FIFO Not Empty (read)   */
  345. #define UTSR1_TNF 0x00000004 /* Transmit FIFO Not Full (read)   */
  346. #define UTSR1_PRE 0x00000008 /* receive PaRity Error (read)     */
  347. #define UTSR1_FRE 0x00000010 /* receive FRaming Error (read)    */
  348. #define UTSR1_ROR 0x00000020 /* Receive FIFO Over-Run (read)    */
  349. /*
  350.  * Synchronous Data Link Controller (SDLC) control registers
  351.  *
  352.  * Registers
  353.  *    Ser1SDCR0  Serial port 1 Synchronous Data Link Controller (SDLC)
  354.  *               Control Register 0 (read/write).
  355.  *    Ser1SDCR1  Serial port 1 Synchronous Data Link Controller (SDLC)
  356.  *               Control Register 1 (read/write).
  357.  *    Ser1SDCR2  Serial port 1 Synchronous Data Link Controller (SDLC)
  358.  *               Control Register 2 (read/write).
  359.  *    Ser1SDCR3  Serial port 1 Synchronous Data Link Controller (SDLC)
  360.  *               Control Register 3 (read/write).
  361.  *    Ser1SDCR4  Serial port 1 Synchronous Data Link Controller (SDLC)
  362.  *               Control Register 4 (read/write).
  363.  *    Ser1SDDR   Serial port 1 Synchronous Data Link Controller (SDLC)
  364.  *               Data Register (read/write).
  365.  *    Ser1SDSR0  Serial port 1 Synchronous Data Link Controller (SDLC)
  366.  *               Status Register 0 (read/write).
  367.  *    Ser1SDSR1  Serial port 1 Synchronous Data Link Controller (SDLC)
  368.  *               Status Register 1 (read/write).
  369.  *
  370.  * Clocks
  371.  *    fxtl, Txtl Frequency, period of the system crystal (3.6864 MHz
  372.  *               or 3.5795 MHz).
  373.  *    fsd, Tsd   Frequency, period of the SDLC communication.
  374.  */
  375. #define Ser1SDCR0 __REG(0x80020060)  /* Ser. port 1 SDLC Control Reg. 0 */
  376. #define Ser1SDCR1 __REG(0x80020064)  /* Ser. port 1 SDLC Control Reg. 1 */
  377. #define Ser1SDCR2 __REG(0x80020068)  /* Ser. port 1 SDLC Control Reg. 2 */
  378. #define Ser1SDCR3 __REG(0x8002006C)  /* Ser. port 1 SDLC Control Reg. 3 */
  379. #define Ser1SDCR4 __REG(0x80020070)  /* Ser. port 1 SDLC Control Reg. 4 */
  380. #define Ser1SDDR __REG(0x80020078)  /* Ser. port 1 SDLC Data Reg.      */
  381. #define Ser1SDSR0 __REG(0x80020080)  /* Ser. port 1 SDLC Status Reg. 0  */
  382. #define Ser1SDSR1 __REG(0x80020084)  /* Ser. port 1 SDLC Status Reg. 1  */
  383. #define SDCR0_SUS 0x00000001 /* SDLC/UART Select                */
  384. #define SDCR0_SDLC (SDCR0_SUS*0) /*  SDLC mode (TXD1 & RXD1)        */
  385. #define SDCR0_UART (SDCR0_SUS*1) /*  UART mode (TXD1 & RXD1)        */
  386. #define SDCR0_SDF 0x00000002 /* Single/Double start Flag select */
  387. #define SDCR0_SglFlg (SDCR0_SDF*0) /*  Single start Flag              */
  388. #define SDCR0_DblFlg (SDCR0_SDF*1) /*  Double start Flag              */
  389. #define SDCR0_LBM 0x00000004 /* Look-Back Mode                  */
  390. #define SDCR0_BMS 0x00000008 /* Bit Modulation Select           */
  391. #define SDCR0_FM0 (SDCR0_BMS*0) /*  Freq. Modulation zero (0)      */
  392. #define SDCR0_NRZ (SDCR0_BMS*1) /*  Non-Return to Zero modulation  */
  393. #define SDCR0_SCE 0x00000010 /* Sample Clock Enable (GPIO [16]) */
  394. #define SDCR0_SCD 0x00000020 /* Sample Clock Direction select   */
  395.                           /* (GPIO [16])                     */
  396. #define SDCR0_SClkIn (SDCR0_SCD*0) /*  Sample Clock Input             */
  397. #define SDCR0_SClkOut (SDCR0_SCD*1) /*  Sample Clock Output            */
  398. #define SDCR0_RCE 0x00000040 /* Receive Clock Edge select       */
  399. #define SDCR0_RcRsEdg (SDCR0_RCE*0) /*  Receive clock Rising-Edge      */
  400. #define SDCR0_RcFlEdg (SDCR0_RCE*1) /*  Receive clock Falling-Edge     */
  401. #define SDCR0_TCE 0x00000080 /* Transmit Clock Edge select      */
  402. #define SDCR0_TrRsEdg (SDCR0_TCE*0) /*  Transmit clock Rising-Edge     */
  403. #define SDCR0_TrFlEdg (SDCR0_TCE*1) /*  Transmit clock Falling-Edge    */
  404. #define SDCR1_AAF 0x00000001 /* Abort After Frame enable        */
  405.                           /* (GPIO [17])                     */
  406. #define SDCR1_TXE 0x00000002 /* Transmit Enable                 */
  407. #define SDCR1_RXE 0x00000004 /* Receive Enable                  */
  408. #define SDCR1_RIE 0x00000008 /* Receive FIFO 1/3-to-2/3-full or */
  409.                           /* more Interrupt Enable           */
  410. #define SDCR1_TIE 0x00000010 /* Transmit FIFO 1/2-full or less  */
  411.                           /* Interrupt Enable                */
  412. #define SDCR1_AME 0x00000020 /* Address Match Enable            */
  413. #define SDCR1_TUS 0x00000040 /* Transmit FIFO Under-run Select  */
  414. #define SDCR1_EFrmURn (SDCR1_TUS*0) /*  End Frame on Under-Run         */
  415. #define SDCR1_AbortURn (SDCR1_TUS*1) /*  Abort on Under-Run             */
  416. #define SDCR1_RAE 0x00000080 /* Receive Abort interrupt Enable  */
  417. #define SDCR2_AMV Fld (8, 0) /* Address Match Value             */
  418. #define SDCR3_BRD Fld (4, 0) /* Baud Rate Divisor/16 - 1 [11:8] */
  419. #define SDCR4_BRD Fld (8, 0) /* Baud Rate Divisor/16 - 1  [7:0] */
  420.                           /* fsd = fxtl/(16*(BRD[11:0] + 1)) */
  421.                           /* Tsd = 16*(BRD[11:0] + 1)*Txtl   */
  422. #define SDCR3_BdRtDiv(Div)       /*  Baud Rate Divisor [16..65536]  */ 
  423.                  (((Div) - 16)/16 >> FSize (SDCR4_BRD) << 
  424.                   FShft (SDCR3_BRD))
  425. #define SDCR4_BdRtDiv(Div)       /*  Baud Rate Divisor [16..65536]  */ 
  426.                  (((Div) - 16)/16 & FAlnMsk (SDCR4_BRD) << 
  427.                   FShft (SDCR4_BRD))
  428.                           /*  fsd = fxtl/(16*Floor (Div/16)) */
  429.                           /*  Tsd = 16*Floor (Div/16)*Txtl   */
  430. #define SDCR3_CeilBdRtDiv(Div)   /*  Ceil. of BdRtDiv [16..65536]   */ 
  431.                  (((Div) - 1)/16 >> FSize (SDCR4_BRD) << 
  432.                   FShft (SDCR3_BRD))
  433. #define SDCR4_CeilBdRtDiv(Div)   /*  Ceil. of BdRtDiv [16..65536]   */ 
  434.                  (((Div) - 1)/16 & FAlnMsk (SDCR4_BRD) << 
  435.                   FShft (SDCR4_BRD))
  436.                           /*  fsd = fxtl/(16*Ceil (Div/16))  */
  437.                           /*  Tsd = 16*Ceil (Div/16)*Txtl    */
  438. #define SDDR_DATA Fld (8, 0) /* receive/transmit DATA FIFOs     */
  439. #if 0                     /* Hidden receive FIFO bits        */
  440. #define SDDR_EOF 0x00000100 /*  receive End-Of-Frame (read)    */
  441. #define SDDR_CRE 0x00000200 /*  receive CRC Error (read)       */
  442. #define SDDR_ROR 0x00000400 /*  Receive FIFO Over-Run (read)   */
  443. #endif /* 0 */
  444. #define SDSR0_EIF 0x00000001 /* Error In FIFO (read)            */
  445. #define SDSR0_TUR 0x00000002 /* Transmit FIFO Under-Run         */
  446. #define SDSR0_RAB 0x00000004 /* Receive ABort                   */
  447. #define SDSR0_TFS 0x00000008 /* Transmit FIFO 1/2-full or less  */
  448.                           /* Service request (read)          */
  449. #define SDSR0_RFS 0x00000010 /* Receive FIFO 1/3-to-2/3-full or */
  450.                           /* more Service request (read)     */
  451. #define SDSR1_RSY 0x00000001 /* Receiver SYnchronized (read)    */
  452. #define SDSR1_TBY 0x00000002 /* Transmitter BusY (read)         */
  453. #define SDSR1_RNE 0x00000004 /* Receive FIFO Not Empty (read)   */
  454. #define SDSR1_TNF 0x00000008 /* Transmit FIFO Not Full (read)   */
  455. #define SDSR1_RTD 0x00000010 /* Receive Transition Detected     */
  456. #define SDSR1_EOF 0x00000020 /* receive End-Of-Frame (read)     */
  457. #define SDSR1_CRE 0x00000040 /* receive CRC Error (read)        */
  458. #define SDSR1_ROR 0x00000080 /* Receive FIFO Over-Run (read)    */
  459. /*
  460.  * High-Speed Serial to Parallel controller (HSSP) control registers
  461.  *
  462.  * Registers
  463.  *    Ser2HSCR0  Serial port 2 High-Speed Serial to Parallel
  464.  *               controller (HSSP) Control Register 0 (read/write).
  465.  *    Ser2HSCR1  Serial port 2 High-Speed Serial to Parallel
  466.  *               controller (HSSP) Control Register 1 (read/write).
  467.  *    Ser2HSDR   Serial port 2 High-Speed Serial to Parallel
  468.  *               controller (HSSP) Data Register (read/write).
  469.  *    Ser2HSSR0  Serial port 2 High-Speed Serial to Parallel
  470.  *               controller (HSSP) Status Register 0 (read/write).
  471.  *    Ser2HSSR1  Serial port 2 High-Speed Serial to Parallel
  472.  *               controller (HSSP) Status Register 1 (read).
  473.  *    Ser2HSCR2  Serial port 2 High-Speed Serial to Parallel
  474.  *               controller (HSSP) Control Register 2 (read/write).
  475.  *               [The HSCR2 register is only implemented in
  476.  *               versions 2.0 (rev. = 8) and higher of the StrongARM
  477.  *               SA-1100.]
  478.  */
  479. #define Ser2HSCR0 __REG(0x80040060)  /* Ser. port 2 HSSP Control Reg. 0 */
  480. #define Ser2HSCR1 __REG(0x80040064)  /* Ser. port 2 HSSP Control Reg. 1 */
  481. #define Ser2HSDR __REG(0x8004006C)  /* Ser. port 2 HSSP Data Reg.      */
  482. #define Ser2HSSR0 __REG(0x80040074)  /* Ser. port 2 HSSP Status Reg. 0  */
  483. #define Ser2HSSR1 __REG(0x80040078)  /* Ser. port 2 HSSP Status Reg. 1  */
  484. #define Ser2HSCR2 __REG(0x90060028)  /* Ser. port 2 HSSP Control Reg. 2 */
  485. #define HSCR0_ITR 0x00000001 /* IrDA Transmission Rate          */
  486. #define HSCR0_UART (HSCR0_ITR*0) /*  UART mode (115.2 kb/s if IrDA) */
  487. #define HSCR0_HSSP (HSCR0_ITR*1) /*  HSSP mode (4 Mb/s)             */
  488. #define HSCR0_LBM 0x00000002 /* Look-Back Mode                  */
  489. #define HSCR0_TUS 0x00000004 /* Transmit FIFO Under-run Select  */
  490. #define HSCR0_EFrmURn (HSCR0_TUS*0) /*  End Frame on Under-Run         */
  491. #define HSCR0_AbortURn (HSCR0_TUS*1) /*  Abort on Under-Run             */
  492. #define HSCR0_TXE 0x00000008 /* Transmit Enable                 */
  493. #define HSCR0_RXE 0x00000010 /* Receive Enable                  */
  494. #define HSCR0_RIE 0x00000020 /* Receive FIFO 2/5-to-3/5-full or */
  495.                           /* more Interrupt Enable           */
  496. #define HSCR0_TIE 0x00000040 /* Transmit FIFO 1/2-full or less  */
  497.                           /* Interrupt Enable                */
  498. #define HSCR0_AME 0x00000080 /* Address Match Enable            */
  499. #define HSCR1_AMV Fld (8, 0) /* Address Match Value             */
  500. #define HSDR_DATA Fld (8, 0) /* receive/transmit DATA FIFOs     */
  501. #if 0                     /* Hidden receive FIFO bits        */
  502. #define HSDR_EOF 0x00000100 /*  receive End-Of-Frame (read)    */
  503. #define HSDR_CRE 0x00000200 /*  receive CRC Error (read)       */
  504. #define HSDR_ROR 0x00000400 /*  Receive FIFO Over-Run (read)   */
  505. #endif /* 0 */
  506. #define HSSR0_EIF 0x00000001 /* Error In FIFO (read)            */
  507. #define HSSR0_TUR 0x00000002 /* Transmit FIFO Under-Run         */
  508. #define HSSR0_RAB 0x00000004 /* Receive ABort                   */
  509. #define HSSR0_TFS 0x00000008 /* Transmit FIFO 1/2-full or less  */
  510.                           /* Service request (read)          */
  511. #define HSSR0_RFS 0x00000010 /* Receive FIFO 2/5-to-3/5-full or */
  512.                           /* more Service request (read)     */
  513. #define HSSR0_FRE 0x00000020 /* receive FRaming Error           */
  514. #define HSSR1_RSY 0x00000001 /* Receiver SYnchronized (read)    */
  515. #define HSSR1_TBY 0x00000002 /* Transmitter BusY (read)         */
  516. #define HSSR1_RNE 0x00000004 /* Receive FIFO Not Empty (read)   */
  517. #define HSSR1_TNF 0x00000008 /* Transmit FIFO Not Full (read)   */
  518. #define HSSR1_EOF 0x00000010 /* receive End-Of-Frame (read)     */
  519. #define HSSR1_CRE 0x00000020 /* receive CRC Error (read)        */
  520. #define HSSR1_ROR 0x00000040 /* Receive FIFO Over-Run (read)    */
  521. #define HSCR2_TXP 0x00040000 /* Transmit data Polarity (TXD_2)  */
  522. #define HSCR2_TrDataL (HSCR2_TXP*0) /*  Transmit Data active Low       */
  523.                           /*  (inverted)                     */
  524. #define HSCR2_TrDataH (HSCR2_TXP*1) /*  Transmit Data active High      */
  525.                           /*  (non-inverted)                 */
  526. #define HSCR2_RXP 0x00080000 /* Receive data Polarity (RXD_2)   */
  527. #define HSCR2_RcDataL (HSCR2_RXP*0) /*  Receive Data active Low        */
  528.                           /*  (inverted)                     */
  529. #define HSCR2_RcDataH (HSCR2_RXP*1) /*  Receive Data active High       */
  530.                           /*  (non-inverted)                 */
  531. /*
  532.  * Multi-media Communications Port (MCP) control registers
  533.  *
  534.  * Registers
  535.  *    Ser4MCCR0  Serial port 4 Multi-media Communications Port (MCP)
  536.  *               Control Register 0 (read/write).
  537.  *    Ser4MCDR0  Serial port 4 Multi-media Communications Port (MCP)
  538.  *               Data Register 0 (audio, read/write).
  539.  *    Ser4MCDR1  Serial port 4 Multi-media Communications Port (MCP)
  540.  *               Data Register 1 (telecom, read/write).
  541.  *    Ser4MCDR2  Serial port 4 Multi-media Communications Port (MCP)
  542.  *               Data Register 2 (CODEC registers, read/write).
  543.  *    Ser4MCSR   Serial port 4 Multi-media Communications Port (MCP)
  544.  *               Status Register (read/write).
  545.  *    Ser4MCCR1  Serial port 4 Multi-media Communications Port (MCP)
  546.  *               Control Register 1 (read/write).
  547.  *               [The MCCR1 register is only implemented in
  548.  *               versions 2.0 (rev. = 8) and higher of the StrongARM
  549.  *               SA-1100.]
  550.  *
  551.  * Clocks
  552.  *    fmc, Tmc   Frequency, period of the MCP communication (10 MHz,
  553.  *               12 MHz, or GPIO [21]).
  554.  *    faud, Taud Frequency, period of the audio sampling.
  555.  *    ftcm, Ttcm Frequency, period of the telecom sampling.
  556.  */
  557. #define Ser4MCCR0 __REG(0x80060000)  /* Ser. port 4 MCP Control Reg. 0 */
  558. #define Ser4MCDR0 __REG(0x80060008)  /* Ser. port 4 MCP Data Reg. 0 (audio) */
  559. #define Ser4MCDR1 __REG(0x8006000C)  /* Ser. port 4 MCP Data Reg. 1 (telecom) */
  560. #define Ser4MCDR2 __REG(0x80060010)  /* Ser. port 4 MCP Data Reg. 2 (CODEC reg.) */
  561. #define Ser4MCSR __REG(0x80060018)  /* Ser. port 4 MCP Status Reg. */
  562. #define Ser4MCCR1 __REG(0x90060030)  /* Ser. port 4 MCP Control Reg. 1 */
  563. #define MCCR0_ASD Fld (7, 0) /* Audio Sampling rate Divisor/32  */
  564.                           /* [6..127]                        */
  565.                           /* faud = fmc/(32*ASD)             */
  566.                           /* Taud = 32*ASD*Tmc               */
  567. #define MCCR0_AudSmpDiv(Div)     /*  Audio Sampling rate Divisor    */ 
  568.                           /*  [192..4064]                    */ 
  569.                  ((Div)/32 << FShft (MCCR0_ASD))
  570.                           /*  faud = fmc/(32*Floor (Div/32)) */
  571.                           /*  Taud = 32*Floor (Div/32)*Tmc   */
  572. #define MCCR0_CeilAudSmpDiv(Div) /*  Ceil. of AudSmpDiv [192..4064] */ 
  573.                  (((Div) + 31)/32 << FShft (MCCR0_ASD))
  574.                           /*  faud = fmc/(32*Ceil (Div/32))  */
  575.                           /*  Taud = 32*Ceil (Div/32)*Tmc    */
  576. #define MCCR0_TSD Fld (7, 8) /* Telecom Sampling rate           */
  577.                           /* Divisor/32 [16..127]            */
  578.                           /* ftcm = fmc/(32*TSD)             */
  579.                           /* Ttcm = 32*TSD*Tmc               */
  580. #define MCCR0_TcmSmpDiv(Div)     /*  Telecom Sampling rate Divisor  */ 
  581.                           /*  [512..4064]                    */ 
  582.                  ((Div)/32 << FShft (MCCR0_TSD))
  583.                           /*  ftcm = fmc/(32*Floor (Div/32)) */
  584.                           /*  Ttcm = 32*Floor (Div/32)*Tmc   */
  585. #define MCCR0_CeilTcmSmpDiv(Div) /*  Ceil. of TcmSmpDiv [512..4064] */ 
  586.                  (((Div) + 31)/32 << FShft (MCCR0_TSD))
  587.                           /*  ftcm = fmc/(32*Ceil (Div/32))  */
  588.                           /*  Ttcm = 32*Ceil (Div/32)*Tmc    */
  589. #define MCCR0_MCE 0x00010000 /* MCP Enable                      */
  590. #define MCCR0_ECS 0x00020000 /* External Clock Select           */
  591. #define MCCR0_IntClk (MCCR0_ECS*0) /*  Internal Clock (10 or 12 MHz)  */
  592. #define MCCR0_ExtClk (MCCR0_ECS*1) /*  External Clock (GPIO [21])     */
  593. #define MCCR0_ADM 0x00040000 /* A/D (audio/telecom) data        */
  594.                           /* sampling/storing Mode           */
  595. #define MCCR0_VldBit (MCCR0_ADM*0) /*  Valid Bit storing mode         */
  596. #define MCCR0_SmpCnt (MCCR0_ADM*1) /*  Sampling Counter storing mode  */
  597. #define MCCR0_TTE 0x00080000 /* Telecom Transmit FIFO 1/2-full  */
  598.                           /* or less interrupt Enable        */
  599. #define MCCR0_TRE 0x00100000 /* Telecom Receive FIFO 1/2-full   */
  600.                           /* or more interrupt Enable        */
  601. #define MCCR0_ATE 0x00200000 /* Audio Transmit FIFO 1/2-full    */
  602.                           /* or less interrupt Enable        */
  603. #define MCCR0_ARE 0x00400000 /* Audio Receive FIFO 1/2-full or  */
  604.                           /* more interrupt Enable           */
  605. #define MCCR0_LBM 0x00800000 /* Look-Back Mode                  */
  606. #define MCCR0_ECP Fld (2, 24) /* External Clock Prescaler - 1    */
  607. #define MCCR0_ExtClkDiv(Div)     /*  External Clock Divisor [1..4]  */ 
  608.                  (((Div) - 1) << FShft (MCCR0_ECP))
  609. #define MCDR0_DATA Fld (12, 4) /* receive/transmit audio DATA     */
  610.                           /* FIFOs                           */
  611. #define MCDR1_DATA Fld (14, 2) /* receive/transmit telecom DATA   */
  612.                           /* FIFOs                           */
  613.                           /* receive/transmit CODEC reg.     */
  614.                           /* FIFOs:                          */
  615. #define MCDR2_DATA Fld (16, 0) /*  reg. DATA                      */
  616. #define MCDR2_RW 0x00010000 /*  reg. Read/Write (transmit)     */
  617. #define MCDR2_Rd (MCDR2_RW*0) /*   reg. Read                     */
  618. #define MCDR2_Wr (MCDR2_RW*1) /*   reg. Write                    */
  619. #define MCDR2_ADD Fld (4, 17) /*  reg. ADDress                   */
  620. #define MCSR_ATS 0x00000001 /* Audio Transmit FIFO 1/2-full    */
  621.                           /* or less Service request (read)  */
  622. #define MCSR_ARS 0x00000002 /* Audio Receive FIFO 1/2-full or  */
  623.                           /* more Service request (read)     */
  624. #define MCSR_TTS 0x00000004 /* Telecom Transmit FIFO 1/2-full  */
  625.                           /* or less Service request (read)  */
  626. #define MCSR_TRS 0x00000008 /* Telecom Receive FIFO 1/2-full   */
  627.                           /* or more Service request (read)  */
  628. #define MCSR_ATU 0x00000010 /* Audio Transmit FIFO Under-run   */
  629. #define MCSR_ARO 0x00000020 /* Audio Receive FIFO Over-run     */
  630. #define MCSR_TTU 0x00000040 /* Telecom Transmit FIFO Under-run */
  631. #define MCSR_TRO 0x00000080 /* Telecom Receive FIFO Over-run   */
  632. #define MCSR_ANF 0x00000100 /* Audio transmit FIFO Not Full    */
  633.                           /* (read)                          */
  634. #define MCSR_ANE 0x00000200 /* Audio receive FIFO Not Empty    */
  635.                           /* (read)                          */
  636. #define MCSR_TNF 0x00000400 /* Telecom transmit FIFO Not Full  */
  637.                           /* (read)                          */
  638. #define MCSR_TNE 0x00000800 /* Telecom receive FIFO Not Empty  */
  639.                           /* (read)                          */
  640. #define MCSR_CWC 0x00001000 /* CODEC register Write Completed  */
  641.                           /* (read)                          */
  642. #define MCSR_CRC 0x00002000 /* CODEC register Read Completed   */
  643.                           /* (read)                          */
  644. #define MCSR_ACE 0x00004000 /* Audio CODEC Enabled (read)      */
  645. #define MCSR_TCE 0x00008000 /* Telecom CODEC Enabled (read)    */
  646. #define MCCR1_CFS 0x00100000 /* Clock Freq. Select              */
  647. #define MCCR1_F12MHz (MCCR1_CFS*0) /*  Freq. (fmc) = ~ 12 MHz         */
  648.                           /*  (11.981 MHz)                   */
  649. #define MCCR1_F10MHz (MCCR1_CFS*1) /*  Freq. (fmc) = ~ 10 MHz         */
  650.                           /*  (9.585 MHz)                    */
  651. /*
  652.  * Synchronous Serial Port (SSP) control registers
  653.  *
  654.  * Registers
  655.  *    Ser4SSCR0  Serial port 4 Synchronous Serial Port (SSP) Control
  656.  *               Register 0 (read/write).
  657.  *    Ser4SSCR1  Serial port 4 Synchronous Serial Port (SSP) Control
  658.  *               Register 1 (read/write).
  659.  *               [Bits SPO and SP are only implemented in versions 2.0
  660.  *               (rev. = 8) and higher of the StrongARM SA-1100.]
  661.  *    Ser4SSDR   Serial port 4 Synchronous Serial Port (SSP) Data
  662.  *               Register (read/write).
  663.  *    Ser4SSSR   Serial port 4 Synchronous Serial Port (SSP) Status
  664.  *               Register (read/write).
  665.  *
  666.  * Clocks
  667.  *    fxtl, Txtl Frequency, period of the system crystal (3.6864 MHz
  668.  *               or 3.5795 MHz).
  669.  *    fss, Tss   Frequency, period of the SSP communication.
  670.  */
  671. #define Ser4SSCR0 __REG(0x80070060)  /* Ser. port 4 SSP Control Reg. 0 */
  672. #define Ser4SSCR1 __REG(0x80070064)  /* Ser. port 4 SSP Control Reg. 1 */
  673. #define Ser4SSDR __REG(0x8007006C)  /* Ser. port 4 SSP Data Reg. */
  674. #define Ser4SSSR __REG(0x80070074)  /* Ser. port 4 SSP Status Reg. */
  675. #define SSCR0_DSS Fld (4, 0) /* Data Size - 1 Select [3..15]    */
  676. #define SSCR0_DataSize(Size)     /*  Data Size Select [4..16]       */ 
  677.                  (((Size) - 1) << FShft (SSCR0_DSS))
  678. #define SSCR0_FRF Fld (2, 4) /* FRame Format                    */
  679. #define SSCR0_Motorola          /*  Motorola Serial Peripheral     */ 
  680.                           /*  Interface (SPI) format         */ 
  681.                  (0 << FShft (SSCR0_FRF))
  682. #define SSCR0_TI          /*  Texas Instruments Synchronous  */ 
  683.                           /*  Serial format                  */ 
  684.                  (1 << FShft (SSCR0_FRF))
  685. #define SSCR0_National          /*  National Microwire format      */ 
  686.                  (2 << FShft (SSCR0_FRF))
  687. #define SSCR0_SSE 0x00000080 /* SSP Enable                      */
  688. #define SSCR0_SCR Fld (8, 8) /* Serial Clock Rate divisor/2 - 1 */
  689.                           /* fss = fxtl/(2*(SCR + 1))        */
  690.                           /* Tss = 2*(SCR + 1)*Txtl          */
  691. #define SSCR0_SerClkDiv(Div)     /*  Serial Clock Divisor [2..512]  */ 
  692.                  (((Div) - 2)/2 << FShft (SSCR0_SCR))
  693.                           /*  fss = fxtl/(2*Floor (Div/2))   */
  694.                           /*  Tss = 2*Floor (Div/2)*Txtl     */
  695. #define SSCR0_CeilSerClkDiv(Div) /*  Ceil. of SerClkDiv [2..512]    */ 
  696.                  (((Div) - 1)/2 << FShft (SSCR0_SCR))
  697.                           /*  fss = fxtl/(2*Ceil (Div/2))    */
  698.                           /*  Tss = 2*Ceil (Div/2)*Txtl      */
  699. #define SSCR1_RIE 0x00000001 /* Receive FIFO 1/2-full or more   */
  700.                           /* Interrupt Enable                */
  701. #define SSCR1_TIE 0x00000002 /* Transmit FIFO 1/2-full or less  */
  702.                           /* Interrupt Enable                */
  703. #define SSCR1_LBM 0x00000004 /* Look-Back Mode                  */
  704. #define SSCR1_SPO 0x00000008 /* Sample clock (SCLK) POlarity    */
  705. #define SSCR1_SClkIactL (SSCR1_SPO*0) /*  Sample Clock Inactive Low      */
  706. #define SSCR1_SClkIactH (SSCR1_SPO*1) /*  Sample Clock Inactive High     */
  707. #define SSCR1_SP 0x00000010 /* Sample clock (SCLK) Phase       */
  708. #define SSCR1_SClk1P (SSCR1_SP*0) /*  Sample Clock active 1 Period   */
  709.                           /*  after frame (SFRM, 1st edge)   */
  710. #define SSCR1_SClk1_2P (SSCR1_SP*1) /*  Sample Clock active 1/2 Period */
  711.                           /*  after frame (SFRM, 1st edge)   */
  712. #define SSCR1_ECS 0x00000020 /* External Clock Select           */
  713. #define SSCR1_IntClk (SSCR1_ECS*0) /*  Internal Clock                 */
  714. #define SSCR1_ExtClk (SSCR1_ECS*1) /*  External Clock (GPIO [19])     */
  715. #define SSDR_DATA Fld (16, 0) /* receive/transmit DATA FIFOs     */
  716. #define SSSR_TNF 0x00000002 /* Transmit FIFO Not Full (read)   */
  717. #define SSSR_RNE 0x00000004 /* Receive FIFO Not Empty (read)   */
  718. #define SSSR_BSY 0x00000008 /* SSP BuSY (read)                 */
  719. #define SSSR_TFS 0x00000010 /* Transmit FIFO 1/2-full or less  */
  720.                           /* Service request (read)          */
  721. #define SSSR_RFS 0x00000020 /* Receive FIFO 1/2-full or more   */
  722.                           /* Service request (read)          */
  723. #define SSSR_ROR 0x00000040 /* Receive FIFO Over-Run           */
  724. /*
  725.  * Operating System (OS) timer control registers
  726.  *
  727.  * Registers
  728.  *    OSMR0      Operating System (OS) timer Match Register 0
  729.  *               (read/write).
  730.  *    OSMR1      Operating System (OS) timer Match Register 1
  731.  *               (read/write).
  732.  *    OSMR2      Operating System (OS) timer Match Register 2
  733.  *               (read/write).
  734.  *    OSMR3      Operating System (OS) timer Match Register 3
  735.  *               (read/write).
  736.  *    OSCR       Operating System (OS) timer Counter Register
  737.  *               (read/write).
  738.  *    OSSR       Operating System (OS) timer Status Register
  739.  *               (read/write).
  740.  *    OWER       Operating System (OS) timer Watch-dog Enable Register
  741.  *               (read/write).
  742.  *    OIER       Operating System (OS) timer Interrupt Enable Register
  743.  *               (read/write).
  744.  */
  745. #define OSMR0   __REG(0x90000000)  /* OS timer Match Reg. 0 */
  746. #define OSMR1   __REG(0x90000004)  /* OS timer Match Reg. 1 */
  747. #define OSMR2   __REG(0x90000008)  /* OS timer Match Reg. 2 */
  748. #define OSMR3   __REG(0x9000000c)  /* OS timer Match Reg. 3 */
  749. #define OSCR    __REG(0x90000010)  /* OS timer Counter Reg. */
  750. #define OSSR    __REG(0x90000014 )  /* OS timer Status Reg. */
  751. #define OWER    __REG(0x90000018 )  /* OS timer Watch-dog Enable Reg. */
  752. #define OIER    __REG(0x9000001C )  /* OS timer Interrupt Enable Reg. */
  753. #define OSSR_M(Nb)          /* Match detected [0..3]           */ 
  754.                  (0x00000001 << (Nb))
  755. #define OSSR_M0  OSSR_M (0) /* Match detected 0                */
  756. #define OSSR_M1  OSSR_M (1) /* Match detected 1                */
  757. #define OSSR_M2  OSSR_M (2) /* Match detected 2                */
  758. #define OSSR_M3  OSSR_M (3) /* Match detected 3                */
  759. #define OWER_WME 0x00000001 /* Watch-dog Match Enable          */
  760.                           /* (set only)                      */
  761. #define OIER_E(Nb)          /* match interrupt Enable [0..3]   */ 
  762.                  (0x00000001 << (Nb))
  763. #define OIER_E0  OIER_E (0) /* match interrupt Enable 0        */
  764. #define OIER_E1  OIER_E (1) /* match interrupt Enable 1        */
  765. #define OIER_E2  OIER_E (2) /* match interrupt Enable 2        */
  766. #define OIER_E3  OIER_E (3) /* match interrupt Enable 3        */
  767. /*
  768.  * Real-Time Clock (RTC) control registers
  769.  *
  770.  * Registers
  771.  *    RTAR       Real-Time Clock (RTC) Alarm Register (read/write).
  772.  *    RCNR       Real-Time Clock (RTC) CouNt Register (read/write).
  773.  *    RTTR       Real-Time Clock (RTC) Trim Register (read/write).
  774.  *    RTSR       Real-Time Clock (RTC) Status Register (read/write).
  775.  *
  776.  * Clocks
  777.  *    frtx, Trtx Frequency, period of the real-time clock crystal
  778.  *               (32.768 kHz nominal).
  779.  *    frtc, Trtc Frequency, period of the real-time clock counter
  780.  *               (1 Hz nominal).
  781.  */
  782. #define RTAR __REG(0x90010000)  /* RTC Alarm Reg. */
  783. #define RCNR __REG(0x90010004)  /* RTC CouNt Reg. */
  784. #define RTTR __REG(0x90010008)  /* RTC Trim Reg. */
  785. #define RTSR __REG(0x90010010)  /* RTC Status Reg. */
  786. #define RTTR_C   Fld (16, 0) /* clock divider Count - 1         */
  787. #define RTTR_D   Fld (10, 16) /* trim Delete count               */
  788.                           /* frtc = (1023*(C + 1) - D)*frtx/ */
  789.                           /*        (1023*(C + 1)^2)         */
  790.                           /* Trtc = (1023*(C + 1)^2)*Trtx/   */
  791.                           /*        (1023*(C + 1) - D)       */
  792. #define RTSR_AL  0x00000001 /* ALarm detected                  */
  793. #define RTSR_HZ  0x00000002 /* 1 Hz clock detected             */
  794. #define RTSR_ALE 0x00000004 /* ALarm interrupt Enable          */
  795. #define RTSR_HZE 0x00000008 /* 1 Hz clock interrupt Enable     */
  796. /*
  797.  * Power Manager (PM) control registers
  798.  *
  799.  * Registers
  800.  *    PMCR       Power Manager (PM) Control Register (read/write).
  801.  *    PSSR       Power Manager (PM) Sleep Status Register (read/write).
  802.  *    PSPR       Power Manager (PM) Scratch-Pad Register (read/write).
  803.  *    PWER       Power Manager (PM) Wake-up Enable Register
  804.  *               (read/write).
  805.  *    PCFR       Power Manager (PM) general ConFiguration Register
  806.  *               (read/write).
  807.  *    PPCR       Power Manager (PM) Phase-Locked Loop (PLL)
  808.  *               Configuration Register (read/write).
  809.  *    PGSR       Power Manager (PM) General-Purpose Input/Output (GPIO)
  810.  *               Sleep state Register (read/write, see GPIO pins).
  811.  *    POSR       Power Manager (PM) Oscillator Status Register (read).
  812.  *
  813.  * Clocks
  814.  *    fxtl, Txtl Frequency, period of the system crystal (3.6864 MHz
  815.  *               or 3.5795 MHz).
  816.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  817.  */
  818. #define PMCR __REG(0x90020000)  /* PM Control Reg. */
  819. #define PSSR __REG(0x90020004)  /* PM Sleep Status Reg. */
  820. #define PSPR __REG(0x90020008)  /* PM Scratch-Pad Reg. */
  821. #define PWER __REG(0x9002000C)  /* PM Wake-up Enable Reg. */
  822. #define PCFR __REG(0x90020010)  /* PM general ConFiguration Reg. */
  823. #define PPCR __REG(0x90020014)  /* PM PLL Configuration Reg. */
  824. #define PGSR __REG(0x90020018)  /* PM GPIO Sleep state Reg. */
  825. #define POSR __REG(0x9002001C)  /* PM Oscillator Status Reg. */
  826. #define PMCR_SF  0x00000001 /* Sleep Force (set only)          */
  827. #define PSSR_SS  0x00000001 /* Software Sleep                  */
  828. #define PSSR_BFS 0x00000002 /* Battery Fault Status            */
  829.                           /* (BATT_FAULT)                    */
  830. #define PSSR_VFS 0x00000004 /* Vdd Fault Status (VDD_FAULT)    */
  831. #define PSSR_DH  0x00000008 /* DRAM control Hold               */
  832. #define PSSR_PH  0x00000010 /* Peripheral control Hold         */
  833. #define PWER_GPIO(Nb) GPIO_GPIO (Nb) /* GPIO [0..27] wake-up enable     */
  834. #define PWER_GPIO0 PWER_GPIO (0) /* GPIO  [0] wake-up enable        */
  835. #define PWER_GPIO1 PWER_GPIO (1) /* GPIO  [1] wake-up enable        */
  836. #define PWER_GPIO2 PWER_GPIO (2) /* GPIO  [2] wake-up enable        */
  837. #define PWER_GPIO3 PWER_GPIO (3) /* GPIO  [3] wake-up enable        */
  838. #define PWER_GPIO4 PWER_GPIO (4) /* GPIO  [4] wake-up enable        */
  839. #define PWER_GPIO5 PWER_GPIO (5) /* GPIO  [5] wake-up enable        */
  840. #define PWER_GPIO6 PWER_GPIO (6) /* GPIO  [6] wake-up enable        */
  841. #define PWER_GPIO7 PWER_GPIO (7) /* GPIO  [7] wake-up enable        */
  842. #define PWER_GPIO8 PWER_GPIO (8) /* GPIO  [8] wake-up enable        */
  843. #define PWER_GPIO9 PWER_GPIO (9) /* GPIO  [9] wake-up enable        */
  844. #define PWER_GPIO10 PWER_GPIO (10) /* GPIO [10] wake-up enable        */
  845. #define PWER_GPIO11 PWER_GPIO (11) /* GPIO [11] wake-up enable        */
  846. #define PWER_GPIO12 PWER_GPIO (12) /* GPIO [12] wake-up enable        */
  847. #define PWER_GPIO13 PWER_GPIO (13) /* GPIO [13] wake-up enable        */
  848. #define PWER_GPIO14 PWER_GPIO (14) /* GPIO [14] wake-up enable        */
  849. #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable        */
  850. #define PWER_GPIO16 PWER_GPIO (16) /* GPIO [16] wake-up enable        */
  851. #define PWER_GPIO17 PWER_GPIO (17) /* GPIO [17] wake-up enable        */
  852. #define PWER_GPIO18 PWER_GPIO (18) /* GPIO [18] wake-up enable        */
  853. #define PWER_GPIO19 PWER_GPIO (19) /* GPIO [19] wake-up enable        */
  854. #define PWER_GPIO20 PWER_GPIO (20) /* GPIO [20] wake-up enable        */
  855. #define PWER_GPIO21 PWER_GPIO (21) /* GPIO [21] wake-up enable        */
  856. #define PWER_GPIO22 PWER_GPIO (22) /* GPIO [22] wake-up enable        */
  857. #define PWER_GPIO23 PWER_GPIO (23) /* GPIO [23] wake-up enable        */
  858. #define PWER_GPIO24 PWER_GPIO (24) /* GPIO [24] wake-up enable        */
  859. #define PWER_GPIO25 PWER_GPIO (25) /* GPIO [25] wake-up enable        */
  860. #define PWER_GPIO26 PWER_GPIO (26) /* GPIO [26] wake-up enable        */
  861. #define PWER_GPIO27 PWER_GPIO (27) /* GPIO [27] wake-up enable        */
  862. #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable        */
  863. #define PCFR_OPDE 0x00000001 /* Oscillator Power-Down Enable    */
  864. #define PCFR_ClkRun (PCFR_OPDE*0) /*  Clock Running in sleep mode    */
  865. #define PCFR_ClkStp (PCFR_OPDE*1) /*  Clock Stopped in sleep mode    */
  866. #define PCFR_FP  0x00000002 /* Float PCMCIA pins               */
  867. #define PCFR_PCMCIANeg (PCFR_FP*0) /*  PCMCIA pins Negated (1)        */
  868. #define PCFR_PCMCIAFlt (PCFR_FP*1) /*  PCMCIA pins Floating           */
  869. #define PCFR_FS  0x00000004 /* Float Static memory pins        */
  870. #define PCFR_StMemNeg (PCFR_FS*0) /*  Static Memory pins Negated (1) */
  871. #define PCFR_StMemFlt (PCFR_FS*1) /*  Static Memory pins Floating    */
  872. #define PCFR_FO  0x00000008 /* Force RTC oscillator            */
  873.                           /* (32.768 kHz) enable On          */
  874. #define PPCR_CCF Fld (5, 0) /* CPU core Clock (CCLK) Freq.     */
  875. #define PPCR_Fx16          /*  Freq. x 16 (fcpu = 16*fxtl)    */ 
  876.                  (0x00 << FShft (PPCR_CCF))
  877. #define PPCR_Fx20          /*  Freq. x 20 (fcpu = 20*fxtl)    */ 
  878.                  (0x01 << FShft (PPCR_CCF))
  879. #define PPCR_Fx24          /*  Freq. x 24 (fcpu = 24*fxtl)    */ 
  880.                  (0x02 << FShft (PPCR_CCF))
  881. #define PPCR_Fx28          /*  Freq. x 28 (fcpu = 28*fxtl)    */ 
  882.                  (0x03 << FShft (PPCR_CCF))
  883. #define PPCR_Fx32          /*  Freq. x 32 (fcpu = 32*fxtl)    */ 
  884.                  (0x04 << FShft (PPCR_CCF))
  885. #define PPCR_Fx36          /*  Freq. x 36 (fcpu = 36*fxtl)    */ 
  886.                  (0x05 << FShft (PPCR_CCF))
  887. #define PPCR_Fx40          /*  Freq. x 40 (fcpu = 40*fxtl)    */ 
  888.                  (0x06 << FShft (PPCR_CCF))
  889. #define PPCR_Fx44          /*  Freq. x 44 (fcpu = 44*fxtl)    */ 
  890.                  (0x07 << FShft (PPCR_CCF))
  891. #define PPCR_Fx48          /*  Freq. x 48 (fcpu = 48*fxtl)    */ 
  892.                  (0x08 << FShft (PPCR_CCF))
  893. #define PPCR_Fx52          /*  Freq. x 52 (fcpu = 52*fxtl)    */ 
  894.                  (0x09 << FShft (PPCR_CCF))
  895. #define PPCR_Fx56          /*  Freq. x 56 (fcpu = 56*fxtl)    */ 
  896.                  (0x0A << FShft (PPCR_CCF))
  897. #define PPCR_Fx60          /*  Freq. x 60 (fcpu = 60*fxtl)    */ 
  898.                  (0x0B << FShft (PPCR_CCF))
  899. #define PPCR_Fx64          /*  Freq. x 64 (fcpu = 64*fxtl)    */ 
  900.                  (0x0C << FShft (PPCR_CCF))
  901. #define PPCR_Fx68          /*  Freq. x 68 (fcpu = 68*fxtl)    */ 
  902.                  (0x0D << FShft (PPCR_CCF))
  903. #define PPCR_Fx72          /*  Freq. x 72 (fcpu = 72*fxtl)    */ 
  904.                  (0x0E << FShft (PPCR_CCF))
  905. #define PPCR_Fx76          /*  Freq. x 76 (fcpu = 76*fxtl)    */ 
  906.                  (0x0F << FShft (PPCR_CCF))
  907.                           /*  3.6864 MHz crystal (fxtl):     */
  908. #define PPCR_F59_0MHz PPCR_Fx16 /*   Freq. (fcpu) =  59.0 MHz      */
  909. #define PPCR_F73_7MHz PPCR_Fx20 /*   Freq. (fcpu) =  73.7 MHz      */
  910. #define PPCR_F88_5MHz PPCR_Fx24 /*   Freq. (fcpu) =  88.5 MHz      */
  911. #define PPCR_F103_2MHz PPCR_Fx28 /*   Freq. (fcpu) = 103.2 MHz      */
  912. #define PPCR_F118_0MHz PPCR_Fx32 /*   Freq. (fcpu) = 118.0 MHz      */
  913. #define PPCR_F132_7MHz PPCR_Fx36 /*   Freq. (fcpu) = 132.7 MHz      */
  914. #define PPCR_F147_5MHz PPCR_Fx40 /*   Freq. (fcpu) = 147.5 MHz      */
  915. #define PPCR_F162_2MHz PPCR_Fx44 /*   Freq. (fcpu) = 162.2 MHz      */
  916. #define PPCR_F176_9MHz PPCR_Fx48 /*   Freq. (fcpu) = 176.9 MHz      */
  917. #define PPCR_F191_7MHz PPCR_Fx52 /*   Freq. (fcpu) = 191.7 MHz      */
  918. #define PPCR_F206_4MHz PPCR_Fx56 /*   Freq. (fcpu) = 206.4 MHz      */
  919. #define PPCR_F221_2MHz PPCR_Fx60 /*   Freq. (fcpu) = 221.2 MHz      */
  920. #define PPCR_F239_6MHz PPCR_Fx64 /*   Freq. (fcpu) = 239.6 MHz      */
  921. #define PPCR_F250_7MHz PPCR_Fx68 /*   Freq. (fcpu) = 250.7 MHz      */
  922. #define PPCR_F265_4MHz PPCR_Fx72 /*   Freq. (fcpu) = 265.4 MHz      */
  923. #define PPCR_F280_2MHz PPCR_Fx76 /*   Freq. (fcpu) = 280.2 MHz      */
  924.                           /*  3.5795 MHz crystal (fxtl):     */
  925. #define PPCR_F57_3MHz PPCR_Fx16 /*   Freq. (fcpu) =  57.3 MHz      */
  926. #define PPCR_F71_6MHz PPCR_Fx20 /*   Freq. (fcpu) =  71.6 MHz      */
  927. #define PPCR_F85_9MHz PPCR_Fx24 /*   Freq. (fcpu) =  85.9 MHz      */
  928. #define PPCR_F100_2MHz PPCR_Fx28 /*   Freq. (fcpu) = 100.2 MHz      */
  929. #define PPCR_F114_5MHz PPCR_Fx32 /*   Freq. (fcpu) = 114.5 MHz      */
  930. #define PPCR_F128_9MHz PPCR_Fx36 /*   Freq. (fcpu) = 128.9 MHz      */
  931. #define PPCR_F143_2MHz PPCR_Fx40 /*   Freq. (fcpu) = 143.2 MHz      */
  932. #define PPCR_F157_5MHz PPCR_Fx44 /*   Freq. (fcpu) = 157.5 MHz      */
  933. #define PPCR_F171_8MHz PPCR_Fx48 /*   Freq. (fcpu) = 171.8 MHz      */
  934. #define PPCR_F186_1MHz PPCR_Fx52 /*   Freq. (fcpu) = 186.1 MHz      */
  935. #define PPCR_F200_5MHz PPCR_Fx56 /*   Freq. (fcpu) = 200.5 MHz      */
  936. #define PPCR_F214_8MHz PPCR_Fx60 /*   Freq. (fcpu) = 214.8 MHz      */
  937. #define PPCR_F229_1MHz PPCR_Fx64 /*   Freq. (fcpu) = 229.1 MHz      */
  938. #define PPCR_F243_4MHz PPCR_Fx68 /*   Freq. (fcpu) = 243.4 MHz      */
  939. #define PPCR_F257_7MHz PPCR_Fx72 /*   Freq. (fcpu) = 257.7 MHz      */
  940. #define PPCR_F272_0MHz PPCR_Fx76 /*   Freq. (fcpu) = 272.0 MHz      */
  941. #define POSR_OOK 0x00000001 /* RTC Oscillator (32.768 kHz) OK  */
  942. /*
  943.  * Reset Controller (RC) control registers
  944.  *
  945.  * Registers
  946.  *    RSRR       Reset Controller (RC) Software Reset Register
  947.  *               (read/write).
  948.  *    RCSR       Reset Controller (RC) Status Register (read/write).
  949.  */
  950. #define RSRR __REG(0x90030000)  /* RC Software Reset Reg. */
  951. #define RCSR __REG(0x90030004)  /* RC Status Reg. */
  952. #define RSRR_SWR 0x00000001 /* SoftWare Reset (set only)       */
  953. #define RCSR_HWR 0x00000001 /* HardWare Reset                  */
  954. #define RCSR_SWR 0x00000002 /* SoftWare Reset                  */
  955. #define RCSR_WDR 0x00000004 /* Watch-Dog Reset                 */
  956. #define RCSR_SMR 0x00000008 /* Sleep-Mode Reset                */
  957. /*
  958.  * Test unit control registers
  959.  *
  960.  * Registers
  961.  *    TUCR       Test Unit Control Register (read/write).
  962.  */
  963. #define TUCR __REG(0x90030008)  /* Test Unit Control Reg. */
  964. #define TUCR_TIC 0x00000040 /* TIC mode                        */
  965. #define TUCR_TTST 0x00000080 /* Trim TeST mode                  */
  966. #define TUCR_RCRC 0x00000100 /* Richard's Cyclic Redundancy     */
  967.                           /* Check                           */
  968. #define TUCR_PMD 0x00000200 /* Power Management Disable        */
  969. #define TUCR_MR  0x00000400 /* Memory Request mode             */
  970. #define TUCR_NoMB (TUCR_MR*0) /*  No Memory Bus request & grant  */
  971. #define TUCR_MBGPIO (TUCR_MR*1) /*  Memory Bus request (MBREQ) &   */
  972.                           /*  grant (MBGNT) on GPIO [22:21]  */
  973. #define TUCR_CTB Fld (3, 20) /* Clock Test Bits                 */
  974. #define TUCR_FDC 0x00800000 /* RTC Force Delete Count          */
  975. #define TUCR_FMC 0x01000000 /* Force Michelle's Control mode   */
  976. #define TUCR_TMC 0x02000000 /* RTC Trimmer Multiplexer Control */
  977. #define TUCR_DPS 0x04000000 /* Disallow Pad Sleep              */
  978. #define TUCR_TSEL Fld (3, 29) /* clock Test SELect on GPIO [27]  */
  979. #define TUCR_32_768kHz          /*  32.768 kHz osc. on GPIO [27]   */ 
  980.                  (0 << FShft (TUCR_TSEL))
  981. #define TUCR_3_6864MHz          /*  3.6864 MHz osc. on GPIO [27]   */ 
  982.                  (1 << FShft (TUCR_TSEL))
  983. #define TUCR_VDD          /*  VDD ring osc./16 on GPIO [27]  */ 
  984.                  (2 << FShft (TUCR_TSEL))
  985. #define TUCR_96MHzPLL          /*  96 MHz PLL/4 on GPIO [27]      */ 
  986.                  (3 << FShft (TUCR_TSEL))
  987. #define TUCR_Clock          /*  internal (fcpu/2) & 32.768 kHz */ 
  988.                           /*  Clocks on GPIO [26:27]         */ 
  989.                  (4 << FShft (TUCR_TSEL))
  990. #define TUCR_3_6864MHzA          /*  3.6864 MHz osc. on GPIO [27]   */ 
  991.                           /*  (Alternative)                  */ 
  992.                  (5 << FShft (TUCR_TSEL))
  993. #define TUCR_MainPLL          /*  Main PLL/16 on GPIO [27]       */ 
  994.                  (6 << FShft (TUCR_TSEL))
  995. #define TUCR_VDDL          /*  VDDL ring osc./4 on GPIO [27]  */ 
  996.                  (7 << FShft (TUCR_TSEL))
  997. /*
  998.  * General-Purpose Input/Output (GPIO) control registers
  999.  *
  1000.  * Registers
  1001.  *    GPLR       General-Purpose Input/Output (GPIO) Pin Level
  1002.  *               Register (read).
  1003.  *    GPDR       General-Purpose Input/Output (GPIO) Pin Direction
  1004.  *               Register (read/write).
  1005.  *    GPSR       General-Purpose Input/Output (GPIO) Pin output Set
  1006.  *               Register (write).
  1007.  *    GPCR       General-Purpose Input/Output (GPIO) Pin output Clear
  1008.  *               Register (write).
  1009.  *    GRER       General-Purpose Input/Output (GPIO) Rising-Edge
  1010.  *               detect Register (read/write).
  1011.  *    GFER       General-Purpose Input/Output (GPIO) Falling-Edge
  1012.  *               detect Register (read/write).
  1013.  *    GEDR       General-Purpose Input/Output (GPIO) Edge Detect
  1014.  *               status Register (read/write).
  1015.  *    GAFR       General-Purpose Input/Output (GPIO) Alternate
  1016.  *               Function Register (read/write).
  1017.  *
  1018.  * Clock
  1019.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  1020.  */
  1021. #define GPLR __REG(0x90040000)  /* GPIO Pin Level Reg.             */
  1022. #define GPDR __REG(0x90040004)  /* GPIO Pin Direction Reg.         */
  1023. #define GPSR __REG(0x90040008)  /* GPIO Pin output Set Reg.        */
  1024. #define GPCR __REG(0x9004000C)  /* GPIO Pin output Clear Reg.      */
  1025. #define GRER __REG(0x90040010)  /* GPIO Rising-Edge detect Reg.    */
  1026. #define GFER __REG(0x90040014)  /* GPIO Falling-Edge detect Reg.   */
  1027. #define GEDR __REG(0x90040018)  /* GPIO Edge Detect status Reg.    */
  1028. #define GAFR __REG(0x9004001C)  /* GPIO Alternate Function Reg.    */
  1029. #define GPIO_MIN (0)
  1030. #define GPIO_MAX (27)
  1031. #define GPIO_GPIO(Nb)          /* GPIO [0..27]                    */ 
  1032.                  (0x00000001 << (Nb))
  1033. #define GPIO_GPIO0 GPIO_GPIO (0) /* GPIO  [0]                       */
  1034. #define GPIO_GPIO1 GPIO_GPIO (1) /* GPIO  [1]                       */
  1035. #define GPIO_GPIO2 GPIO_GPIO (2) /* GPIO  [2]                       */
  1036. #define GPIO_GPIO3 GPIO_GPIO (3) /* GPIO  [3]                       */
  1037. #define GPIO_GPIO4 GPIO_GPIO (4) /* GPIO  [4]                       */
  1038. #define GPIO_GPIO5 GPIO_GPIO (5) /* GPIO  [5]                       */
  1039. #define GPIO_GPIO6 GPIO_GPIO (6) /* GPIO  [6]                       */
  1040. #define GPIO_GPIO7 GPIO_GPIO (7) /* GPIO  [7]                       */
  1041. #define GPIO_GPIO8 GPIO_GPIO (8) /* GPIO  [8]                       */
  1042. #define GPIO_GPIO9 GPIO_GPIO (9) /* GPIO  [9]                       */
  1043. #define GPIO_GPIO10 GPIO_GPIO (10) /* GPIO [10]                       */
  1044. #define GPIO_GPIO11 GPIO_GPIO (11) /* GPIO [11]                       */
  1045. #define GPIO_GPIO12 GPIO_GPIO (12) /* GPIO [12]                       */
  1046. #define GPIO_GPIO13 GPIO_GPIO (13) /* GPIO [13]                       */
  1047. #define GPIO_GPIO14 GPIO_GPIO (14) /* GPIO [14]                       */
  1048. #define GPIO_GPIO15 GPIO_GPIO (15) /* GPIO [15]                       */
  1049. #define GPIO_GPIO16 GPIO_GPIO (16) /* GPIO [16]                       */
  1050. #define GPIO_GPIO17 GPIO_GPIO (17) /* GPIO [17]                       */
  1051. #define GPIO_GPIO18 GPIO_GPIO (18) /* GPIO [18]                       */
  1052. #define GPIO_GPIO19 GPIO_GPIO (19) /* GPIO [19]                       */
  1053. #define GPIO_GPIO20 GPIO_GPIO (20) /* GPIO [20]                       */
  1054. #define GPIO_GPIO21 GPIO_GPIO (21) /* GPIO [21]                       */
  1055. #define GPIO_GPIO22 GPIO_GPIO (22) /* GPIO [22]                       */
  1056. #define GPIO_GPIO23 GPIO_GPIO (23) /* GPIO [23]                       */
  1057. #define GPIO_GPIO24 GPIO_GPIO (24) /* GPIO [24]                       */
  1058. #define GPIO_GPIO25 GPIO_GPIO (25) /* GPIO [25]                       */
  1059. #define GPIO_GPIO26 GPIO_GPIO (26) /* GPIO [26]                       */
  1060. #define GPIO_GPIO27 GPIO_GPIO (27) /* GPIO [27]                       */
  1061. #define GPIO_LDD(Nb)          /* LCD Data [8..15] (O)            */ 
  1062.                  GPIO_GPIO ((Nb) - 6)
  1063. #define GPIO_LDD8 GPIO_LDD (8) /* LCD Data  [8] (O)               */
  1064. #define GPIO_LDD9 GPIO_LDD (9) /* LCD Data  [9] (O)               */
  1065. #define GPIO_LDD10 GPIO_LDD (10) /* LCD Data [10] (O)               */
  1066. #define GPIO_LDD11 GPIO_LDD (11) /* LCD Data [11] (O)               */
  1067. #define GPIO_LDD12 GPIO_LDD (12) /* LCD Data [12] (O)               */
  1068. #define GPIO_LDD13 GPIO_LDD (13) /* LCD Data [13] (O)               */
  1069. #define GPIO_LDD14 GPIO_LDD (14) /* LCD Data [14] (O)               */
  1070. #define GPIO_LDD15 GPIO_LDD (15) /* LCD Data [15] (O)               */
  1071.                           /* ser. port 4:                    */
  1072. #define GPIO_SSP_TXD GPIO_GPIO (10) /*  SSP Transmit Data (O)          */
  1073. #define GPIO_SSP_RXD GPIO_GPIO (11) /*  SSP Receive Data (I)           */
  1074. #define GPIO_SSP_SCLK GPIO_GPIO (12) /*  SSP Sample CLocK (O)           */
  1075. #define GPIO_SSP_SFRM GPIO_GPIO (13) /*  SSP Sample FRaMe (O)           */
  1076.                           /* ser. port 1:                    */
  1077. #define GPIO_UART_TXD GPIO_GPIO (14) /*  UART Transmit Data (O)         */
  1078. #define GPIO_UART_RXD GPIO_GPIO (15) /*  UART Receive Data (I)          */
  1079. #define GPIO_SDLC_SCLK GPIO_GPIO (16) /*  SDLC Sample CLocK (I/O)        */
  1080. #define GPIO_SDLC_AAF GPIO_GPIO (17) /*  SDLC Abort After Frame (O)     */
  1081. #define GPIO_UART_SCLK1 GPIO_GPIO (18) /*  UART Sample CLocK 1 (I)        */
  1082.                           /* ser. port 4:                    */
  1083. #define GPIO_SSP_CLK GPIO_GPIO (19) /*  SSP external CLocK (I)         */
  1084.                           /* ser. port 3:                    */
  1085. #define GPIO_UART_SCLK3 GPIO_GPIO (20) /*  UART Sample CLocK 3 (I)        */
  1086.                           /* ser. port 4:                    */
  1087. #define GPIO_MCP_CLK GPIO_GPIO (21) /*  MCP CLocK (I)                  */
  1088.                           /* test controller:                */
  1089. #define GPIO_TIC_ACK GPIO_GPIO (21) /*  TIC ACKnowledge (O)            */
  1090. #define GPIO_MBGNT GPIO_GPIO (21) /*  Memory Bus GraNT (O)           */
  1091. #define GPIO_TREQA GPIO_GPIO (22) /*  TIC REQuest A (I)              */
  1092. #define GPIO_MBREQ GPIO_GPIO (22) /*  Memory Bus REQuest (I)         */
  1093. #define GPIO_TREQB GPIO_GPIO (23) /*  TIC REQuest B (I)              */
  1094. #define GPIO_1Hz GPIO_GPIO (25) /* 1 Hz clock (O)                  */
  1095. #define GPIO_RCLK GPIO_GPIO (26) /* internal (R) CLocK (O, fcpu/2)  */
  1096. #define GPIO_32_768kHz GPIO_GPIO (27) /* 32.768 kHz clock (O, RTC)       */
  1097. #define GPDR_In  0        /* Input                           */
  1098. #define GPDR_Out 1        /* Output                          */
  1099. /*
  1100.  * Interrupt Controller (IC) control registers
  1101.  *
  1102.  * Registers
  1103.  *    ICIP       Interrupt Controller (IC) Interrupt ReQuest (IRQ)
  1104.  *               Pending register (read).
  1105.  *    ICMR       Interrupt Controller (IC) Mask Register (read/write).
  1106.  *    ICLR       Interrupt Controller (IC) Level Register (read/write).
  1107.  *    ICCR       Interrupt Controller (IC) Control Register
  1108.  *               (read/write).
  1109.  *               [The ICCR register is only implemented in versions 2.0
  1110.  *               (rev. = 8) and higher of the StrongARM SA-1100.]
  1111.  *    ICFP       Interrupt Controller (IC) Fast Interrupt reQuest
  1112.  *               (FIQ) Pending register (read).
  1113.  *    ICPR       Interrupt Controller (IC) Pending Register (read).
  1114.  *               [The ICPR register is active low (inverted) in
  1115.  *               versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
  1116.  *               StrongARM SA-1100, it is active high (non-inverted) in
  1117.  *               versions 2.0 (rev. = 8) and higher.]
  1118.  */
  1119. #define ICIP __REG(0x90050000)  /* IC IRQ Pending reg.             */
  1120. #define ICMR __REG(0x90050004)  /* IC Mask Reg.                    */
  1121. #define ICLR __REG(0x90050008)  /* IC Level Reg.                   */
  1122. #define ICCR __REG(0x9005000C)  /* IC Control Reg.                 */
  1123. #define ICFP __REG(0x90050010)  /* IC FIQ Pending reg.             */
  1124. #define ICPR __REG(0x90050020)  /* IC Pending Reg.                 */
  1125. #define IC_GPIO(Nb)          /* GPIO [0..10]                    */ 
  1126.                  (0x00000001 << (Nb))
  1127. #define IC_GPIO0 IC_GPIO (0) /* GPIO  [0]                       */
  1128. #define IC_GPIO1 IC_GPIO (1) /* GPIO  [1]                       */
  1129. #define IC_GPIO2 IC_GPIO (2) /* GPIO  [2]                       */
  1130. #define IC_GPIO3 IC_GPIO (3) /* GPIO  [3]                       */
  1131. #define IC_GPIO4 IC_GPIO (4) /* GPIO  [4]                       */
  1132. #define IC_GPIO5 IC_GPIO (5) /* GPIO  [5]                       */
  1133. #define IC_GPIO6 IC_GPIO (6) /* GPIO  [6]                       */
  1134. #define IC_GPIO7 IC_GPIO (7) /* GPIO  [7]                       */
  1135. #define IC_GPIO8 IC_GPIO (8) /* GPIO  [8]                       */
  1136. #define IC_GPIO9 IC_GPIO (9) /* GPIO  [9]                       */
  1137. #define IC_GPIO10 IC_GPIO (10) /* GPIO [10]                       */
  1138. #define IC_GPIO11_27 0x00000800 /* GPIO [11:27] (ORed)             */
  1139. #define IC_LCD   0x00001000 /* LCD controller                  */
  1140. #define IC_Ser0UDC 0x00002000 /* Ser. port 0 UDC                 */
  1141. #define IC_Ser1SDLC 0x00004000 /* Ser. port 1 SDLC                */
  1142. #define IC_Ser1UART 0x00008000 /* Ser. port 1 UART                */
  1143. #define IC_Ser2ICP 0x00010000 /* Ser. port 2 ICP                 */
  1144. #define IC_Ser3UART 0x00020000 /* Ser. port 3 UART                */
  1145. #define IC_Ser4MCP 0x00040000 /* Ser. port 4 MCP                 */
  1146. #define IC_Ser4SSP 0x00080000 /* Ser. port 4 SSP                 */
  1147. #define IC_DMA(Nb)          /* DMA controller channel [0..5]   */ 
  1148.                  (0x00100000 << (Nb))
  1149. #define IC_DMA0  IC_DMA (0) /* DMA controller channel 0        */
  1150. #define IC_DMA1  IC_DMA (1) /* DMA controller channel 1        */
  1151. #define IC_DMA2  IC_DMA (2) /* DMA controller channel 2        */
  1152. #define IC_DMA3  IC_DMA (3) /* DMA controller channel 3        */
  1153. #define IC_DMA4  IC_DMA (4) /* DMA controller channel 4        */
  1154. #define IC_DMA5  IC_DMA (5) /* DMA controller channel 5        */
  1155. #define IC_OST(Nb)          /* OS Timer match [0..3]           */ 
  1156.                  (0x04000000 << (Nb))
  1157. #define IC_OST0  IC_OST (0) /* OS Timer match 0                */
  1158. #define IC_OST1  IC_OST (1) /* OS Timer match 1                */
  1159. #define IC_OST2  IC_OST (2) /* OS Timer match 2                */
  1160. #define IC_OST3  IC_OST (3) /* OS Timer match 3                */
  1161. #define IC_RTC1Hz 0x40000000 /* RTC 1 Hz clock                  */
  1162. #define IC_RTCAlrm 0x80000000 /* RTC Alarm                       */
  1163. #define ICLR_IRQ 0        /* Interrupt ReQuest               */
  1164. #define ICLR_FIQ 1        /* Fast Interrupt reQuest          */
  1165. #define ICCR_DIM 0x00000001 /* Disable Idle-mode interrupt     */
  1166.                           /* Mask                            */
  1167. #define ICCR_IdleAllInt (ICCR_DIM*0) /*  Idle-mode All Interrupt enable */
  1168.                           /*  (ICMR ignored)                 */
  1169. #define ICCR_IdleMskInt (ICCR_DIM*1) /*  Idle-mode non-Masked Interrupt */
  1170.                           /*  enable (ICMR used)             */
  1171. /*
  1172.  * Peripheral Pin Controller (PPC) control registers
  1173.  *
  1174.  * Registers
  1175.  *    PPDR       Peripheral Pin Controller (PPC) Pin Direction
  1176.  *               Register (read/write).
  1177.  *    PPSR       Peripheral Pin Controller (PPC) Pin State Register
  1178.  *               (read/write).
  1179.  *    PPAR       Peripheral Pin Controller (PPC) Pin Assignment
  1180.  *               Register (read/write).
  1181.  *    PSDR       Peripheral Pin Controller (PPC) Sleep-mode pin
  1182.  *               Direction Register (read/write).
  1183.  *    PPFR       Peripheral Pin Controller (PPC) Pin Flag Register
  1184.  *               (read).
  1185.  */
  1186. #define PPDR __REG(0x90060000)  /* PPC Pin Direction Reg.          */
  1187. #define PPSR __REG(0x90060004)  /* PPC Pin State Reg.              */
  1188. #define PPAR __REG(0x90060008)  /* PPC Pin Assignment Reg.         */
  1189. #define PSDR __REG(0x9006000C)  /* PPC Sleep-mode pin Direction Reg. */
  1190. #define PPFR __REG(0x90060010)  /* PPC Pin Flag Reg.               */
  1191. #define PPC_LDD(Nb)          /* LCD Data [0..7]                 */ 
  1192.                  (0x00000001 << (Nb))
  1193. #define PPC_LDD0 PPC_LDD (0) /* LCD Data [0]                    */
  1194. #define PPC_LDD1 PPC_LDD (1) /* LCD Data [1]                    */
  1195. #define PPC_LDD2 PPC_LDD (2) /* LCD Data [2]                    */
  1196. #define PPC_LDD3 PPC_LDD (3) /* LCD Data [3]                    */
  1197. #define PPC_LDD4 PPC_LDD (4) /* LCD Data [4]                    */
  1198. #define PPC_LDD5 PPC_LDD (5) /* LCD Data [5]                    */
  1199. #define PPC_LDD6 PPC_LDD (6) /* LCD Data [6]                    */
  1200. #define PPC_LDD7 PPC_LDD (7) /* LCD Data [7]                    */
  1201. #define PPC_L_PCLK 0x00000100 /* LCD Pixel CLocK                 */
  1202. #define PPC_L_LCLK 0x00000200 /* LCD Line CLocK                  */
  1203. #define PPC_L_FCLK 0x00000400 /* LCD Frame CLocK                 */
  1204. #define PPC_L_BIAS 0x00000800 /* LCD AC BIAS                     */
  1205.                           /* ser. port 1:                    */
  1206. #define PPC_TXD1 0x00001000 /*  SDLC/UART Transmit Data 1      */
  1207. #define PPC_RXD1 0x00002000 /*  SDLC/UART Receive Data 1       */
  1208.                           /* ser. port 2:                    */
  1209. #define PPC_TXD2 0x00004000 /*  IPC Transmit Data 2            */
  1210. #define PPC_RXD2 0x00008000 /*  IPC Receive Data 2             */
  1211.                           /* ser. port 3:                    */
  1212. #define PPC_TXD3 0x00010000 /*  UART Transmit Data 3           */
  1213. #define PPC_RXD3 0x00020000 /*  UART Receive Data 3            */
  1214.                           /* ser. port 4:                    */
  1215. #define PPC_TXD4 0x00040000 /*  MCP/SSP Transmit Data 4        */
  1216. #define PPC_RXD4 0x00080000 /*  MCP/SSP Receive Data 4         */
  1217. #define PPC_SCLK 0x00100000 /*  MCP/SSP Sample CLocK           */
  1218. #define PPC_SFRM 0x00200000 /*  MCP/SSP Sample FRaMe           */
  1219. #define PPDR_In  0        /* Input                           */
  1220. #define PPDR_Out 1        /* Output                          */
  1221.                           /* ser. port 1:                    */
  1222. #define PPAR_UPR 0x00001000 /*  UART Pin Reassignment          */
  1223. #define PPAR_UARTTR (PPAR_UPR*0) /*   UART on TXD_1 & RXD_1         */
  1224. #define PPAR_UARTGPIO (PPAR_UPR*1) /*   UART on GPIO [14:15]          */
  1225.                           /* ser. port 4:                    */
  1226. #define PPAR_SPR 0x00040000 /*  SSP Pin Reassignment           */
  1227. #define PPAR_SSPTRSS (PPAR_SPR*0) /*   SSP on TXD_C, RXD_C, SCLK_C,  */
  1228.                           /*   & SFRM_C                      */
  1229. #define PPAR_SSPGPIO (PPAR_SPR*1) /*   SSP on GPIO [10:13]           */
  1230. #define PSDR_OutL 0        /* Output Low in sleep mode        */
  1231. #define PSDR_Flt 1        /* Floating (input) in sleep mode  */
  1232. #define PPFR_LCD 0x00000001 /* LCD controller                  */
  1233. #define PPFR_SP1TX 0x00001000 /* Ser. Port 1 SDLC/UART Transmit  */
  1234. #define PPFR_SP1RX 0x00002000 /* Ser. Port 1 SDLC/UART Receive   */
  1235. #define PPFR_SP2TX 0x00004000 /* Ser. Port 2 ICP Transmit        */
  1236. #define PPFR_SP2RX 0x00008000 /* Ser. Port 2 ICP Receive         */
  1237. #define PPFR_SP3TX 0x00010000 /* Ser. Port 3 UART Transmit       */
  1238. #define PPFR_SP3RX 0x00020000 /* Ser. Port 3 UART Receive        */
  1239. #define PPFR_SP4 0x00040000 /* Ser. Port 4 MCP/SSP             */
  1240. #define PPFR_PerEn 0        /* Peripheral Enabled              */
  1241. #define PPFR_PPCEn 1        /* PPC Enabled                     */
  1242. /*
  1243.  * Dynamic Random-Access Memory (DRAM) control registers
  1244.  *
  1245.  * Registers
  1246.  *    MDCNFG     Memory system: Dynamic Random-Access Memory (DRAM)
  1247.  *               CoNFiGuration register (read/write).
  1248.  *    MDCAS0     Memory system: Dynamic Random-Access Memory (DRAM)
  1249.  *               Column Address Strobe (CAS) shift register 0
  1250.  *               (read/write).
  1251.  *    MDCAS1     Memory system: Dynamic Random-Access Memory (DRAM)
  1252.  *               Column Address Strobe (CAS) shift register 1
  1253.  *               (read/write).
  1254.  *    MDCAS2     Memory system: Dynamic Random-Access Memory (DRAM)
  1255.  *               Column Address Strobe (CAS) shift register 2
  1256.  *               (read/write).
  1257.  *
  1258.  * Clocks
  1259.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  1260.  *    fmem, Tmem Frequency, period of the memory clock (fmem = fcpu/2).
  1261.  *    fcas, Tcas Frequency, period of the DRAM CAS shift registers.
  1262.  */
  1263. #define MDCNFG __REG(0xA0000000)  /*  DRAM CoNFiGuration reg. */
  1264. #define MDCAS0 __REG(0xA0000004)  /* DRAM CAS shift reg. 0 */
  1265. #define MDCAS1 __REG(0xA0000008)  /* DRAM CAS shift reg. 1 */
  1266. #define MDCAS2 __REG(0xA000000c)  /* DRAM CAS shift reg. 2 */
  1267. /* SA1100 MDCNFG values */
  1268. #define MDCNFG_DE(Nb)          /* DRAM Enable bank [0..3]         */ 
  1269.                  (0x00000001 << (Nb))
  1270. #define MDCNFG_DE0 MDCNFG_DE (0) /* DRAM Enable bank 0              */
  1271. #define MDCNFG_DE1 MDCNFG_DE (1) /* DRAM Enable bank 1              */
  1272. #define MDCNFG_DE2 MDCNFG_DE (2) /* DRAM Enable bank 2              */
  1273. #define MDCNFG_DE3 MDCNFG_DE (3) /* DRAM Enable bank 3              */
  1274. #define MDCNFG_DRAC Fld (2, 4) /* DRAM Row Address Count - 9      */
  1275. #define MDCNFG_RowAdd(Add)       /*  Row Address count [9..12]      */ 
  1276.                  (((Add) - 9) << FShft (MDCNFG_DRAC))
  1277. #define MDCNFG_CDB2 0x00000040 /* shift reg. Clock Divide By 2    */
  1278.                           /* (fcas = fcpu/2)                 */
  1279. #define MDCNFG_TRP Fld (4, 7) /* Time RAS Pre-charge - 1 [Tmem]  */
  1280. #define MDCNFG_PrChrg(Tcpu)      /*  Pre-Charge time [2..32 Tcpu]   */ 
  1281.                  (((Tcpu) - 2)/2 << FShft (MDCNFG_TRP))
  1282. #define MDCNFG_CeilPrChrg(Tcpu)  /*  Ceil. of PrChrg [2..32 Tcpu]   */ 
  1283.                  (((Tcpu) - 1)/2 << FShft (MDCNFG_TRP))
  1284. #define MDCNFG_TRASR Fld (4, 11) /* Time RAS Refresh - 1 [Tmem]     */
  1285. #define MDCNFG_Ref(Tcpu)         /*  Refresh time [2..32 Tcpu]      */ 
  1286.                  (((Tcpu) - 2)/2 << FShft (MDCNFG_TRASR))
  1287. #define MDCNFG_CeilRef(Tcpu)     /*  Ceil. of Ref [2..32 Tcpu]      */ 
  1288.                  (((Tcpu) - 1)/2 << FShft (MDCNFG_TRASR))
  1289. #define MDCNFG_TDL Fld (2, 15) /* Time Data Latch [Tcpu]          */
  1290. #define MDCNFG_DataLtch(Tcpu)    /*  Data Latch delay [0..3 Tcpu]   */ 
  1291.                  ((Tcpu) << FShft (MDCNFG_TDL))
  1292. #define MDCNFG_DRI Fld (15, 17) /* min. DRAM Refresh Interval/4    */
  1293.                           /* [Tmem]                          */
  1294. #define MDCNFG_RefInt(Tcpu)      /*  min. Refresh Interval          */ 
  1295.                           /*  [0..262136 Tcpu]               */ 
  1296.                  ((Tcpu)/8 << FShft (MDCNFG_DRI))
  1297. /* SA1110 MDCNFG values */
  1298. #define MDCNFG_SA1110_DE0 0x00000001 /* DRAM Enable bank 0        */
  1299. #define MDCNFG_SA1110_DE1 0x00000002  /* DRAM Enable bank 1        */
  1300. #define MDCNFG_SA1110_DTIM0 0x00000004 /* DRAM timing type 0/1      */
  1301. #define MDCNFG_SA1110_DWID0 0x00000008 /* DRAM bus width 0/1        */
  1302. #define MDCNFG_SA1110_DRAC0 Fld(3, 4) /* DRAM row addr bit count   */
  1303.                           /* bank 0/1                  */
  1304. #define MDCNFG_SA1110_CDB20 0x00000080 /* Mem Clock divide by 2 0/1 */
  1305. #define MDCNFG_SA1110_TRP0 Fld(3, 8) /* RAS precharge 0/1         */
  1306. #define MDCNFG_SA1110_TDL0 Fld(2, 12) /* Data input latch after CAS*/
  1307.                           /* deassertion 0/1           */
  1308. #define MDCNFG_SA1110_TWR0 Fld(2, 14) /* SDRAM write recovery 0/1  */
  1309. #define MDCNFG_SA1110_DE2 0x00010000 /* DRAM Enable bank 0        */
  1310. #define MDCNFG_SA1110_DE3 0x00020000  /* DRAM Enable bank 1        */
  1311. #define MDCNFG_SA1110_DTIM2 0x00040000 /* DRAM timing type 0/1      */
  1312. #define MDCNFG_SA1110_DWID2 0x00080000 /* DRAM bus width 0/1        */
  1313. #define MDCNFG_SA1110_DRAC2 Fld(3, 20) /* DRAM row addr bit count   */
  1314.                           /* bank 0/1                  */
  1315. #define MDCNFG_SA1110_CDB22 0x00800000 /* Mem Clock divide by 2 0/1 */
  1316. #define MDCNFG_SA1110_TRP2 Fld(3, 24) /* RAS precharge 0/1         */
  1317. #define MDCNFG_SA1110_TDL2 Fld(2, 28) /* Data input latch after CAS*/
  1318.                           /* deassertion 0/1           */
  1319. #define MDCNFG_SA1110_TWR2 Fld(2, 30) /* SDRAM write recovery 0/1  */
  1320. /*
  1321.  * Static memory control registers
  1322.  *
  1323.  * Registers
  1324.  *    MSC0       Memory system: Static memory Control register 0
  1325.  *               (read/write).
  1326.  *    MSC1       Memory system: Static memory Control register 1
  1327.  *               (read/write).
  1328.  *
  1329.  * Clocks
  1330.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  1331.  *    fmem, Tmem Frequency, period of the memory clock (fmem = fcpu/2).
  1332.  */
  1333. #define MSC0 __REG(0xa0000010)  /* Static memory Control reg. 0 */
  1334. #define MSC1 __REG(0xa0000014)  /* Static memory Control reg. 1 */
  1335. #define MSC2 __REG(0xa000002c)  /* Static memory Control reg. 2, not contiguous   */
  1336. #define MSC_Bnk(Nb)          /* static memory Bank [0..3]       */ 
  1337.                  Fld (16, ((Nb) Modulo 2)*16)
  1338. #define MSC0_Bnk0 MSC_Bnk (0) /* static memory Bank 0            */
  1339. #define MSC0_Bnk1 MSC_Bnk (1) /* static memory Bank 1            */
  1340. #define MSC1_Bnk2 MSC_Bnk (2) /* static memory Bank 2            */
  1341. #define MSC1_Bnk3 MSC_Bnk (3) /* static memory Bank 3            */
  1342. #define MSC_RT   Fld (2, 0) /* ROM/static memory Type          */
  1343. #define MSC_NonBrst          /*  Non-Burst static memory        */ 
  1344.                  (0 << FShft (MSC_RT))
  1345. #define MSC_SRAM          /*  32-bit byte-writable SRAM      */ 
  1346.                  (1 << FShft (MSC_RT))
  1347. #define MSC_Brst4          /*  Burst-of-4 static memory       */ 
  1348.                  (2 << FShft (MSC_RT))
  1349. #define MSC_Brst8          /*  Burst-of-8 static memory       */ 
  1350.                  (3 << FShft (MSC_RT))
  1351. #define MSC_RBW  0x0004   /* ROM/static memory Bus Width     */
  1352. #define MSC_32BitStMem (MSC_RBW*0) /*  32-Bit Static Memory           */
  1353. #define MSC_16BitStMem (MSC_RBW*1) /*  16-Bit Static Memory           */
  1354. #define MSC_RDF  Fld (5, 3) /* ROM/static memory read Delay    */
  1355.                           /* First access - 1(.5) [Tmem]     */
  1356. #define MSC_1stRdAcc(Tcpu)       /*  1st Read Access time (burst    */ 
  1357.                           /*  static memory) [3..65 Tcpu]    */ 
  1358.                  ((((Tcpu) - 3)/2) << FShft (MSC_RDF))
  1359. #define MSC_Ceil1stRdAcc(Tcpu)   /*  Ceil. of 1stRdAcc [3..65 Tcpu] */ 
  1360.                  ((((Tcpu) - 2)/2) << FShft (MSC_RDF))
  1361. #define MSC_RdAcc(Tcpu)          /*  Read Access time (non-burst    */ 
  1362.                           /*  static memory) [2..64 Tcpu]    */ 
  1363.                  ((((Tcpu) - 2)/2) << FShft (MSC_RDF))
  1364. #define MSC_CeilRdAcc(Tcpu)      /*  Ceil. of RdAcc [2..64 Tcpu]    */ 
  1365.                  ((((Tcpu) - 1)/2) << FShft (MSC_RDF))
  1366. #define MSC_RDN  Fld (5, 8) /* ROM/static memory read Delay    */
  1367.                           /* Next access - 1 [Tmem]          */
  1368. #define MSC_NxtRdAcc(Tcpu)       /*  Next Read Access time (burst   */ 
  1369.                           /*  static memory) [2..64 Tcpu]    */ 
  1370.                  ((((Tcpu) - 2)/2) << FShft (MSC_RDN))
  1371. #define MSC_CeilNxtRdAcc(Tcpu)   /*  Ceil. of NxtRdAcc [2..64 Tcpu] */ 
  1372.                  ((((Tcpu) - 1)/2) << FShft (MSC_RDN))
  1373. #define MSC_WrAcc(Tcpu)          /*  Write Access time (non-burst   */ 
  1374.                           /*  static memory) [2..64 Tcpu]    */ 
  1375.                  ((((Tcpu) - 2)/2) << FShft (MSC_RDN))
  1376. #define MSC_CeilWrAcc(Tcpu)      /*  Ceil. of WrAcc [2..64 Tcpu]    */ 
  1377.                  ((((Tcpu) - 1)/2) << FShft (MSC_RDN))
  1378. #define MSC_RRR  Fld (3, 13) /* ROM/static memory RecoveRy      */
  1379.                           /* time/2 [Tmem]                   */
  1380. #define MSC_Rec(Tcpu)          /*  Recovery time [0..28 Tcpu]     */ 
  1381.                  (((Tcpu)/4) << FShft (MSC_RRR))
  1382. #define MSC_CeilRec(Tcpu)        /*  Ceil. of Rec [0..28 Tcpu]      */ 
  1383.                  ((((Tcpu) + 3)/4) << FShft (MSC_RRR))
  1384. /*
  1385.  * Personal Computer Memory Card International Association (PCMCIA) control
  1386.  * register
  1387.  *
  1388.  * Register
  1389.  *    MECR       Memory system: Expansion memory bus (PCMCIA)
  1390.  *               Configuration Register (read/write).
  1391.  *
  1392.  * Clocks
  1393.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  1394.  *    fmem, Tmem Frequency, period of the memory clock (fmem = fcpu/2).
  1395.  *    fbclk, Tbclk Frequency, period of the PCMCIA clock (BCLK).
  1396.  */
  1397.                           /* Memory system:                  */
  1398. #define MECR __REG(0xA0000018)  /*  Expansion memory bus (PCMCIA) Configuration Reg.             */
  1399. #define MECR_PCMCIA(Nb)          /* PCMCIA [0..1]                   */ 
  1400.                  Fld (15, (Nb)*16)
  1401. #define MECR_PCMCIA0 MECR_PCMCIA (0) /* PCMCIA 0                        */
  1402. #define MECR_PCMCIA1 MECR_PCMCIA (1) /* PCMCIA 1                        */
  1403. #define MECR_BSIO Fld (5, 0) /* BCLK Select I/O - 1 [Tmem]      */
  1404. #define MECR_IOClk(Tcpu)         /*  I/O Clock [2..64 Tcpu]         */ 
  1405.                  ((((Tcpu) - 2)/2) << FShft (MECR_BSIO))
  1406. #define MECR_CeilIOClk(Tcpu)     /*  Ceil. of IOClk [2..64 Tcpu]    */ 
  1407.                  ((((Tcpu) - 1)/2) << FShft (MECR_BSIO))
  1408. #define MECR_BSA Fld (5, 5) /* BCLK Select Attribute - 1       */
  1409.                           /* [Tmem]                          */
  1410. #define MECR_AttrClk(Tcpu)       /*  Attribute Clock [2..64 Tcpu]   */ 
  1411.                  ((((Tcpu) - 2)/2) << FShft (MECR_BSA))
  1412. #define MECR_CeilAttrClk(Tcpu)   /*  Ceil. of AttrClk [2..64 Tcpu]  */ 
  1413.                  ((((Tcpu) - 1)/2) << FShft (MECR_BSA))
  1414. #define MECR_BSM Fld (5, 10) /* BCLK Select Memory - 1 [Tmem]   */
  1415. #define MECR_MemClk(Tcpu)        /*  Memory Clock [2..64 Tcpu]      */ 
  1416.                  ((((Tcpu) - 2)/2) << FShft (MECR_BSM))
  1417. #define MECR_CeilMemClk(Tcpu)    /*  Ceil. of MemClk [2..64 Tcpu]   */ 
  1418.                  ((((Tcpu) - 1)/2) << FShft (MECR_BSM))
  1419. /*
  1420.  * On SA1110 only
  1421.  */
  1422. #define MDREFR __REG(0xA000001C)
  1423. #define MDREFR_TRASR Fld (4, 0)
  1424. #define MDREFR_DRI Fld (12, 4)
  1425. #define MDREFR_E0PIN (1 << 16)
  1426. #define MDREFR_K0RUN (1 << 17)
  1427. #define MDREFR_K0DB2 (1 << 18)
  1428. #define MDREFR_E1PIN (1 << 20)
  1429. #define MDREFR_K1RUN (1 << 21)
  1430. #define MDREFR_K1DB2 (1 << 22)
  1431. #define MDREFR_K2RUN (1 << 25)
  1432. #define MDREFR_K2DB2 (1 << 26)
  1433. #define MDREFR_EAPD (1 << 28)
  1434. #define MDREFR_KAPD (1 << 29)
  1435. #define MDREFR_SLFRSH (1 << 31)
  1436. /*
  1437.  * Direct Memory Access (DMA) control registers
  1438.  *
  1439.  * Registers
  1440.  *    DDAR0      Direct Memory Access (DMA) Device Address Register
  1441.  *               channel 0 (read/write).
  1442.  *    DCSR0      Direct Memory Access (DMA) Control and Status
  1443.  *               Register channel 0 (read/write).
  1444.  *    DBSA0      Direct Memory Access (DMA) Buffer Start address
  1445.  *               register A channel 0 (read/write).
  1446.  *    DBTA0      Direct Memory Access (DMA) Buffer Transfer count
  1447.  *               register A channel 0 (read/write).
  1448.  *    DBSB0      Direct Memory Access (DMA) Buffer Start address
  1449.  *               register B channel 0 (read/write).
  1450.  *    DBTB0      Direct Memory Access (DMA) Buffer Transfer count
  1451.  *               register B channel 0 (read/write).
  1452.  *
  1453.  *    DDAR1      Direct Memory Access (DMA) Device Address Register
  1454.  *               channel 1 (read/write).
  1455.  *    DCSR1      Direct Memory Access (DMA) Control and Status
  1456.  *               Register channel 1 (read/write).
  1457.  *    DBSA1      Direct Memory Access (DMA) Buffer Start address
  1458.  *               register A channel 1 (read/write).
  1459.  *    DBTA1      Direct Memory Access (DMA) Buffer Transfer count
  1460.  *               register A channel 1 (read/write).
  1461.  *    DBSB1      Direct Memory Access (DMA) Buffer Start address
  1462.  *               register B channel 1 (read/write).
  1463.  *    DBTB1      Direct Memory Access (DMA) Buffer Transfer count
  1464.  *               register B channel 1 (read/write).
  1465.  *
  1466.  *    DDAR2      Direct Memory Access (DMA) Device Address Register
  1467.  *               channel 2 (read/write).
  1468.  *    DCSR2      Direct Memory Access (DMA) Control and Status
  1469.  *               Register channel 2 (read/write).
  1470.  *    DBSA2      Direct Memory Access (DMA) Buffer Start address
  1471.  *               register A channel 2 (read/write).
  1472.  *    DBTA2      Direct Memory Access (DMA) Buffer Transfer count
  1473.  *               register A channel 2 (read/write).
  1474.  *    DBSB2      Direct Memory Access (DMA) Buffer Start address
  1475.  *               register B channel 2 (read/write).
  1476.  *    DBTB2      Direct Memory Access (DMA) Buffer Transfer count
  1477.  *               register B channel 2 (read/write).
  1478.  *
  1479.  *    DDAR3      Direct Memory Access (DMA) Device Address Register
  1480.  *               channel 3 (read/write).
  1481.  *    DCSR3      Direct Memory Access (DMA) Control and Status
  1482.  *               Register channel 3 (read/write).
  1483.  *    DBSA3      Direct Memory Access (DMA) Buffer Start address
  1484.  *               register A channel 3 (read/write).
  1485.  *    DBTA3      Direct Memory Access (DMA) Buffer Transfer count
  1486.  *               register A channel 3 (read/write).
  1487.  *    DBSB3      Direct Memory Access (DMA) Buffer Start address
  1488.  *               register B channel 3 (read/write).
  1489.  *    DBTB3      Direct Memory Access (DMA) Buffer Transfer count
  1490.  *               register B channel 3 (read/write).
  1491.  *
  1492.  *    DDAR4      Direct Memory Access (DMA) Device Address Register
  1493.  *               channel 4 (read/write).
  1494.  *    DCSR4      Direct Memory Access (DMA) Control and Status
  1495.  *               Register channel 4 (read/write).
  1496.  *    DBSA4      Direct Memory Access (DMA) Buffer Start address
  1497.  *               register A channel 4 (read/write).
  1498.  *    DBTA4      Direct Memory Access (DMA) Buffer Transfer count
  1499.  *               register A channel 4 (read/write).
  1500.  *    DBSB4      Direct Memory Access (DMA) Buffer Start address
  1501.  *               register B channel 4 (read/write).
  1502.  *    DBTB4      Direct Memory Access (DMA) Buffer Transfer count
  1503.  *               register B channel 4 (read/write).
  1504.  *
  1505.  *    DDAR5      Direct Memory Access (DMA) Device Address Register
  1506.  *               channel 5 (read/write).
  1507.  *    DCSR5      Direct Memory Access (DMA) Control and Status
  1508.  *               Register channel 5 (read/write).
  1509.  *    DBSA5      Direct Memory Access (DMA) Buffer Start address
  1510.  *               register A channel 5 (read/write).
  1511.  *    DBTA5      Direct Memory Access (DMA) Buffer Transfer count
  1512.  *               register A channel 5 (read/write).
  1513.  *    DBSB5      Direct Memory Access (DMA) Buffer Start address
  1514.  *               register B channel 5 (read/write).
  1515.  *    DBTB5      Direct Memory Access (DMA) Buffer Transfer count
  1516.  *               register B channel 5 (read/write).
  1517.  */
  1518. #define DMASp    0x00000020 /* DMA control reg. Space [byte]   */
  1519. #define DDAR(Nb) __REG(0xB0000000 + (Nb)*DMASp)  /* DMA Device Address Reg. channel [0..5] */
  1520. #define SetDCSR(Nb) __REG(0xB0000004 + (Nb)*DMASp)  /* Set DMA Control & Status Reg. channel [0..5] (write) */
  1521. #define ClrDCSR(Nb) __REG(0xB0000008 + (Nb)*DMASp)  /* Clear DMA Control & Status Reg. channel [0..5] (write) */
  1522. #define RdDCSR(Nb) __REG(0xB000000C + (Nb)*DMASp)  /* Read DMA Control & Status Reg. channel [0..5] (read) */
  1523. #define DBSA(Nb) __REG(0xB0000010 + (Nb)*DMASp)  /* DMA Buffer Start address reg. A channel [0..5] */
  1524. #define DBTA(Nb) __REG(0xB0000014 + (Nb)*DMASp)  /* DMA Buffer Transfer count reg. A channel [0..5] */
  1525. #define DBSB(Nb) __REG(0xB0000018 + (Nb)*DMASp)  /* DMA Buffer Start address reg. B channel [0..5] */
  1526. #define DBTB(Nb) __REG(0xB000001C + (Nb)*DMASp)  /* DMA Buffer Transfer count reg. B channel [0..5] */
  1527. #define DDAR_RW  0x00000001 /* device data Read/Write          */
  1528. #define DDAR_DevWr (DDAR_RW*0) /*  Device data Write              */
  1529.                           /*  (memory -> device)             */
  1530. #define DDAR_DevRd (DDAR_RW*1) /*  Device data Read               */
  1531.                           /*  (device -> memory)             */
  1532. #define DDAR_E   0x00000002 /* big/little Endian device        */
  1533. #define DDAR_LtlEnd (DDAR_E*0) /*  Little Endian device           */
  1534. #define DDAR_BigEnd (DDAR_E*1) /*  Big Endian device              */
  1535. #define DDAR_BS  0x00000004 /* device Burst Size               */
  1536. #define DDAR_Brst4 (DDAR_BS*0) /*  Burst-of-4 device              */
  1537. #define DDAR_Brst8 (DDAR_BS*1) /*  Burst-of-8 device              */
  1538. #define DDAR_DW  0x00000008 /* device Data Width               */
  1539. #define DDAR_8BitDev (DDAR_DW*0) /*  8-Bit Device                   */
  1540. #define DDAR_16BitDev (DDAR_DW*1) /*  16-Bit Device                  */
  1541. #define DDAR_DS  Fld (4, 4) /* Device Select                   */
  1542. #define DDAR_Ser0UDCTr          /*  Ser. port 0 UDC Transmit       */ 
  1543.                  (0x0 << FShft (DDAR_DS))
  1544. #define DDAR_Ser0UDCRc          /*  Ser. port 0 UDC Receive        */ 
  1545.                  (0x1 << FShft (DDAR_DS))
  1546. #define DDAR_Ser1SDLCTr          /*  Ser. port 1 SDLC Transmit      */ 
  1547.                  (0x2 << FShft (DDAR_DS))
  1548. #define DDAR_Ser1SDLCRc          /*  Ser. port 1 SDLC Receive       */ 
  1549.                  (0x3 << FShft (DDAR_DS))
  1550. #define DDAR_Ser1UARTTr          /*  Ser. port 1 UART Transmit      */ 
  1551.                  (0x4 << FShft (DDAR_DS))
  1552. #define DDAR_Ser1UARTRc          /*  Ser. port 1 UART Receive       */ 
  1553.                  (0x5 << FShft (DDAR_DS))
  1554. #define DDAR_Ser2ICPTr          /*  Ser. port 2 ICP Transmit       */ 
  1555.                  (0x6 << FShft (DDAR_DS))
  1556. #define DDAR_Ser2ICPRc          /*  Ser. port 2 ICP Receive        */ 
  1557.                  (0x7 << FShft (DDAR_DS))
  1558. #define DDAR_Ser3UARTTr          /*  Ser. port 3 UART Transmit      */ 
  1559.                  (0x8 << FShft (DDAR_DS))
  1560. #define DDAR_Ser3UARTRc          /*  Ser. port 3 UART Receive       */ 
  1561.                  (0x9 << FShft (DDAR_DS))
  1562. #define DDAR_Ser4MCP0Tr          /*  Ser. port 4 MCP 0 Transmit     */ 
  1563.                           /*  (audio)                        */ 
  1564.                  (0xA << FShft (DDAR_DS))
  1565. #define DDAR_Ser4MCP0Rc          /*  Ser. port 4 MCP 0 Receive      */ 
  1566.                           /*  (audio)                        */ 
  1567.                  (0xB << FShft (DDAR_DS))
  1568. #define DDAR_Ser4MCP1Tr          /*  Ser. port 4 MCP 1 Transmit     */ 
  1569.                           /*  (telecom)                      */ 
  1570.                  (0xC << FShft (DDAR_DS))
  1571. #define DDAR_Ser4MCP1Rc          /*  Ser. port 4 MCP 1 Receive      */ 
  1572.                           /*  (telecom)                      */ 
  1573.                  (0xD << FShft (DDAR_DS))
  1574. #define DDAR_Ser4SSPTr          /*  Ser. port 4 SSP Transmit       */ 
  1575.                  (0xE << FShft (DDAR_DS))
  1576. #define DDAR_Ser4SSPRc          /*  Ser. port 4 SSP Receive        */ 
  1577.                  (0xF << FShft (DDAR_DS))
  1578. #define DDAR_DA  Fld (24, 8) /* Device Address                  */
  1579. #define DDAR_DevAdd(Add)         /*  Device Address                 */ 
  1580.                  (((Add) & 0xF0000000) | 
  1581.                   (((Add) & 0X003FFFFC) << (FShft (DDAR_DA) - 2)))
  1582. #define DDAR_Ser0UDCWr          /* Ser. port 0 UDC Write           */ 
  1583.                  (DDAR_DevWr + DDAR_Brst8 + DDAR_8BitDev + 
  1584.                   DDAR_Ser0UDCTr + DDAR_DevAdd (__PREG(Ser0UDCDR)))
  1585. #define DDAR_Ser0UDCRd          /* Ser. port 0 UDC Read            */ 
  1586.                  (DDAR_DevRd + DDAR_Brst8 + DDAR_8BitDev + 
  1587.                   DDAR_Ser0UDCRc + DDAR_DevAdd (__PREG(Ser0UDCDR)))
  1588. #define DDAR_Ser1UARTWr          /* Ser. port 1 UART Write          */ 
  1589.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + 
  1590.                   DDAR_Ser1UARTTr + DDAR_DevAdd (__PREG(Ser1UTDR)))
  1591. #define DDAR_Ser1UARTRd          /* Ser. port 1 UART Read           */ 
  1592.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + 
  1593.                   DDAR_Ser1UARTRc + DDAR_DevAdd (__PREG(Ser1UTDR)))
  1594. #define DDAR_Ser1SDLCWr          /* Ser. port 1 SDLC Write          */ 
  1595.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + 
  1596.                   DDAR_Ser1SDLCTr + DDAR_DevAdd (__PREG(Ser1SDDR)))
  1597. #define DDAR_Ser1SDLCRd          /* Ser. port 1 SDLC Read           */ 
  1598.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + 
  1599.                   DDAR_Ser1SDLCRc + DDAR_DevAdd (__PREG(Ser1SDDR)))
  1600. #define DDAR_Ser2UARTWr          /* Ser. port 2 UART Write          */ 
  1601.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + 
  1602.                   DDAR_Ser2ICPTr + DDAR_DevAdd (__PREG(Ser2UTDR)))
  1603. #define DDAR_Ser2UARTRd          /* Ser. port 2 UART Read           */ 
  1604.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + 
  1605.                   DDAR_Ser2ICPRc + DDAR_DevAdd (__PREG(Ser2UTDR)))
  1606. #define DDAR_Ser2HSSPWr          /* Ser. port 2 HSSP Write          */ 
  1607.                  (DDAR_DevWr + DDAR_Brst8 + DDAR_8BitDev + 
  1608.                   DDAR_Ser2ICPTr + DDAR_DevAdd (__PREG(Ser2HSDR)))
  1609. #define DDAR_Ser2HSSPRd          /* Ser. port 2 HSSP Read           */ 
  1610.                  (DDAR_DevRd + DDAR_Brst8 + DDAR_8BitDev + 
  1611.                   DDAR_Ser2ICPRc + DDAR_DevAdd (__PREG(Ser2HSDR)))
  1612. #define DDAR_Ser3UARTWr          /* Ser. port 3 UART Write          */ 
  1613.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + 
  1614.                   DDAR_Ser3UARTTr + DDAR_DevAdd (__PREG(Ser3UTDR)))
  1615. #define DDAR_Ser3UARTRd          /* Ser. port 3 UART Read           */ 
  1616.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + 
  1617.                   DDAR_Ser3UARTRc + DDAR_DevAdd (__PREG(Ser3UTDR)))
  1618. #define DDAR_Ser4MCP0Wr          /* Ser. port 4 MCP 0 Write (audio) */ 
  1619.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + 
  1620.                   DDAR_Ser4MCP0Tr + DDAR_DevAdd (__PREG(Ser4MCDR0)))
  1621. #define DDAR_Ser4MCP0Rd          /* Ser. port 4 MCP 0 Read (audio)  */ 
  1622.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + 
  1623.                   DDAR_Ser4MCP0Rc + DDAR_DevAdd (__PREG(Ser4MCDR0)))
  1624. #define DDAR_Ser4MCP1Wr          /* Ser. port 4 MCP 1 Write         */ 
  1625.                           /* (telecom)                       */ 
  1626.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + 
  1627.                   DDAR_Ser4MCP1Tr + DDAR_DevAdd (__PREG(Ser4MCDR1)))
  1628. #define DDAR_Ser4MCP1Rd          /* Ser. port 4 MCP 1 Read          */ 
  1629.                           /* (telecom)                       */ 
  1630.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + 
  1631.                   DDAR_Ser4MCP1Rc + DDAR_DevAdd (__PREG(Ser4MCDR1)))
  1632. #define DDAR_Ser4SSPWr          /* Ser. port 4 SSP Write (16 bits) */ 
  1633.                  (DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + 
  1634.                   DDAR_Ser4SSPTr + DDAR_DevAdd (__PREG(Ser4SSDR)))
  1635. #define DDAR_Ser4SSPRd          /* Ser. port 4 SSP Read (16 bits)  */ 
  1636.                  (DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + 
  1637.                   DDAR_Ser4SSPRc + DDAR_DevAdd (__PREG(Ser4SSDR)))
  1638. #define DCSR_RUN 0x00000001 /* DMA RUNing                      */
  1639. #define DCSR_IE  0x00000002 /* DMA Interrupt Enable            */
  1640. #define DCSR_ERROR 0x00000004 /* DMA ERROR                       */
  1641. #define DCSR_DONEA 0x00000008 /* DONE DMA transfer buffer A      */
  1642. #define DCSR_STRTA 0x00000010 /* STaRTed DMA transfer buffer A   */
  1643. #define DCSR_DONEB 0x00000020 /* DONE DMA transfer buffer B      */
  1644. #define DCSR_STRTB 0x00000040 /* STaRTed DMA transfer buffer B   */
  1645. #define DCSR_BIU 0x00000080 /* DMA Buffer In Use               */
  1646. #define DCSR_BufA (DCSR_BIU*0) /*  DMA Buffer A in use            */
  1647. #define DCSR_BufB (DCSR_BIU*1) /*  DMA Buffer B in use            */
  1648. #define DBT_TC   Fld (13, 0) /* Transfer Count                  */
  1649. #define DBTA_TCA DBT_TC   /* Transfer Count buffer A         */
  1650. #define DBTB_TCB DBT_TC   /* Transfer Count buffer B         */
  1651. /*
  1652.  * Liquid Crystal Display (LCD) control registers
  1653.  *
  1654.  * Registers
  1655.  *    LCCR0      Liquid Crystal Display (LCD) Control Register 0
  1656.  *               (read/write).
  1657.  *               [Bits LDM, BAM, and ERM are only implemented in
  1658.  *               versions 2.0 (rev. = 8) and higher of the StrongARM
  1659.  *               SA-1100.]
  1660.  *    LCSR       Liquid Crystal Display (LCD) Status Register
  1661.  *               (read/write).
  1662.  *               [Bit LDD can be only read in versions 1.0 (rev. = 1)
  1663.  *               and 1.1 (rev. = 2) of the StrongARM SA-1100, it can be
  1664.  *               read and written (cleared) in versions 2.0 (rev. = 8)
  1665.  *               and higher.]
  1666.  *    DBAR1      Liquid Crystal Display (LCD) Direct Memory Access
  1667.  *               (DMA) Base Address Register channel 1 (read/write).
  1668.  *    DCAR1      Liquid Crystal Display (LCD) Direct Memory Access
  1669.  *               (DMA) Current Address Register channel 1 (read).
  1670.  *    DBAR2      Liquid Crystal Display (LCD) Direct Memory Access
  1671.  *               (DMA) Base Address Register channel 2 (read/write).
  1672.  *    DCAR2      Liquid Crystal Display (LCD) Direct Memory Access
  1673.  *               (DMA) Current Address Register channel 2 (read).
  1674.  *    LCCR1      Liquid Crystal Display (LCD) Control Register 1
  1675.  *               (read/write).
  1676.  *               [The LCCR1 register can be only written in
  1677.  *               versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
  1678.  *               StrongARM SA-1100, it can be written and read in
  1679.  *               versions 2.0 (rev. = 8) and higher.]
  1680.  *    LCCR2      Liquid Crystal Display (LCD) Control Register 2
  1681.  *               (read/write).
  1682.  *               [The LCCR1 register can be only written in
  1683.  *               versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
  1684.  *               StrongARM SA-1100, it can be written and read in
  1685.  *               versions 2.0 (rev. = 8) and higher.]
  1686.  *    LCCR3      Liquid Crystal Display (LCD) Control Register 3
  1687.  *               (read/write).
  1688.  *               [The LCCR1 register can be only written in
  1689.  *               versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
  1690.  *               StrongARM SA-1100, it can be written and read in
  1691.  *               versions 2.0 (rev. = 8) and higher. Bit PCP is only
  1692.  *               implemented in versions 2.0 (rev. = 8) and higher of
  1693.  *               the StrongARM SA-1100.]
  1694.  *
  1695.  * Clocks
  1696.  *    fcpu, Tcpu Frequency, period of the CPU core clock (CCLK).
  1697.  *    fmem, Tmem Frequency, period of the memory clock (fmem = fcpu/2).
  1698.  *    fpix, Tpix Frequency, period of the pixel clock.
  1699.  *    fln, Tln   Frequency, period of the line clock.
  1700.  *    fac, Tac   Frequency, period of the AC bias clock.
  1701.  */
  1702. #define LCD_PEntrySp 2        /* LCD Palette Entry Space [byte]  */
  1703. #define LCD_4BitPSp          /* LCD 4-Bit pixel Palette Space   */ 
  1704.                           /* [byte]                          */ 
  1705.                  (16*LCD_PEntrySp)
  1706. #define LCD_8BitPSp          /* LCD 8-Bit pixel Palette Space   */ 
  1707.                           /* [byte]                          */ 
  1708.                  (256*LCD_PEntrySp)
  1709. #define LCD_12_16BitPSp          /* LCD 12/16-Bit pixel             */ 
  1710.                           /* dummy-Palette Space [byte]      */ 
  1711.                  (16*LCD_PEntrySp)
  1712. #define LCD_PGrey Fld (4, 0) /* LCD Palette entry Grey value    */
  1713. #define LCD_PBlue Fld (4, 0) /* LCD Palette entry Blue value    */
  1714. #define LCD_PGreen Fld (4, 4) /* LCD Palette entry Green value   */
  1715. #define LCD_PRed Fld (4, 8) /* LCD Palette entry Red value     */
  1716. #define LCD_PBS  Fld (2, 12) /* LCD Pixel Bit Size              */
  1717. #define LCD_4Bit          /*  LCD 4-Bit pixel mode           */ 
  1718.                  (0 << FShft (LCD_PBS))
  1719. #define LCD_8Bit          /*  LCD 8-Bit pixel mode           */ 
  1720.                  (1 << FShft (LCD_PBS))
  1721. #define LCD_12_16Bit          /*  LCD 12/16-Bit pixel mode       */ 
  1722.                  (2 << FShft (LCD_PBS))
  1723. #define LCD_Int0_0 0x0      /* LCD Intensity =   0.0% =  0     */
  1724. #define LCD_Int11_1 0x1      /* LCD Intensity =  11.1% =  1/9   */
  1725. #define LCD_Int20_0 0x2      /* LCD Intensity =  20.0% =  1/5   */
  1726. #define LCD_Int26_7 0x3      /* LCD Intensity =  26.7% =  4/15  */
  1727. #define LCD_Int33_3 0x4      /* LCD Intensity =  33.3% =  3/9   */
  1728. #define LCD_Int40_0 0x5      /* LCD Intensity =  40.0% =  2/5   */
  1729. #define LCD_Int44_4 0x6      /* LCD Intensity =  44.4% =  4/9   */
  1730. #define LCD_Int50_0 0x7      /* LCD Intensity =  50.0% =  1/2   */
  1731. #define LCD_Int55_6 0x8      /* LCD Intensity =  55.6% =  5/9   */
  1732. #define LCD_Int60_0 0x9      /* LCD Intensity =  60.0% =  3/5   */
  1733. #define LCD_Int66_7 0xA      /* LCD Intensity =  66.7% =  6/9   */
  1734. #define LCD_Int73_3 0xB      /* LCD Intensity =  73.3% = 11/15  */
  1735. #define LCD_Int80_0 0xC      /* LCD Intensity =  80.0% =  4/5   */
  1736. #define LCD_Int88_9 0xD      /* LCD Intensity =  88.9% =  8/9   */
  1737. #define LCD_Int100_0 0xE      /* LCD Intensity = 100.0% =  1     */
  1738. #define LCD_Int100_0A 0xF      /* LCD Intensity = 100.0% =  1     */
  1739.                           /* (Alternative)                   */
  1740. #define LCCR0 __REG(0xB0100000)  /* LCD Control Reg. 0 */
  1741. #define LCSR __REG(0xB0100004)  /* LCD Status Reg. */
  1742. #define DBAR1 __REG(0xB0100010)  /* LCD DMA Base Address Reg. channel 1 */
  1743. #define DCAR1 __REG(0xB0100014)  /* LCD DMA Current Address Reg. channel 1 */
  1744. #define DBAR2 __REG(0xB0100018)  /* LCD DMA Base Address Reg.  channel 2 */
  1745. #define DCAR2 __REG(0xB010001C)  /* LCD DMA Current Address Reg. channel 2 */
  1746. #define LCCR1 __REG(0xB0100020)  /* LCD Control Reg. 1 */
  1747. #define LCCR2 __REG(0xB0100024)  /* LCD Control Reg. 2 */
  1748. #define LCCR3 __REG(0xB0100028)  /* LCD Control Reg. 3 */
  1749. #define LCCR0_LEN 0x00000001 /* LCD ENable                      */
  1750. #define LCCR0_CMS 0x00000002 /* Color/Monochrome display Select */
  1751. #define LCCR0_Color (LCCR0_CMS*0) /*  Color display                  */
  1752. #define LCCR0_Mono (LCCR0_CMS*1) /*  Monochrome display             */
  1753. #define LCCR0_SDS 0x00000004 /* Single/Dual panel display       */
  1754.                           /* Select                          */
  1755. #define LCCR0_Sngl (LCCR0_SDS*0) /*  Single panel display           */
  1756. #define LCCR0_Dual (LCCR0_SDS*1) /*  Dual panel display             */
  1757. #define LCCR0_LDM 0x00000008 /* LCD Disable done (LDD)          */
  1758.                           /* interrupt Mask (disable)        */
  1759. #define LCCR0_BAM 0x00000010 /* Base Address update (BAU)       */
  1760.                           /* interrupt Mask (disable)        */
  1761. #define LCCR0_ERM 0x00000020 /* LCD ERror (BER, IOL, IUL, IOU,  */
  1762.                           /* IUU, OOL, OUL, OOU, and OUU)    */
  1763.                           /* interrupt Mask (disable)        */
  1764. #define LCCR0_PAS 0x00000080 /* Passive/Active display Select   */
  1765. #define LCCR0_Pas (LCCR0_PAS*0) /*  Passive display (STN)          */
  1766. #define LCCR0_Act (LCCR0_PAS*1) /*  Active display (TFT)           */
  1767. #define LCCR0_BLE 0x00000100 /* Big/Little Endian select        */
  1768. #define LCCR0_LtlEnd (LCCR0_BLE*0) /*  Little Endian frame buffer     */
  1769. #define LCCR0_BigEnd (LCCR0_BLE*1) /*  Big Endian frame buffer        */
  1770. #define LCCR0_DPD 0x00000200 /* Double Pixel Data (monochrome   */
  1771.                           /* display mode)                   */
  1772. #define LCCR0_4PixMono (LCCR0_DPD*0) /*  4-Pixel/clock Monochrome       */
  1773.                           /*  display                        */
  1774. #define LCCR0_8PixMono (LCCR0_DPD*1) /*  8-Pixel/clock Monochrome       */
  1775.                           /*  display                        */
  1776. #define LCCR0_PDD Fld (8, 12) /* Palette DMA request Delay       */
  1777.                           /* [Tmem]                          */
  1778. #define LCCR0_DMADel(Tcpu)       /*  palette DMA request Delay      */ 
  1779.                           /*  [0..510 Tcpu]                  */ 
  1780.                  ((Tcpu)/2 << FShft (LCCR0_PDD))
  1781. #define LCSR_LDD 0x00000001 /* LCD Disable Done                */
  1782. #define LCSR_BAU 0x00000002 /* Base Address Update (read)      */
  1783. #define LCSR_BER 0x00000004 /* Bus ERror                       */
  1784. #define LCSR_ABC 0x00000008 /* AC Bias clock Count             */
  1785. #define LCSR_IOL 0x00000010 /* Input FIFO Over-run Lower       */
  1786.                           /* panel                           */
  1787. #define LCSR_IUL 0x00000020 /* Input FIFO Under-run Lower      */
  1788.                           /* panel                           */
  1789. #define LCSR_IOU 0x00000040 /* Input FIFO Over-run Upper       */
  1790.                           /* panel                           */
  1791. #define LCSR_IUU 0x00000080 /* Input FIFO Under-run Upper      */
  1792.                           /* panel                           */
  1793. #define LCSR_OOL 0x00000100 /* Output FIFO Over-run Lower      */
  1794.                           /* panel                           */
  1795. #define LCSR_OUL 0x00000200 /* Output FIFO Under-run Lower     */
  1796.                           /* panel                           */
  1797. #define LCSR_OOU 0x00000400 /* Output FIFO Over-run Upper      */
  1798.                           /* panel                           */
  1799. #define LCSR_OUU 0x00000800 /* Output FIFO Under-run Upper     */
  1800.                           /* panel                           */
  1801. #define LCCR1_PPL Fld (6, 4) /* Pixels Per Line/16 - 1          */
  1802. #define LCCR1_DisWdth(Pixel)     /*  Display Width [16..1024 pix.]  */ 
  1803.                  (((Pixel) - 16)/16 << FShft (LCCR1_PPL))
  1804. #define LCCR1_HSW Fld (6, 10) /* Horizontal Synchronization      */
  1805.                           /* pulse Width - 1 [Tpix] (L_LCLK) */
  1806. #define LCCR1_HorSnchWdth(Tpix)  /*  Horizontal Synchronization     */ 
  1807.                           /*  pulse Width [1..64 Tpix]       */ 
  1808.                  (((Tpix) - 1) << FShft (LCCR1_HSW))
  1809. #define LCCR1_ELW Fld (8, 16) /* End-of-Line pixel clock Wait    */
  1810.                           /* count - 1 [Tpix]                */
  1811. #define LCCR1_EndLnDel(Tpix)     /*  End-of-Line Delay              */ 
  1812.                           /*  [1..256 Tpix]                  */ 
  1813.                  (((Tpix) - 1) << FShft (LCCR1_ELW))
  1814. #define LCCR1_BLW Fld (8, 24) /* Beginning-of-Line pixel clock   */
  1815.                           /* Wait count - 1 [Tpix]           */
  1816. #define LCCR1_BegLnDel(Tpix)     /*  Beginning-of-Line Delay        */ 
  1817.                           /*  [1..256 Tpix]                  */ 
  1818.                  (((Tpix) - 1) << FShft (LCCR1_BLW))
  1819. #define LCCR2_LPP Fld (10, 0) /* Line Per Panel - 1              */
  1820. #define LCCR2_DisHght(Line)      /*  Display Height [1..1024 lines] */ 
  1821.                  (((Line) - 1) << FShft (LCCR2_LPP))
  1822. #define LCCR2_VSW Fld (6, 10) /* Vertical Synchronization pulse  */
  1823.                           /* Width - 1 [Tln] (L_FCLK)        */
  1824. #define LCCR2_VrtSnchWdth(Tln)   /*  Vertical Synchronization pulse */ 
  1825.                           /*  Width [1..64 Tln]              */ 
  1826.                  (((Tln) - 1) << FShft (LCCR2_VSW))
  1827. #define LCCR2_EFW Fld (8, 16) /* End-of-Frame line clock Wait    */
  1828.                           /* count [Tln]                     */
  1829. #define LCCR2_EndFrmDel(Tln)     /*  End-of-Frame Delay             */ 
  1830.                           /*  [0..255 Tln]                   */ 
  1831.                  ((Tln) << FShft (LCCR2_EFW))
  1832. #define LCCR2_BFW Fld (8, 24) /* Beginning-of-Frame line clock   */
  1833.                           /* Wait count [Tln]                */
  1834. #define LCCR2_BegFrmDel(Tln)     /*  Beginning-of-Frame Delay       */ 
  1835.                           /*  [0..255 Tln]                   */ 
  1836.                  ((Tln) << FShft (LCCR2_BFW))
  1837. #define LCCR3_PCD Fld (8, 0) /* Pixel Clock Divisor/2 - 2       */
  1838.                           /* [1..255] (L_PCLK)               */
  1839.                           /* fpix = fcpu/(2*(PCD + 2))       */
  1840.                           /* Tpix = 2*(PCD + 2)*Tcpu         */
  1841. #define LCCR3_PixClkDiv(Div)     /*  Pixel Clock Divisor [6..514]   */ 
  1842.                  (((Div) - 4)/2 << FShft (LCCR3_PCD))
  1843.                           /*  fpix = fcpu/(2*Floor (Div/2))  */
  1844.                           /*  Tpix = 2*Floor (Div/2)*Tcpu    */
  1845. #define LCCR3_CeilPixClkDiv(Div) /*  Ceil. of PixClkDiv [6..514]    */ 
  1846.                  (((Div) - 3)/2 << FShft (LCCR3_PCD))
  1847.                           /*  fpix = fcpu/(2*Ceil (Div/2))   */
  1848.                           /*  Tpix = 2*Ceil (Div/2)*Tcpu     */
  1849. #define LCCR3_ACB Fld (8, 8) /* AC Bias clock half period - 1   */
  1850.                           /* [Tln] (L_BIAS)                  */
  1851. #define LCCR3_ACBsDiv(Div)       /*  AC Bias clock Divisor [2..512] */ 
  1852.                  (((Div) - 2)/2 << FShft (LCCR3_ACB))
  1853.                           /*  fac = fln/(2*Floor (Div/2))    */
  1854.                           /*  Tac = 2*Floor (Div/2)*Tln      */
  1855. #define LCCR3_CeilACBsDiv(Div)   /*  Ceil. of ACBsDiv [2..512]      */ 
  1856.                  (((Div) - 1)/2 << FShft (LCCR3_ACB))
  1857.                           /*  fac = fln/(2*Ceil (Div/2))     */
  1858.                           /*  Tac = 2*Ceil (Div/2)*Tln       */
  1859. #define LCCR3_API Fld (4, 16) /* AC bias Pin transitions per     */
  1860.                           /* Interrupt                       */
  1861. #define LCCR3_ACBsCntOff         /*  AC Bias clock transition Count */ 
  1862.                           /*  Off                            */ 
  1863.                  (0 << FShft (LCCR3_API))
  1864. #define LCCR3_ACBsCnt(Trans)     /*  AC Bias clock transition Count */ 
  1865.                           /*  [1..15]                        */ 
  1866.                  ((Trans) << FShft (LCCR3_API))
  1867. #define LCCR3_VSP 0x00100000 /* Vertical Synchronization pulse  */
  1868.                           /* Polarity (L_FCLK)               */
  1869. #define LCCR3_VrtSnchH (LCCR3_VSP*0) /*  Vertical Synchronization pulse */
  1870.                           /*  active High                    */
  1871. #define LCCR3_VrtSnchL (LCCR3_VSP*1) /*  Vertical Synchronization pulse */
  1872.                           /*  active Low                     */
  1873. #define LCCR3_HSP 0x00200000 /* Horizontal Synchronization      */
  1874.                           /* pulse Polarity (L_LCLK)         */
  1875. #define LCCR3_HorSnchH (LCCR3_HSP*0) /*  Horizontal Synchronization     */
  1876.                           /*  pulse active High              */
  1877. #define LCCR3_HorSnchL (LCCR3_HSP*1) /*  Horizontal Synchronization     */
  1878.                           /*  pulse active Low               */
  1879. #define LCCR3_PCP 0x00400000 /* Pixel Clock Polarity (L_PCLK)   */
  1880. #define LCCR3_PixRsEdg (LCCR3_PCP*0) /*  Pixel clock Rising-Edge        */
  1881. #define LCCR3_PixFlEdg (LCCR3_PCP*1) /*  Pixel clock Falling-Edge       */
  1882. #define LCCR3_OEP 0x00800000 /* Output Enable Polarity (L_BIAS, */
  1883.                           /* active display mode)            */
  1884. #define LCCR3_OutEnH (LCCR3_OEP*0) /*  Output Enable active High      */
  1885. #define LCCR3_OutEnL (LCCR3_OEP*1) /*  Output Enable active Low       */
  1886. #ifndef __ASSEMBLY__
  1887. extern unsigned int processor_id;
  1888. #endif
  1889. #define CPU_REVISION (processor_id & 15)
  1890. #define CPU_SA1110_A0 (0)
  1891. #define CPU_SA1110_B0 (4)
  1892. #define CPU_SA1110_B1 (5)
  1893. #define CPU_SA1110_B2 (6)
  1894. #define CPU_SA1110_B4 (8)
  1895. #define CPU_SA1100_ID (0x4401a110)
  1896. #define CPU_SA1100_MASK (0xfffffff0)
  1897. #define CPU_SA1110_ID (0x6901b110)
  1898. #define CPU_SA1110_MASK (0xfffffff0)