Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:22:48

0001 /*
0002  * Motorola MC9328MXL Register definitions
0003  *
0004  * Copyright (c) 2003 by Cogent Computer Systems
0005  * Written by Jay Monkman <jtm@lopingdog.com>
0006  *
0007  *  The license and distribution terms for this file may be
0008  *  found in the file LICENSE in this distribution or at
0009  *  http://www.rtems.org/license/LICENSE.
0010  */
0011 #ifndef __MC9328MXL_H__
0012 #define __MC9328MXL_H__
0013 
0014 #include <stdint.h>
0015 
0016 #define bit(_x_) (1 << (_x_))
0017 
0018 /* Define some constants relating to the CPU */
0019 #define MC9328MXL_NUM_INTS  64        /* CPU supports 64 interrupts */
0020 
0021 /* Define the base addresses of the internal registers */
0022 #define MC9328MXL_AIPI1_BASE    0x00200000
0023 #define MC9328MXL_AIPI2_BASE    0x00210000
0024 #define MC9328MXL_WDOG_BASE     0x00201000
0025 #define MC9328MXL_TMR1_BASE     0x00202000
0026 #define MC9328MXL_TMR2_BASE     0x00203000
0027 #define MC9328MXL_RTC_BASE      0x00204000
0028 #define MC9328MXL_LCDC_BASE     0x00205000
0029 #define MC9328MXL_UART1_BASE    0x00206000
0030 #define MC9328MXL_UART2_BASE    0x00207000
0031 #define MC9328MXL_PWM_BASE      0x00208000
0032 #define MC9328MXL_DMAC_BASE     0x00209000
0033 #define MC9328MXL_USBD_BASE     0x00212000
0034 #define MC9328MXL_SPI1_BASE     0x00213000
0035 #define MC9328MXL_SPI2_BASE     0x00219000
0036 #define MC9328MXL_MMC_BASE      0x00214000
0037 #define MC9328MXL_I2C_BASE      0x00217000
0038 #define MC9328MXL_SSI_BASE      0x00218000
0039 #define MC9328MXL_MSHC_BASE     0x0021a000
0040 #define MC9328MXL_PLL_BASE      0x0021b000
0041 #define MC9328MXL_RESET_BASE    0x0021b800
0042 #define MC9328MXL_SYSCTRL_BASE  0x0021b804
0043 #define MC9328MXL_GPIOA_BASE    0x0021c000
0044 #define MC9328MXL_GPIOB_BASE    0x0021c100
0045 #define MC9328MXL_GPIOC_BASE    0x0021c200
0046 #define MC9328MXL_GPIOD_BASE    0x0021c300
0047 #define MC9328MXL_EIM_BASE      0x00220000
0048 #define MC9328MXL_SDRAM_BASE    0x00221000
0049 #define MC9328MXL_MMA_BASE      0x00222000
0050 #define MC9328MXL_AITC_BASE     0x00223000
0051 #define MC9328MXL_CSI_BASE      0x00224000
0052 
0053 
0054 #define MC9328MXL_TMR1_TCTL   (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x00)))
0055 #define MC9328MXL_TMR1_TPRER  (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x04)))
0056 #define MC9328MXL_TMR1_TCMP   (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x08)))
0057 #define MC9328MXL_TMR1_TCR    (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x0c)))
0058 #define MC9328MXL_TMR1_TCN    (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x10)))
0059 #define MC9328MXL_TMR1_TSTAT  (*((volatile uint32_t *)((MC9328MXL_TMR1_BASE) + 0x14)))
0060 
0061 #define MC9328MXL_TMR2_TCTL   (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x00)))
0062 #define MC9328MXL_TMR2_TPRER  (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x04)))
0063 #define MC9328MXL_TMR2_TCMP   (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x08)))
0064 #define MC9328MXL_TMR2_TCR    (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x0c)))
0065 #define MC9328MXL_TMR2_TCN    (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x10)))
0066 #define MC9328MXL_TMR2_TSTAT  (*((volatile uint32_t *)((MC9328MXL_TMR2_BASE) + 0x14)))
0067 
0068 #define MC9328MXL_TMR_TCTL_SWR                (bit(15))
0069 #define MC9328MXL_TMR_TCTL_FRR                (bit(8))
0070 #define MC9328MXL_TMR_TCTL_CAP_DIS            (0 << 6)
0071 #define MC9328MXL_TMR_TCTL_CAP_RISE           (1 << 6)
0072 #define MC9328MXL_TMR_TCTL_CAP_FALL           (2 << 6)
0073 #define MC9328MXL_TMR_TCTL_CAP_ANY            (3 << 6)
0074 #define MC9328MXL_TMR_TCTL_OM                 (bit(5))
0075 #define MC9328MXL_TMR_TCTL_IRQEN              (bit(4))
0076 #define MC9328MXL_TMR_TCTL_CLKSRC_STOP        (0 << 1)
0077 #define MC9328MXL_TMR_TCTL_CLKSRC_PCLK1       (1 << 1)
0078 #define MC9328MXL_TMR_TCTL_CLKSRC_PCLK_DIV16  (2 << 1)
0079 #define MC9328MXL_TMR_TCTL_CLKSRC_TIN         (3 << 1)
0080 #define MC9328MXL_TMR_TCTL_CLKSRC_32KHX       (4 << 1)
0081 #define MC9328MXL_TMR_TCTL_TEN                (bit(0))
0082 
0083 #define MC9328MXL_UART1_RXD   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x00)))
0084 #define MC9328MXL_UART1_TXD   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x40)))
0085 #define MC9328MXL_UART1_CR1   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x80)))
0086 #define MC9328MXL_UART1_CR2   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x84)))
0087 #define MC9328MXL_UART1_CR3   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x88)))
0088 #define MC9328MXL_UART1_CR4   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x8c)))
0089 #define MC9328MXL_UART1_FCR   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x90)))
0090 #define MC9328MXL_UART1_SR1   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x94)))
0091 #define MC9328MXL_UART1_SR2   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x98)))
0092 #define MC9328MXL_UART1_ESC   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0x9c)))
0093 #define MC9328MXL_UART1_TIM   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xa0)))
0094 #define MC9328MXL_UART1_BIR   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xa4)))
0095 #define MC9328MXL_UART1_BMR   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xa8)))
0096 #define MC9328MXL_UART1_BRC   (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xac)))
0097 #define MC9328MXL_UART1_IPR1  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xb0)))
0098 #define MC9328MXL_UART1_IPR2  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xb4)))
0099 #define MC9328MXL_UART1_IPR3  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xb8)))
0100 #define MC9328MXL_UART1_IPR4  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xbc)))
0101 #define MC9328MXL_UART1_MPR1  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xc0)))
0102 #define MC9328MXL_UART1_MPR2  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xc4)))
0103 #define MC9328MXL_UART1_MPR3  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xc8)))
0104 #define MC9328MXL_UART1_MPR4  (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xcc)))
0105 #define MC9328MXL_UART1_TS    (*((volatile uint32_t *)((MC9328MXL_UART1_BASE) + 0xd0)))
0106 
0107 #define MC9328MXL_UART2_RXD   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x00)))
0108 #define MC9328MXL_UART2_TXD   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x40)))
0109 #define MC9328MXL_UART2_CR1   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x80)))
0110 #define MC9328MXL_UART2_CR2   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x84)))
0111 #define MC9328MXL_UART2_CR3   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x88)))
0112 #define MC9328MXL_UART2_CR4   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x8c)))
0113 #define MC9328MXL_UART2_FCR   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x90)))
0114 #define MC9328MXL_UART2_SR1   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x94)))
0115 #define MC9328MXL_UART2_SR2   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x98)))
0116 #define MC9328MXL_UART2_ESC   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0x9c)))
0117 #define MC9328MXL_UART2_TIM   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xa0)))
0118 #define MC9328MXL_UART2_BIR   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xa4)))
0119 #define MC9328MXL_UART2_BMR   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xa8)))
0120 #define MC9328MXL_UART2_BRC   (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xac)))
0121 #define MC9328MXL_UART2_IPR1  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xb0)))
0122 #define MC9328MXL_UART2_IPR2  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xb4)))
0123 #define MC9328MXL_UART2_IPR3  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xb8)))
0124 #define MC9328MXL_UART2_IPR4  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xbc)))
0125 #define MC9328MXL_UART2_MPR1  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xc0)))
0126 #define MC9328MXL_UART2_MPR2  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xc4)))
0127 #define MC9328MXL_UART2_MPR3  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xc8)))
0128 #define MC9328MXL_UART2_MPR4  (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xcc)))
0129 #define MC9328MXL_UART2_TS    (*((volatile uint32_t *)((MC9328MXL_UART2_BASE) + 0xd0)))
0130 
0131 typedef struct {
0132     volatile uint32_t rxd;
0133     volatile uint32_t _res0[15];
0134     volatile uint32_t txd;
0135     volatile uint32_t _res1[15];
0136     volatile uint32_t cr1;
0137     volatile uint32_t cr2;
0138     volatile uint32_t cr3;
0139     volatile uint32_t cr4;
0140     volatile uint32_t fcr;
0141     volatile uint32_t sr1;
0142     volatile uint32_t sr2;
0143     volatile uint32_t esc;
0144     volatile uint32_t tim;
0145     volatile uint32_t bir;
0146     volatile uint32_t bmr;
0147     volatile uint32_t brc;
0148     volatile uint32_t ipr1;
0149     volatile uint32_t ipr2;
0150     volatile uint32_t ipr3;
0151     volatile uint32_t ipr4;
0152     volatile uint32_t mpr1;
0153     volatile uint32_t mpr2;
0154     volatile uint32_t mpr3;
0155     volatile uint32_t mpr4;
0156     volatile uint32_t ts;
0157 } mc9328mxl_uart_regs_t;
0158 
0159 #define MC9328MXL_UART_RXD_CHARRDY    (bit(15))
0160 #define MC9328MXL_UART_RXD_ERR        (bit(14))
0161 #define MC9328MXL_UART_RXD_OVRRUN     (bit(13))
0162 #define MC9328MXL_UART_RXD_FRMERR     (bit(12))
0163 #define MC9328MXL_UART_RXD_BRK        (bit(11))
0164 #define MC9328MXL_UART_RXD_PRERR      (bit(10))
0165 #define MC9328MXL_UART_RXD_CHARMASK   (0xff)
0166 
0167 #define MC9328MXL_UART_CR1_ADEN       (bit(15))
0168 #define MC9328MXL_UART_CR1_ADBR       (bit(14))
0169 #define MC9328MXL_UART_CR1_TRDYEN     (bit(13))
0170 #define MC9328MXL_UART_CR1_IDEN       (bit(12))
0171 #define MC9328MXL_UART_CR1_ICD4       (0x0 << 10)
0172 #define MC9328MXL_UART_CR1_ICD8       (0x1 << 10)
0173 #define MC9328MXL_UART_CR1_ICD16      (0x2 << 10)
0174 #define MC9328MXL_UART_CR1_ICD32      (0x3 << 10)
0175 #define MC9328MXL_UART_CR1_RRDYEN     (bit(9))
0176 #define MC9328MXL_UART_CR1_RDMAEN     (bit(8))
0177 #define MC9328MXL_UART_CR1_IREN       (bit(7))
0178 #define MC9328MXL_UART_CR1_TXMPTYEN   (bit(6))
0179 #define MC9328MXL_UART_CR1_RTSDEN     (bit(5))
0180 #define MC9328MXL_UART_CR1_SNDBRK     (bit(4))
0181 #define MC9328MXL_UART_CR1_TDMAEN     (bit(3))
0182 #define MC9328MXL_UART_CR1_UARTCLKEN  (bit(2))
0183 #define MC9328MXL_UART_CR1_DOZE       (bit(1))
0184 #define MC9328MXL_UART_CR1_UARTEN     (bit(0))
0185 
0186 
0187 #define MC9328MXL_UART_CR2_ESCI       (bit(15))
0188 #define MC9328MXL_UART_CR2_IRTS       (bit(14))
0189 #define MC9328MXL_UART_CR2_CTSC       (bit(13))
0190 #define MC9328MXL_UART_CR2_CTS        (bit(12))
0191 #define MC9328MXL_UART_CR2_ESCEN      (bit(11))
0192 #define MC9328MXL_UART_CR2_RTEC_RE    (0 << 9)
0193 #define MC9328MXL_UART_CR2_RTEC_FE    (1 << 9)
0194 #define MC9328MXL_UART_CR2_RTEC_ANY   (2 << 9)
0195 #define MC9328MXL_UART_CR2_PREN       (bit(8))
0196 #define MC9328MXL_UART_CR2_PROE       (bit(7))
0197 #define MC9328MXL_UART_CR2_STPB       (bit(6))
0198 #define MC9328MXL_UART_CR2_WS         (bit(5))
0199 #define MC9328MXL_UART_CR2_RTSEN      (bit(4))
0200 #define MC9328MXL_UART_CR2_TXEN       (bit(2))
0201 #define MC9328MXL_UART_CR2_RXEN       (bit(1))
0202 #define MC9328MXL_UART_CR2_SRST       (bit(0))
0203 
0204 #define MC9328MXL_UART_CR3_DPEC_RE    (0 << 14)  /* UART2 only */
0205 #define MC9328MXL_UART_CR3_DPEC_FE    (1 << 14)  /* UART2 only */
0206 #define MC9328MXL_UART_CR3_DPEC_ANY   (2 << 14)  /* UART2 only */
0207 #define MC9328MXL_UART_CR3_DTREN      (bit(13))  /* UART2 only */
0208 #define MC9328MXL_UART_CR3_PARERREN   (bit(12))
0209 #define MC9328MXL_UART_CR3_FRAERREN   (bit(11))
0210 #define MC9328MXL_UART_CR3_DSR        (bit(10))  /* UART2 only */
0211 #define MC9328MXL_UART_CR3_DCD        (bit(9))   /* UART2 only */
0212 #define MC9328MXL_UART_CR3_RI         (bit(8))   /* UART2 only */
0213 #define MC9328MXL_UART_CR3_RXDSEN     (bit(6))
0214 #define MC9328MXL_UART_CR3_AIRINTEN   (bit(5))
0215 #define MC9328MXL_UART_CR3_AWAKEN     (bit(4))
0216 #define MC9328MXL_UART_CR3_REF25      (bit(3))
0217 #define MC9328MXL_UART_CR3_REF30      (bit(2))
0218 #define MC9328MXL_UART_CR3_INVT       (bit(1))
0219 #define MC9328MXL_UART_CR3_BPEN       (bit(0))
0220 
0221 #define MC9328MXL_UART_CR4_CTSTL(_x_) (((_x_) & 0x3f) << 10)
0222 #define MC9328MXL_UART_CR4_INVR       (bit(9))
0223 #define MC9328MXL_UART_CR4_ENIRI      (bit(8))
0224 #define MC9328MXL_UART_CR4_WKEN       (bit(7))
0225 #define MC9328MXL_UART_CR4_REF16      (bit(6))
0226 #define MC9328MXL_UART_CR4_IRSC       (bit(5))
0227 #define MC9328MXL_UART_CR4_TCEN       (bit(3))
0228 #define MC9328MXL_UART_CR4_BKEN       (bit(2))
0229 #define MC9328MXL_UART_CR4_OREN       (bit(1))
0230 #define MC9328MXL_UART_CR4_DREN       (bit(0))
0231 
0232 #define MC9328MXL_UART_FCR_TXTL(x)    (((x) & 0x3f) << 10)
0233 #define MC9328MXL_UART_FCR_RFDIV_1    (5 << 7)
0234 #define MC9328MXL_UART_FCR_RFDIV_2    (4 << 7)
0235 #define MC9328MXL_UART_FCR_RFDIV_3    (3 << 7)
0236 #define MC9328MXL_UART_FCR_RFDIV_4    (2 << 7)
0237 #define MC9328MXL_UART_FCR_RFDIV_5    (1 << 7)
0238 #define MC9328MXL_UART_FCR_RFDIV_6    (0 << 7)
0239 #define MC9328MXL_UART_FCR_RFDIV_7    (6 << 7)
0240 #define MC9328MXL_UART_FCR_RFDIV_MASK (7 << 7)
0241 #define MC9328MXL_UART_FCR_RXTL(x)    (((x) & 0x3f) << 0)
0242 
0243 #define MC9328MXL_UART_SR1_PARERR     (bit(15))
0244 #define MC9328MXL_UART_SR1_RTSS       (bit(14))
0245 #define MC9328MXL_UART_SR1_TRDY       (bit(13))
0246 #define MC9328MXL_UART_SR1_RTSD       (bit(12))
0247 #define MC9328MXL_UART_SR1_ESCF       (bit(11))
0248 #define MC9328MXL_UART_SR1_FRMERR     (bit(10))
0249 #define MC9328MXL_UART_SR1_RRDY       (bit(9))
0250 #define MC9328MXL_UART_SR1_RXDS       (bit(6))
0251 #define MC9328MXL_UART_SR1_AIRINT     (bit(5))
0252 #define MC9328MXL_UART_SR1_AWAKE      (bit(4))
0253 
0254 #define MC9328MXL_UART_SR2_ADET       (bit(15))
0255 #define MC9328MXL_UART_SR2_TXFE       (bit(14))
0256 #define MC9328MXL_UART_SR2_DTRF       (bit(13))
0257 #define MC9328MXL_UART_SR2_IDLE       (bit(12))
0258 #define MC9328MXL_UART_SR2_IRINT      (bit(8))
0259 #define MC9328MXL_UART_SR2_WAKE       (bit(7))
0260 #define MC9328MXL_UART_SR2_RTSF       (bit(4))
0261 #define MC9328MXL_UART_SR2_TXDC       (bit(3))
0262 #define MC9328MXL_UART_SR2_BRCD       (bit(2))
0263 #define MC9328MXL_UART_SR2_ORE        (bit(1))
0264 #define MC9328MXL_UART_SR2_RDR        (bit(0))
0265 
0266 
0267 #define MC9328MXL_PLL_CSCR   (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x00)))
0268 #define MC9328MXL_PLL_MPCTL0 (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x04)))
0269 #define MC9328MXL_PLL_MPCTL1 (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x08)))
0270 #define MC9328MXL_PLL_SPCTL0 (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x0c)))
0271 #define MC9328MXL_PLL_SPCTL1 (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x10)))
0272 #define MC9328MXL_PLL_PCDR   (*((volatile uint32_t *)((MC9328MXL_PLL_BASE) + 0x20)))
0273 
0274 #define MC9328MXL_PLL_CSCR_CLKOSEL_PERCLK1 (0 << 29)
0275 #define MC9328MXL_PLL_CSCR_CLKOSEL_HCLK    (1 << 29)
0276 #define MC9328MXL_PLL_CSCR_CLKOSEL_CLK48M  (2 << 29)
0277 #define MC9328MXL_PLL_CSCR_CLKOSEL_CLK16M  (3 << 29)
0278 #define MC9328MXL_PLL_CSCR_CLKOSEL_PREMCLK (4 << 29)
0279 #define MC9328MXL_PLL_CSCR_CLKOSEL_FCLK    (5 << 29)
0280 
0281 #define MC9328MXL_PLL_CSCR_USBDIV(_x_)     (((_x_) & 0x7) << 26)
0282 #define MC9328MXL_PLL_CSCR_SDCNT_1         (0 << 24)
0283 #define MC9328MXL_PLL_CSCR_SDCNT_2         (1 << 24)
0284 #define MC9328MXL_PLL_CSCR_SDCNT_3         (2 << 24)
0285 #define MC9328MXL_PLL_CSCR_SDCNT_4         (3 << 24)
0286 
0287 #define MC9328MXL_PLL_CSCR_SPLLRSTRT       (bit(22))
0288 #define MC9328MXL_PLL_CSCR_MPLLRSTRT       (bit(21))
0289 #define MC9328MXL_PLL_CSCR_CLK16SEL        (bit(18))
0290 #define MC9328MXL_PLL_CSCR_OSCEN           (bit(17))
0291 #define MC9328MXL_PLL_CSCR_SYSSEL          (bit(16))
0292 #define MC9328MXL_PLL_CSCR_PRESC           (bit(15))
0293 #define MC9328MXL_PLL_CSCR_BLKDIV(_x_)     (((_x_) & 0xf) << 10)
0294 #define MC9328MXL_PLL_CSCR_SPEN            (bit(1))
0295 #define MC9328MXL_PLL_CSCR_MPEN            (bit(0))
0296 
0297 #define MC9328MXL_PLL_PCDR_PCLK1_MASK      (0x0000000f)
0298 #define MC9328MXL_PLL_PCDR_PCLK1_SHIFT     (0)
0299 #define MC9328MXL_PLL_PCDR_PCLK2_MASK      (0x000000f0)
0300 #define MC9328MXL_PLL_PCDR_PCLK2_SHIFT     (4)
0301 #define MC9328MXL_PLL_PCDR_PCLK3_MASK      (0x007f0000)
0302 #define MC9328MXL_PLL_PCDR_PCLK3_SHIFT     (16)
0303 
0304 
0305 #define MC9328MXL_PLL_SPCTL_PD_MASK        (0x3c000000)
0306 #define MC9328MXL_PLL_SPCTL_PD_SHIFT       (26)
0307 #define MC9328MXL_PLL_SPCTL_MFD_MASK       (0x03ff0000)
0308 #define MC9328MXL_PLL_SPCTL_MFD_SHIFT      (16)
0309 #define MC9328MXL_PLL_SPCTL_MFI_MASK       (0x00003c00)
0310 #define MC9328MXL_PLL_SPCTL_MFI_SHIFT      (10)
0311 #define MC9328MXL_PLL_SPCTL_MFN_MASK       (0x000003ff)
0312 #define MC9328MXL_PLL_SPCTL_MFN_SHIFT      (0)
0313 
0314 
0315 #define MC9328MXL_GPIOA_DDIR    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x00)))
0316 #define MC9328MXL_GPIOA_OCR1    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x04)))
0317 #define MC9328MXL_GPIOA_OCR2    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x08)))
0318 #define MC9328MXL_GPIOA_ICONFA1 (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x0c)))
0319 #define MC9328MXL_GPIOA_ICONFA2 (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x10)))
0320 #define MC9328MXL_GPIOA_ICONFB1 (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x14)))
0321 #define MC9328MXL_GPIOA_ICONFB2 (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x18)))
0322 #define MC9328MXL_GPIOA_DR      (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x1c)))
0323 #define MC9328MXL_GPIOA_GIUS    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x20)))
0324 #define MC9328MXL_GPIOA_SSR     (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x24)))
0325 #define MC9328MXL_GPIOA_ICR1    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x28)))
0326 #define MC9328MXL_GPIOA_ICR2    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x2c)))
0327 #define MC9328MXL_GPIOA_IMR     (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x30)))
0328 #define MC9328MXL_GPIOA_ISR     (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x34)))
0329 #define MC9328MXL_GPIOA_GPR     (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x38)))
0330 #define MC9328MXL_GPIOA_SWR     (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x3c)))
0331 #define MC9328MXL_GPIOA_PUEN    (*((volatile uint32_t *)((MC9328MXL_GPIOA_BASE) + 0x40)))
0332 
0333 #define MC9328MXL_GPIOB_DDIR    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x00)))
0334 #define MC9328MXL_GPIOB_OCR1    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x04)))
0335 #define MC9328MXL_GPIOB_OCR2    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x08)))
0336 #define MC9328MXL_GPIOB_ICONFA1 (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x0c)))
0337 #define MC9328MXL_GPIOB_ICONFA2 (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x10)))
0338 #define MC9328MXL_GPIOB_ICONFB1 (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x14)))
0339 #define MC9328MXL_GPIOB_ICONFB2 (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x18)))
0340 #define MC9328MXL_GPIOB_DR      (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x1c)))
0341 #define MC9328MXL_GPIOB_GIUS    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x20)))
0342 #define MC9328MXL_GPIOB_SSR     (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x24)))
0343 #define MC9328MXL_GPIOB_ICR1    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x28)))
0344 #define MC9328MXL_GPIOB_ICR2    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x2c)))
0345 #define MC9328MXL_GPIOB_IMR     (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x30)))
0346 #define MC9328MXL_GPIOB_ISR     (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x34)))
0347 #define MC9328MXL_GPIOB_GPR     (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x38)))
0348 #define MC9328MXL_GPIOB_SWR     (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x3c)))
0349 #define MC9328MXL_GPIOB_PUEN    (*((volatile uint32_t *)((MC9328MXL_GPIOB_BASE) + 0x40)))
0350 
0351 #define MC9328MXL_GPIOC_DDIR    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x00)))
0352 #define MC9328MXL_GPIOC_OCR1    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x04)))
0353 #define MC9328MXL_GPIOC_OCR2    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x08)))
0354 #define MC9328MXL_GPIOC_ICONFA1 (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x0c)))
0355 #define MC9328MXL_GPIOC_ICONFA2 (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x10)))
0356 #define MC9328MXL_GPIOC_ICONFB1 (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x14)))
0357 #define MC9328MXL_GPIOC_ICONFB2 (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x18)))
0358 #define MC9328MXL_GPIOC_DR      (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x1c)))
0359 #define MC9328MXL_GPIOC_GIUS    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x20)))
0360 #define MC9328MXL_GPIOC_SSR     (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x24)))
0361 #define MC9328MXL_GPIOC_ICR1    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x28)))
0362 #define MC9328MXL_GPIOC_ICR2    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x2c)))
0363 #define MC9328MXL_GPIOC_IMR     (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x30)))
0364 #define MC9328MXL_GPIOC_ISR     (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x34)))
0365 #define MC9328MXL_GPIOC_GPR     (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x38)))
0366 #define MC9328MXL_GPIOC_SWR     (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x3c)))
0367 #define MC9328MXL_GPIOC_PUEN    (*((volatile uint32_t *)((MC9328MXL_GPIOC_BASE) + 0x40)))
0368 
0369 #define MC9328MXL_GPIOD_DDIR    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x00)))
0370 #define MC9328MXL_GPIOD_OCR1    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x04)))
0371 #define MC9328MXL_GPIOD_OCR2    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x08)))
0372 #define MC9328MXL_GPIOD_ICONFA1 (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x0c)))
0373 #define MC9328MXL_GPIOD_ICONFA2 (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x10)))
0374 #define MC9328MXL_GPIOD_ICONFB1 (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x14)))
0375 #define MC9328MXL_GPIOD_ICONFB2 (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x18)))
0376 #define MC9328MXL_GPIOD_DR      (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x1c)))
0377 #define MC9328MXL_GPIOD_GIUS    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x20)))
0378 #define MC9328MXL_GPIOD_SSR     (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x24)))
0379 #define MC9328MXL_GPIOD_ICR1    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x28)))
0380 #define MC9328MXL_GPIOD_ICR2    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x2c)))
0381 #define MC9328MXL_GPIOD_IMR     (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x30)))
0382 #define MC9328MXL_GPIOD_ISR     (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x34)))
0383 #define MC9328MXL_GPIOD_GPR     (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x38)))
0384 #define MC9328MXL_GPIOD_SWR     (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x3c)))
0385 #define MC9328MXL_GPIOD_PUEN    (*((volatile uint32_t *)((MC9328MXL_GPIOD_BASE) + 0x40)))
0386 
0387 #define MC9328MXL_AITC_INTCNTL    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE) + 0x00)))
0388 #define MC9328MXL_AITC_NIMASK     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE) + 0x04)))
0389 #define MC9328MXL_AITC_INTENNUM   (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x08)))
0390 #define MC9328MXL_AITC_INTDISNUM  (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x0c)))
0391 #define MC9328MXL_AITC_INTENABLEH (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x10)))
0392 #define MC9328MXL_AITC_INTENABLEL (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x14)))
0393 #define MC9328MXL_AITC_INTTYPEH   (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x18)))
0394 #define MC9328MXL_AITC_INTTYPEL   (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x1c)))
0395 #define MC9328MXL_AITC_NIPIR7     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x20)))
0396 #define MC9328MXL_AITC_NIPRI6     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x24)))
0397 #define MC9328MXL_AITC_NIPRI5     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x28)))
0398 #define MC9328MXL_AITC_NIPRI4     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x2c)))
0399 #define MC9328MXL_AITC_NIPRI3     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x30)))
0400 #define MC9328MXL_AITC_NIPRI2     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x34)))
0401 #define MC9328MXL_AITC_NIPRI1     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x38)))
0402 #define MC9328MXL_AITC_NIPRI0     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x3c)))
0403 #define MC9328MXL_AITC_NIVECSR    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x40)))
0404 #define MC9328MXL_AITC_FIVECSR    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x44)))
0405 #define MC9328MXL_AITC_INTSRCH    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x48)))
0406 #define MC9328MXL_AITC_INTSRCL    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x4c)))
0407 #define MC9328MXL_AITC_INTFRCH    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x50)))
0408 #define MC9328MXL_AITC_INTFRCL    (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x54)))
0409 #define MC9328MXL_AITC_NIPNDH     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x58)))
0410 #define MC9328MXL_AITC_NIPNDL     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x5c)))
0411 #define MC9328MXL_AITC_FIPNDH     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x60)))
0412 #define MC9328MXL_AITC_FIPNDL     (*((volatile uint32_t *)((MC9328MXL_AITC_BASE)+ 0x64)))
0413 
0414 #define MC9328MXL_INT_UART3_PFERR          (0)
0415 #define MC9328MXL_INT_UART3_RTS            (1)
0416 #define MC9328MXL_INT_UART3_DTR            (2)
0417 #define MC9328MXL_INT_UART3_UARTC          (3)
0418 #define MC9328MXL_INT_UART3_TX             (4)
0419 #define MC9328MXL_INT_PEN_UP               (5)
0420 #define MC9328MXL_INT_CSI                  (6)
0421 #define MC9328MXL_INT_MMA_MAC              (7)
0422 #define MC9328MXL_INT_MMA                  (8)
0423 #define MC9328MXL_INT_COMP                 (9)
0424 #define MC9328MXL_INT_MSIRQ                (10)
0425 #define MC9328MXL_INT_GPIO_PORTA           (11)
0426 #define MC9328MXL_INT_GPIO_PORTB           (12)
0427 #define MC9328MXL_INT_GPIO_PORTC           (13)
0428 #define MC9328MXL_INT_LCDC                 (14)
0429 #define MC9328MXL_INT_SIM_IRQ              (15)
0430 #define MC9328MXL_INT_SIM_DATA             (16)
0431 #define MC9328MXL_INT_RTC                  (17)
0432 #define MC9328MXL_INT_RTC_SAM              (18)
0433 #define MC9328MXL_INT_UART2_PFERR          (19)
0434 #define MC9328MXL_INT_UART2_RTS            (20)
0435 #define MC9328MXL_INT_UART2_DTR            (21)
0436 #define MC9328MXL_INT_UART2_UARTC          (22)
0437 #define MC9328MXL_INT_UART2_TX             (23)
0438 #define MC9328MXL_INT_UART2_RX             (24)
0439 #define MC9328MXL_INT_UART1_PFERR          (25)
0440 #define MC9328MXL_INT_UART1_RTS            (26)
0441 #define MC9328MXL_INT_UART1_DTR            (27)
0442 #define MC9328MXL_INT_UART1_UARTC          (28)
0443 #define MC9328MXL_INT_UART1_TX             (29)
0444 #define MC9328MXL_INT_UART1_RX             (30)
0445 #define MC9328MXL_INT_PEN_DATA             (33)
0446 #define MC9328MXL_INT_PWM                  (34)
0447 #define MC9328MXL_INT_MMC_IRQ              (35)
0448 #define MC9328MXL_INT_SSI2_TX              (36)
0449 #define MC9328MXL_INT_SSI2_RX              (37)
0450 #define MC9328MXL_INT_SSI2_ERR             (38)
0451 #define MC9328MXL_INT_I2C                  (39)
0452 #define MC9328MXL_INT_SPI2                 (40)
0453 #define MC9328MXL_INT_SPI1                 (41)
0454 #define MC9328MXL_INT_SSI_TX               (42)
0455 #define MC9328MXL_INT_SSI_TX_ERR           (43)
0456 #define MC9328MXL_INT_SSI_RX               (44)
0457 #define MC9328MXL_INT_SSI_RX_ERR           (45)
0458 #define MC9328MXL_INT_TOUCH                (46)
0459 #define MC9328MXL_INT_USBD0                (47)
0460 #define MC9328MXL_INT_USBD1                (48)
0461 #define MC9328MXL_INT_USBD2                (49)
0462 #define MC9328MXL_INT_USBD3                (50)
0463 #define MC9328MXL_INT_USBD4                (51)
0464 #define MC9328MXL_INT_USBD5                (52)
0465 #define MC9328MXL_INT_USBD6                (53)
0466 #define MC9328MXL_INT_UART3_RX             (54)
0467 #define MC9328MXL_INT_BTSYS                (55)
0468 #define MC9328MXL_INT_BTTIM                (56)
0469 #define MC9328MXL_INT_BTWUI                (57)
0470 #define MC9328MXL_INT_TIMER2               (58)
0471 #define MC9328MXL_INT_TIMER1               (59)
0472 #define MC9328MXL_INT_DMA_ERR              (60)
0473 #define MC9328MXL_INT_DMA                  (61)
0474 #define MC9328MXL_INT_GPIO_PORTD           (62)
0475 #define MC9328MXL_INT_WDT                  (63)
0476 
0477 #define MC9328MXL_AITC_INTCTL_NIAD    BIT(20)
0478 #define MC9328MXL_AITC_INTCTL_FIAD    BIT(19)
0479 #define MC9328MXL_AITC_NIMASK_MASK (0X1F)
0480 #define MC9328MXL_AITC_INTENNUM_MASK  (0X3F)
0481 #define MC9328MXL_AITC_INTDISNUM_MASK (0X3F)
0482 #define MC9328MXL_AITC_NIPRIORITY(_int_, _pri_) \
0483            (((_pri_) & 0xf) << ((_int_) & 0x7) * 4)
0484 
0485 
0486 #endif /* __MC9328MXL_H__ */