Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:03

0001 /**
0002  * @file
0003  *
0004  * @ingroup lm3s69xx_reg
0005  *
0006  * @brief Register definitions.
0007  */
0008 
0009 /*
0010  * Copyright (c) 2013 Eugeniy Meshcheryakov <eugen@debian.org>
0011  *
0012  * Copyright (c) 2011 Sebastian Huber.  All rights reserved.
0013  *
0014  * The license and distribution terms for this file may be
0015  * found in the file LICENSE in this distribution or at
0016  * http://www.rtems.org/license/LICENSE.
0017  */
0018 
0019 #ifndef LIBBSP_ARM_LM3S69XX_LM3S69XX_H
0020 #define LIBBSP_ARM_LM3S69XX_LM3S69XX_H
0021 #include <bspopts.h>
0022 #include <bsp/utility.h>
0023 
0024 /**
0025  * @defgroup lm3s69xx_reg Register Definitions
0026  *
0027  * @ingroup RTEMSBSPsARMLM3S69XX
0028  *
0029  * @brief Register Definitions 
0030  */
0031 
0032 #define LM3S69XX_SYSCON_BASE 0x400fe000
0033 
0034 #define LM3S69XX_UART_0_BASE 0x4000c000
0035 #define LM3S69XX_UART_1_BASE 0x4000d000
0036 #define LM3S69XX_UART_2_BASE 0x4000e000
0037 
0038 #ifdef LM3S69XX_USE_AHB_FOR_GPIO
0039 #define LM3S69XX_GPIO_A_BASE 0x40058000
0040 #define LM3S69XX_GPIO_B_BASE 0x40059000
0041 #define LM3S69XX_GPIO_C_BASE 0x4005a000
0042 #define LM3S69XX_GPIO_D_BASE 0x4005b000
0043 #define LM3S69XX_GPIO_E_BASE 0x4005c000
0044 #define LM3S69XX_GPIO_F_BASE 0x4005d000
0045 #if LM3S69XX_NUM_GPIO_BLOCKS > 6
0046 #define LM3S69XX_GPIO_G_BASE 0x4005e000
0047 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0048 #define LM3S69XX_GPIO_H_BASE 0x4005f000
0049 #endif
0050 #endif
0051 
0052 #define LM3S69XX_GPIO(port) ((volatile lm3s69xx_gpio *)(LM3S69XX_GPIO_A_BASE + (port) * 0x1000))
0053 #else /* LM3S69XX_USE_AHB_FOR_GPIO */
0054 #define LM3S69XX_GPIO_A_BASE 0x40004000
0055 #define LM3S69XX_GPIO_B_BASE 0x40005000
0056 #define LM3S69XX_GPIO_C_BASE 0x40006000
0057 #define LM3S69XX_GPIO_D_BASE 0x40007000
0058 #define LM3S69XX_GPIO_E_BASE 0x40024000
0059 #define LM3S69XX_GPIO_F_BASE 0x40025000
0060 #if LM3S69XX_NUM_GPIO_BLOCKS > 6
0061 #define LM3S69XX_GPIO_G_BASE 0x40026000
0062 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0063 #define LM3S69XX_GPIO_H_BASE 0x40027000
0064 #endif
0065 #endif
0066 
0067 #define LM3S69XX_GPIO(port) ((volatile lm3s69xx_gpio *)(((port) < 4) ? \
0068            (LM3S69XX_GPIO_A_BASE + (port) * 0x1000) : \
0069            (LM3S69XX_GPIO_E_BASE + ((port) - 4) * 0x1000)))
0070 #endif /* LM3S69XX_USE_AHB_FOR_GPIO */
0071 
0072 #define LM3S69XX_SSI_0_BASE 0x40008000
0073 #if LM3S69XX_NUM_SSI_BLOCKS > 1
0074 #define LM3S69XX_SSI_1_BASE 0x40009000
0075 #if LM3S69XX_NUM_SSI_BLOCKS > 2
0076 #define LM3S69XX_SSI_2_BASE 0x4000A000
0077 #if LM3S69XX_NUM_SSI_BLOCKS > 3
0078 #define LM3S69XX_SSI_3_BASE 0x4000B000
0079 #endif
0080 #endif
0081 #endif
0082 
0083 #define LM3S69XX_SYSCON ((volatile lm3s69xx_syscon *)LM3S69XX_SYSCON_BASE)
0084 
0085 #define LM3S69XX_PLL_FREQUENCY 400000000U
0086 
0087 typedef struct  {
0088   uint32_t data[256]; /* Masked data registers are included here. */
0089   uint32_t dir;
0090   uint32_t is;
0091   uint32_t ibe;
0092   uint32_t iev;
0093   uint32_t im;
0094   uint32_t ris;
0095   uint32_t mis;
0096   uint32_t icr;
0097   uint32_t afsel;
0098 
0099   uint32_t reserved_0[55];
0100 
0101   uint32_t dr2r;
0102   uint32_t dr4r;
0103   uint32_t dr8r;
0104   uint32_t odr;
0105   uint32_t pur;
0106   uint32_t pdr;
0107   uint32_t slr;
0108   uint32_t den;
0109   uint32_t lock;
0110   uint32_t cr;
0111   uint32_t amsel;
0112 } lm3s69xx_gpio;
0113 
0114 typedef struct {
0115   uint32_t did0;
0116   uint32_t did1;
0117 
0118   uint32_t dc0;
0119   uint32_t reserved_0;
0120   uint32_t dc1;
0121   uint32_t dc2;
0122   uint32_t dc3;
0123   uint32_t dc4;
0124   uint32_t dc5;
0125   uint32_t dc6;
0126   uint32_t dc7;
0127 
0128   uint32_t reserved_1;
0129 
0130 #define SYSCONPBORCTL_BORIOR BSP_BIT32(1)
0131   uint32_t pborctl;
0132 
0133 #define SYSCONLDOPCTL_VADJ(val) BSP_FLD32(val, 0, 5)
0134 #define SYSCONLDOPCTL_VADJ_MASK BSP_MSK32(0, 5)
0135   uint32_t ldopctl;
0136 
0137   uint32_t reserved_2[2];
0138 
0139   uint32_t srcr0;
0140   uint32_t srcr1;
0141   uint32_t srcr2;
0142 
0143   uint32_t reserved_3;
0144 
0145 #define SYSCONRIS_MOSCPUPRIS BSP_BIT32(8)
0146 #define SYSCONRIS_USBPLLRIS BSP_BIT32(7)
0147 #define SYSCONRIS_PLLLRIS BSP_BIT32(6)
0148 #define SYSCONRIS_BORRIS BSP_BIT32(1)
0149   uint32_t ris;
0150 
0151 #define SYSCONIMC_MOSCPUPIM BSP_BIT32(8)
0152 #define SYSCONIMC_USBPLLLIM BSP_BIT32(7)
0153 #define SYSCONIMC_PLLLIM BSP_BIT32(6)
0154 #define SYSCONIMC_BORIM BSP_BIT32(1)
0155   uint32_t imc;
0156 
0157 #define SYSCONMISC_MOSCPUPMIS BSP_BIT32(8)
0158 #define SYSCONMISC_USBPLLLMIS BSP_BIT32(7)
0159 #define SYSCONMISC_PLLLMIS BSP_BIT32(6)
0160 #define SYSCONMISC_BORMIS BSP_BIT32(1)
0161   uint32_t misc;
0162 
0163 #define SYSCONRESC_MOSCFAIL BSP_BIT32(16)
0164 #define SYSCONRESC_SW BSP_BIT32(4)
0165 #define SYSCONRESC_WDT BSP_BIT32(3)
0166 #define SYSCONRESC_BOR BSP_BIT32(2)
0167 #define SYSCONRESC_POR BSP_BIT32(1)
0168 #define SYSCONRESC_EXT BSP_BIT32(0)
0169   uint32_t resc;
0170 
0171 #define SYSCONRCC_AGC BSP_BIT32(27)
0172 #define SYSCONRCC_SYSDIV(val) BSP_FLD32(val, 23, 26)
0173 #define SYSCONRCC_SYSDIV_MSK BSP_MSK32(23, 26)
0174 #define SYSCONRCC_USESYSDIV BSP_BIT32(22)
0175 #define SYSCONRCC_USEPWMDIV BSP_BIT32(20)
0176 #define SYSCONRCC_PWMDIV(val) BSP_FLD32(val, 17, 19)
0177 #define SYSCONRCC_PWMDIV_DIV2_VAL 0
0178 #define SYSCONRCC_PWMDIV_DIV4_VAL 1
0179 #define SYSCONRCC_PWMDIV_DIV8_VAL 2
0180 #define SYSCONRCC_PWMDIV_DIV16_VAL 3
0181 #define SYSCONRCC_PWMDIV_DIV32_VAL 4
0182 #define SYSCONRCC_PWMDIV_DIV64_VAL 5
0183 #define SYSCONRCC_PWMDIV_MSK BSP_MSK32(17, 19)
0184 #define SYSCONRCC_PWRDN BSP_BIT32(13)
0185 #define SYSCONRCC_BYPASS BSP_BIT32(11)
0186 #define SYSCONRCC_XTAL(val) BSP_FLD32(val, 6, 10)
0187 #define SYSCONRCC_XTAL_MSK BSP_MSK32(6, 10)
0188 #define SYSCONRCC_OSCSRC(val) BSP_FLD32(val, 4, 5)
0189 #define SYSCONRCC_OSCSRC_MOSC SYSCONRCC_OSCSRC(0x0)
0190 #define SYSCONRCC_OSCSRC_IOSC SYSCONRCC_OSCSRC(0x1)
0191 #define SYSCONRCC_OSCSRC_IOSC_DIV_4 SYSCONRCC_OSCSRC(0x2)
0192 #define SYSCONRCC_OSCSRC_30KHZ SYSCONRCC_OSCSRC(0x3)
0193 #define SYSCONRCC_OSCSRC_MSK BSP_MSK32(4, 5)
0194 #define SYSCONRCC_IOSCDIS BSP_BIT32(1)
0195 #define SYSCONRCC_MOSCDIS BSP_BIT32(0)
0196   uint32_t rcc;
0197 
0198 #define SYSCONPLLCFG_F(val) BSP_FLD32(val, 5, 13)
0199 #define SYSCONPLLCFG_F_MSK BSP_MSK32(5, 13)
0200 #define SYSCONPLLCFG_R(val) BSP_FLD32(val, 0, 4)
0201 #define SYSCONPLLCFG_R_MSK BSP_MSK32(0, 4)
0202   uint32_t pllcfg;
0203 
0204   uint32_t reserved_4;
0205 
0206 #define SYSCONGPIOHBCTL_PORTH BSP_BIT32(7)
0207 #define SYSCONGPIOHBCTL_PORTG BSP_BIT32(6)
0208 #define SYSCONGPIOHBCTL_PORTF BSP_BIT32(5)
0209 #define SYSCONGPIOHBCTL_PORTE BSP_BIT32(4)
0210 #define SYSCONGPIOHBCTL_PORTD BSP_BIT32(3)
0211 #define SYSCONGPIOHBCTL_PORTC BSP_BIT32(2)
0212 #define SYSCONGPIOHBCTL_PORTB BSP_BIT32(1)
0213 #define SYSCONGPIOHBCTL_PORTA BSP_BIT32(0)
0214   uint32_t gpiohbctl;
0215 
0216 #define SYSCONRCC2_USERCC2 BSP_BIT32(31)
0217 #define SYSCONRCC2_DIV400 BSP_BIT32(30)
0218 #define SYSCONRCC2_SYSDIV2(val) BSP_FLD32(val, 23, 28)
0219 #define SYSCONRCC2_SYSDIV2_MSK BSP_MSK32(23, 28)
0220 #define SYSCONRCC2_SYSDIV2EXT(val) BSP_FLD32(val, 22, 28)
0221 #define SYSCONRCC2_SYSDIV2EXT_MSK BSP_MSK32(22, 28)
0222 #define SYSCONRCC2_USBPWRDN BSP_BIT32(14)
0223 #define SYSCONRCC2_PWRDN2 BSP_BIT32(13)
0224 #define SYSCONRCC2_BYPASS2 BSP_BIT32(11)
0225 #define SYSCONRCC2_OSCSRC2(val) BSP_FLD32(val, 4, 6)
0226 #define SYSCONRCC2_OSCSRC2_MSK BSP_MSK32(4, 6)
0227   uint32_t rcc2;
0228 
0229   uint32_t reserved_5[2];
0230 
0231 #define SYSCONMOSCCTL_CVAL BSP_BIT32(0)
0232   uint32_t moscctl;
0233 
0234   uint32_t reserved_6[32];
0235 
0236 #define SYSCONRCGC0_PWM BSP_BIT32(20)
0237 #define SYSCONRCGC0_ADC BSP_BIT32(16)
0238 #define SYSCONRCGC0_MAXADCSPD(val) BSP_FLD32(val, 8, 9)
0239 #define SYSCONRCGC0_MAXADCSPD_MSK BSP_MSK32(8, 9)
0240 #define SYSCONRCGC0_HIB BSP_BIT32(6)
0241 #define SYSCONRCGC0_WDT BSP_BIT32(3)
0242   uint32_t rcgc0;
0243 
0244 #define SYSCONRCGC1_COMP1 BSP_BIT32(25)
0245 #define SYSCONRCGC1_COMP0 BSP_BIT32(24)
0246 #define SYSCONRCGC1_TIMER3 BSP_BIT32(19)
0247 #define SYSCONRCGC1_TIMER2 BSP_BIT32(18)
0248 #define SYSCONRCGC1_TIMER1 BSP_BIT32(17)
0249 #define SYSCONRCGC1_TIMER0 BSP_BIT32(16)
0250 #define SYSCONRCGC1_I2C1 BSP_BIT32(14)
0251 #define SYSCONRCGC1_I2C0 BSP_BIT32(12)
0252 #define SYSCONRCGC1_QEI0 BSP_BIT32(8)
0253 #if LM3S69XX_NUM_SSI_BLOCKS > 1
0254 #define SYSCONRCGC1_SSI1 BSP_BIT32(5)
0255 #endif
0256 #define SYSCONRCGC1_SSI0 BSP_BIT32(4)
0257 #define SYSCONRCGC1_UART2 BSP_BIT32(2)
0258 #define SYSCONRCGC1_UART1 BSP_BIT32(1)
0259 #define SYSCONRCGC1_UART0 BSP_BIT32(0)
0260   uint32_t rcgc1;
0261 
0262 #define SYSCONRCGC2_USB0 BSP_BIT32(16)
0263 #define SYSCONRCGC2_UDMA BSP_BIT32(13)
0264 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0265 #define SYSCONRCGC2_GPIOH BSP_BIT32(7)
0266 #endif
0267 #define SYSCONRCGC2_GPIOG BSP_BIT32(6)
0268 #define SYSCONRCGC2_GPIOF BSP_BIT32(5)
0269 #define SYSCONRCGC2_GPIOE BSP_BIT32(4)
0270 #define SYSCONRCGC2_GPIOD BSP_BIT32(3)
0271 #define SYSCONRCGC2_GPIOC BSP_BIT32(2)
0272 #define SYSCONRCGC2_GPIOB BSP_BIT32(1)
0273 #define SYSCONRCGC2_GPIOA BSP_BIT32(0)
0274   uint32_t rcgc2;
0275 
0276   uint32_t reserved_7;
0277 
0278   uint32_t scgc0;
0279   uint32_t scgc1;
0280   uint32_t scgc2;
0281 
0282   uint32_t reserved_8;
0283 
0284   uint32_t dcgc0;
0285   uint32_t dcgc1;
0286   uint32_t dcgc2;
0287 
0288   uint32_t reserved_9[6];
0289 
0290 #define SYSCONDSLPCLKCFG_DSDIVORIDE(val) BSP_FLD32(val, 23, 28)
0291 #define SYSCONDSLPCLKCFG_DSDIVORIDE_MSK BSP_MSK32(23, 28)
0292 #define SYSCONDSLPCLKCFG_DSOSCSRC(val) BSP_FLD32(val, 4, 6)
0293 #define SYSCONDSLPCLKCFG_DSOSCSRC_MSK BSP_MSK32(4, 6)
0294   uint32_t dslpclkcfg;
0295 } lm3s69xx_syscon;
0296 
0297 typedef struct {
0298 #define UARTDR_OE BSP_BIT32(11)
0299 #define UARTDR_BE BSP_BIT32(10)
0300 #define UARTDR_PE BSP_BIT32(9)
0301 #define UARTDR_FE BSP_BIT32(8)
0302 #define UARTDR_ERROR_MSK BSP_MSK32(8, 11)
0303 #define UARTDR_DATA(val) BSP_FLD32(val, 0, 7)
0304 #define UARTDR_DATA_GET(reg) BSP_FLD32GET(reg, 0, 7)
0305   uint32_t dr;
0306 
0307   uint32_t rsr_ecr;
0308   uint32_t reserved_0[4];
0309 
0310 #define UARTFR_TXFE BSP_BIT32(7)
0311 #define UARTFR_RXFF BSP_BIT32(6)
0312 #define UARTFR_TXFF BSP_BIT32(5)
0313 #define UARTFR_RXFE BSP_BIT32(4)
0314 #define UARTFR_BUSY BSP_BIT32(3)
0315   uint32_t fr;
0316 
0317   uint32_t reserved_1;
0318 
0319   uint32_t ilpr;
0320   uint32_t ibrd;
0321   uint32_t fbrd;
0322 
0323 #define UARTLCRH_SPS BSP_BIT32(7)
0324 #define UARTLCRH_WLEN(val) BSP_FLD32(val, 5, 6)
0325 #define UARTLCRH_FEN BSP_BIT32(4)
0326 #define UARTLCRH_STP2 BSP_BIT32(3)
0327 #define UARTLCRH_EPS BSP_BIT32(2)
0328 #define UARTLCRH_PEN BSP_BIT32(1)
0329 #define UARTLCRH_BRK BSP_BIT32(0)
0330   uint32_t lcrh;
0331 
0332 #define UARTCTL_RXE BSP_BIT32(9)
0333 #define UARTCTL_TXE BSP_BIT32(8)
0334 #define UARTCTL_LBE BSP_BIT32(7)
0335 #define UARTCTL_SIRLP BSP_BIT32(2)
0336 #define UARTCTL_SIREN BSP_BIT32(1)
0337 #define UARTCTL_UARTEN BSP_BIT32(0)
0338   uint32_t ctl;
0339 
0340 #define UARTIFLS_RXIFLSEL(val) BSP_FLD32(val, 3, 5)
0341 #define UARTIFLS_TXIFLSEL(val) BSP_FLD32(val, 0, 2)
0342   uint32_t ifls;
0343 
0344 #define UARTI_OE BSP_BIT32(10)
0345 #define UARTI_BE BSP_BIT32(9)
0346 #define UARTI_PE BSP_BIT32(8)
0347 #define UARTI_FE BSP_BIT32(7)
0348 #define UARTI_RT BSP_BIT32(6)
0349 #define UARTI_TX BSP_BIT32(5)
0350 #define UARTI_RX BSP_BIT32(4)
0351   uint32_t im;
0352   uint32_t ris;
0353   uint32_t mis;
0354   uint32_t icr;
0355 #if LM3S69XX_HAS_UDMA
0356   uint32_t dmactl;
0357 #endif
0358 } lm3s69xx_uart;
0359 
0360 typedef struct {
0361 #define SSICR0_SCR(val) BSP_FLD32(val, 8, 15)
0362 #define SSICR0_SPH BSP_BIT32(7)
0363 #define SSICR0_SPO BSP_BIT32(6)
0364 #define SSICR0_FRF(val) BSP_FLD32(val, 4, 5)
0365 #define SSICR0_DSS(val) BSP_FLD32(val, 0, 3)
0366   uint32_t cr0;
0367 
0368 #define SSICR1_SOD BSP_BIT32(3)
0369 #define SSICR1_MS BSP_BIT32(2)
0370 #define SSICR1_SSE BSP_BIT32(1)
0371 #define SSICR1_LBM BSP_BIT32(0)
0372   uint32_t cr1;
0373   uint32_t dr;
0374 
0375 #define SSISR_BSY BSP_BIT32(4)
0376 #define SSISR_RFF BSP_BIT32(3)
0377 #define SSISR_RNE BSP_BIT32(2)
0378 #define SSISR_TNF BSP_BIT32(1)
0379 #define SSISR_TFE BSP_BIT32(0)
0380   uint32_t sr;
0381 
0382 #define SSI_CPSRDIV(val) BSP_FLD32(val, 0, 7)
0383   uint32_t cpsr;
0384 
0385 #define SSII_TX BSP_BIT32(3)
0386 #define SSII_RX BSP_BIT32(2)
0387 #define SSII_RT BSP_BIT32(1)
0388 #define SSII_ROR BSP_BIT32(0)
0389   uint32_t im;
0390   uint32_t ris;
0391   uint32_t mis;
0392   uint32_t icr;
0393 
0394 #if LM3S69XX_HAS_UDMA
0395 #define SSIDMACTL_TXDMAE BSP_BIT32(1)
0396 #define SSIDMACTL_RXDMAE BSP_BIT32(0)
0397   uint32_t dmactl;
0398 #endif /* LM3S69XX_HAS_UDMA */
0399 } lm3s69xx_ssi;
0400 
0401 #endif /* LIBBSP_ARM_LM3S69XX_LM3S69XX_H */