Home | History | Annotate | Download | only in arch-ep93xx
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * Cirrus Logic EP93xx register definitions.
      4  *
      5  * Copyright (C) 2013
      6  * Sergey Kostanbaev <sergey.kostanbaev <at> fairwaves.ru>
      7  *
      8  * Copyright (C) 2009
      9  * Matthias Kaehlcke <matthias (at) kaehlcke.net>
     10  *
     11  * Copyright (C) 2006
     12  * Dominic Rath <Dominic.Rath (at) gmx.de>
     13  *
     14  * Copyright (C) 2004, 2005
     15  * Cory T. Tusar, Videon Central, Inc., <ctusar (at) videon-central.com>
     16  *
     17  * Based in large part on linux/include/asm-arm/arch-ep93xx/regmap.h, which is
     18  *
     19  * Copyright (C) 2004 Ray Lehtiniemi
     20  * Copyright (C) 2003 Cirrus Logic, Inc
     21  * Copyright (C) 1999 ARM Limited.
     22  */
     23 
     24 #define EP93XX_AHB_BASE			0x80000000
     25 #define EP93XX_APB_BASE			0x80800000
     26 
     27 /*
     28  * 0x80000000 - 0x8000FFFF: DMA
     29  */
     30 #define DMA_OFFSET			0x000000
     31 #define DMA_BASE			(EP93XX_AHB_BASE | DMA_OFFSET)
     32 
     33 #ifndef __ASSEMBLY__
     34 struct dma_channel {
     35 	uint32_t control;
     36 	uint32_t interrupt;
     37 	uint32_t ppalloc;
     38 	uint32_t status;
     39 	uint32_t reserved0;
     40 	uint32_t remain;
     41 	uint32_t reserved1[2];
     42 	uint32_t maxcnt0;
     43 	uint32_t base0;
     44 	uint32_t current0;
     45 	uint32_t reserved2;
     46 	uint32_t maxcnt1;
     47 	uint32_t base1;
     48 	uint32_t current1;
     49 	uint32_t reserved3;
     50 };
     51 
     52 struct dma_regs {
     53 	struct dma_channel m2p_channel_0;
     54 	struct dma_channel m2p_channel_1;
     55 	struct dma_channel m2p_channel_2;
     56 	struct dma_channel m2p_channel_3;
     57 	struct dma_channel m2m_channel_0;
     58 	struct dma_channel m2m_channel_1;
     59 	struct dma_channel reserved0[2];
     60 	struct dma_channel m2p_channel_5;
     61 	struct dma_channel m2p_channel_4;
     62 	struct dma_channel m2p_channel_7;
     63 	struct dma_channel m2p_channel_6;
     64 	struct dma_channel m2p_channel_9;
     65 	struct dma_channel m2p_channel_8;
     66 	uint32_t channel_arbitration;
     67 	uint32_t reserved[15];
     68 	uint32_t global_interrupt;
     69 };
     70 #endif
     71 
     72 /*
     73  * 0x80010000 - 0x8001FFFF: Ethernet MAC
     74  */
     75 #define MAC_OFFSET			0x010000
     76 #define MAC_BASE			(EP93XX_AHB_BASE | MAC_OFFSET)
     77 
     78 #ifndef __ASSEMBLY__
     79 struct mac_queue {
     80 	uint32_t badd;
     81 	union { /* deal with half-word aligned registers */
     82 		uint32_t blen;
     83 		union {
     84 			uint16_t filler;
     85 			uint16_t curlen;
     86 		};
     87 	};
     88 	uint32_t curadd;
     89 };
     90 
     91 struct mac_regs {
     92 	uint32_t rxctl;
     93 	uint32_t txctl;
     94 	uint32_t testctl;
     95 	uint32_t reserved0;
     96 	uint32_t miicmd;
     97 	uint32_t miidata;
     98 	uint32_t miists;
     99 	uint32_t reserved1;
    100 	uint32_t selfctl;
    101 	uint32_t inten;
    102 	uint32_t intstsp;
    103 	uint32_t intstsc;
    104 	uint32_t reserved2[2];
    105 	uint32_t diagad;
    106 	uint32_t diagdata;
    107 	uint32_t gt;
    108 	uint32_t fct;
    109 	uint32_t fcf;
    110 	uint32_t afp;
    111 	union {
    112 		struct {
    113 			uint32_t indad;
    114 			uint32_t indad_upper;
    115 		};
    116 		uint32_t hashtbl;
    117 	};
    118 	uint32_t reserved3[2];
    119 	uint32_t giintsts;
    120 	uint32_t giintmsk;
    121 	uint32_t giintrosts;
    122 	uint32_t giintfrc;
    123 	uint32_t txcollcnt;
    124 	uint32_t rxmissnct;
    125 	uint32_t rxruntcnt;
    126 	uint32_t reserved4;
    127 	uint32_t bmctl;
    128 	uint32_t bmsts;
    129 	uint32_t rxbca;
    130 	uint32_t reserved5;
    131 	struct mac_queue rxdq;
    132 	uint32_t rxdqenq;
    133 	struct mac_queue rxstsq;
    134 	uint32_t rxstsqenq;
    135 	struct mac_queue txdq;
    136 	uint32_t txdqenq;
    137 	struct mac_queue txstsq;
    138 	uint32_t reserved6;
    139 	uint32_t rxbufthrshld;
    140 	uint32_t txbufthrshld;
    141 	uint32_t rxststhrshld;
    142 	uint32_t txststhrshld;
    143 	uint32_t rxdthrshld;
    144 	uint32_t txdthrshld;
    145 	uint32_t maxfrmlen;
    146 	uint32_t maxhdrlen;
    147 };
    148 #endif
    149 
    150 #define SELFCTL_RWP		(1 << 7)
    151 #define SELFCTL_GPO0		(1 << 5)
    152 #define SELFCTL_PUWE		(1 << 4)
    153 #define SELFCTL_PDWE		(1 << 3)
    154 #define SELFCTL_MIIL		(1 << 2)
    155 #define SELFCTL_RESET		(1 << 0)
    156 
    157 #define INTSTS_RWI		(1 << 30)
    158 #define INTSTS_RXMI		(1 << 29)
    159 #define INTSTS_RXBI		(1 << 28)
    160 #define INTSTS_RXSQI		(1 << 27)
    161 #define INTSTS_TXLEI		(1 << 26)
    162 #define INTSTS_ECIE		(1 << 25)
    163 #define INTSTS_TXUHI		(1 << 24)
    164 #define INTSTS_MOI		(1 << 18)
    165 #define INTSTS_TXCOI		(1 << 17)
    166 #define INTSTS_RXROI		(1 << 16)
    167 #define INTSTS_MIII		(1 << 12)
    168 #define INTSTS_PHYI		(1 << 11)
    169 #define INTSTS_TI		(1 << 10)
    170 #define INTSTS_AHBE		(1 << 8)
    171 #define INTSTS_OTHER		(1 << 4)
    172 #define INTSTS_TXSQ		(1 << 3)
    173 #define INTSTS_RXSQ		(1 << 2)
    174 
    175 #define BMCTL_MT		(1 << 13)
    176 #define BMCTL_TT		(1 << 12)
    177 #define BMCTL_UNH		(1 << 11)
    178 #define BMCTL_TXCHR		(1 << 10)
    179 #define BMCTL_TXDIS		(1 << 9)
    180 #define BMCTL_TXEN		(1 << 8)
    181 #define BMCTL_EH2		(1 << 6)
    182 #define BMCTL_EH1		(1 << 5)
    183 #define BMCTL_EEOB		(1 << 4)
    184 #define BMCTL_RXCHR		(1 << 2)
    185 #define BMCTL_RXDIS		(1 << 1)
    186 #define BMCTL_RXEN		(1 << 0)
    187 
    188 #define BMSTS_TXACT		(1 << 7)
    189 #define BMSTS_TP		(1 << 4)
    190 #define BMSTS_RXACT		(1 << 3)
    191 #define BMSTS_QID_MASK		0x07
    192 #define BMSTS_QID_RXDATA	0x00
    193 #define BMSTS_QID_TXDATA	0x01
    194 #define BMSTS_QID_RXSTS		0x02
    195 #define BMSTS_QID_TXSTS		0x03
    196 #define BMSTS_QID_RXDESC	0x04
    197 #define BMSTS_QID_TXDESC	0x05
    198 
    199 #define AFP_MASK		0x07
    200 #define AFP_IAPRIMARY		0x00
    201 #define AFP_IASECONDARY1	0x01
    202 #define AFP_IASECONDARY2	0x02
    203 #define AFP_IASECONDARY3	0x03
    204 #define AFP_TX			0x06
    205 #define AFP_HASH		0x07
    206 
    207 #define RXCTL_PAUSEA		(1 << 20)
    208 #define RXCTL_RXFCE1		(1 << 19)
    209 #define RXCTL_RXFCE0		(1 << 18)
    210 #define RXCTL_BCRC		(1 << 17)
    211 #define RXCTL_SRXON		(1 << 16)
    212 #define RXCTL_RCRCA		(1 << 13)
    213 #define RXCTL_RA		(1 << 12)
    214 #define RXCTL_PA		(1 << 11)
    215 #define RXCTL_BA		(1 << 10)
    216 #define RXCTL_MA		(1 << 9)
    217 #define RXCTL_IAHA		(1 << 8)
    218 #define RXCTL_IA3		(1 << 3)
    219 #define RXCTL_IA2		(1 << 2)
    220 #define RXCTL_IA1		(1 << 1)
    221 #define RXCTL_IA0		(1 << 0)
    222 
    223 #define TXCTL_DEFDIS		(1 << 7)
    224 #define TXCTL_MBE		(1 << 6)
    225 #define TXCTL_ICRC		(1 << 5)
    226 #define TXCTL_TPD		(1 << 4)
    227 #define TXCTL_OCOLL		(1 << 3)
    228 #define TXCTL_SP		(1 << 2)
    229 #define TXCTL_PB		(1 << 1)
    230 #define TXCTL_STXON		(1 << 0)
    231 
    232 #define MIICMD_REGAD_MASK	(0x001F)
    233 #define MIICMD_PHYAD_MASK	(0x03E0)
    234 #define MIICMD_OPCODE_MASK	(0xC000)
    235 #define MIICMD_PHYAD_8950	(0x0000)
    236 #define MIICMD_OPCODE_READ	(0x8000)
    237 #define MIICMD_OPCODE_WRITE	(0x4000)
    238 
    239 #define MIISTS_BUSY		(1 << 0)
    240 
    241 /*
    242  * 0x80020000 - 0x8002FFFF: USB OHCI
    243  */
    244 #define USB_OFFSET			0x020000
    245 #define USB_BASE			(EP93XX_AHB_BASE | USB_OFFSET)
    246 
    247 /*
    248  * 0x80030000 - 0x8003FFFF: Raster engine
    249  */
    250 #if (defined(CONFIG_EP9307) || defined(CONFIG_EP9312) || defined(CONFIG_EP9315))
    251 #define RASTER_OFFSET			0x030000
    252 #define RASTER_BASE			(EP93XX_AHB_BASE | RASTER_OFFSET)
    253 #endif
    254 
    255 /*
    256  * 0x80040000 - 0x8004FFFF: Graphics accelerator
    257  */
    258 #if defined(CONFIG_EP9315)
    259 #define GFX_OFFSET			0x040000
    260 #define GFX_BASE			(EP93XX_AHB_BASE | GFX_OFFSET)
    261 #endif
    262 
    263 /*
    264  * 0x80050000 - 0x8005FFFF: Reserved
    265  */
    266 
    267 /*
    268  * 0x80060000 - 0x8006FFFF: SDRAM controller
    269  */
    270 #define SDRAM_OFFSET			0x060000
    271 #define SDRAM_BASE			(EP93XX_AHB_BASE | SDRAM_OFFSET)
    272 
    273 #ifndef __ASSEMBLY__
    274 struct sdram_regs {
    275 	uint32_t reserved;
    276 	uint32_t glconfig;
    277 	uint32_t refrshtimr;
    278 	uint32_t bootsts;
    279 	uint32_t devcfg0;
    280 	uint32_t devcfg1;
    281 	uint32_t devcfg2;
    282 	uint32_t devcfg3;
    283 };
    284 #endif
    285 
    286 #define SDRAM_DEVCFG_EXTBUSWIDTH	(1 << 2)
    287 #define SDRAM_DEVCFG_BANKCOUNT		(1 << 3)
    288 #define SDRAM_DEVCFG_SROMLL		(1 << 5)
    289 #define SDRAM_DEVCFG_CASLAT_2		0x00010000
    290 #define SDRAM_DEVCFG_RASTOCAS_2		0x00200000
    291 
    292 #define SDRAM_OFF_GLCONFIG		0x0004
    293 #define SDRAM_OFF_REFRSHTIMR		0x0008
    294 
    295 #define SDRAM_OFF_DEVCFG0		0x0010
    296 #define SDRAM_OFF_DEVCFG1		0x0014
    297 #define SDRAM_OFF_DEVCFG2		0x0018
    298 #define SDRAM_OFF_DEVCFG3		0x001C
    299 
    300 #define SDRAM_DEVCFG0_BASE		0xC0000000
    301 #define SDRAM_DEVCFG1_BASE		0xD0000000
    302 #define SDRAM_DEVCFG2_BASE		0xE0000000
    303 #define SDRAM_DEVCFG3_ASD0_BASE		0xF0000000
    304 #define SDRAM_DEVCFG3_ASD1_BASE		0x00000000
    305 
    306 #define GLCONFIG_INIT			(1 << 0)
    307 #define GLCONFIG_MRS			(1 << 1)
    308 #define GLCONFIG_SMEMBUSY		(1 << 5)
    309 #define GLCONFIG_LCR			(1 << 6)
    310 #define GLCONFIG_REARBEN		(1 << 7)
    311 #define GLCONFIG_CLKSHUTDOWN		(1 << 30)
    312 #define GLCONFIG_CKE			(1 << 31)
    313 
    314 #define EP93XX_SDRAMCTRL			0x80060000
    315 #define EP93XX_SDRAMCTRL_GLOBALCFG_INIT		0x00000001
    316 #define EP93XX_SDRAMCTRL_GLOBALCFG_MRS		0x00000002
    317 #define EP93XX_SDRAMCTRL_GLOBALCFG_SMEMBUSY	0x00000020
    318 #define EP93XX_SDRAMCTRL_GLOBALCFG_LCR		0x00000040
    319 #define EP93XX_SDRAMCTRL_GLOBALCFG_REARBEN	0x00000080
    320 #define EP93XX_SDRAMCTRL_GLOBALCFG_CLKSHUTDOWN	0x40000000
    321 #define EP93XX_SDRAMCTRL_GLOBALCFG_CKE		0x80000000
    322 
    323 #define EP93XX_SDRAMCTRL_REFRESH_MASK		0x0000FFFF
    324 
    325 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_32	0x00000002
    326 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_16	0x00000001
    327 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_8	0x00000000
    328 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_MASK	0x00000003
    329 #define EP93XX_SDRAMCTRL_BOOTSTATUS_MEDIA	0x00000004
    330 
    331 #define EP93XX_SDRAMCTRL_DEVCFG_EXTBUSWIDTH	0x00000004
    332 #define EP93XX_SDRAMCTRL_DEVCFG_BANKCOUNT	0x00000008
    333 #define EP93XX_SDRAMCTRL_DEVCFG_SROM512		0x00000010
    334 #define EP93XX_SDRAMCTRL_DEVCFG_SROMLL		0x00000020
    335 #define EP93XX_SDRAMCTRL_DEVCFG_2KPAGE		0x00000040
    336 #define EP93XX_SDRAMCTRL_DEVCFG_SFCONFIGADDR	0x00000080
    337 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_MASK	0x00070000
    338 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_2	0x00010000
    339 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_3	0x00020000
    340 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_4	0x00030000
    341 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_5	0x00040000
    342 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_6	0x00050000
    343 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_7	0x00060000
    344 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_8	0x00070000
    345 #define EP93XX_SDRAMCTRL_DEVCFG_WBL		0x00080000
    346 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_MASK	0x00300000
    347 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_2	0x00200000
    348 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_3	0x00300000
    349 #define EP93XX_SDRAMCTRL_DEVCFG_AUTOPRECHARGE	0x01000000
    350 
    351 /*
    352  * 0x80070000 - 0x8007FFFF: Reserved
    353  */
    354 
    355 /*
    356  * 0x80080000 - 0x8008FFFF: SRAM controller & PCMCIA
    357  */
    358 #define SMC_OFFSET			0x080000
    359 #define SMC_BASE			(EP93XX_AHB_BASE | SMC_OFFSET)
    360 
    361 #ifndef __ASSEMBLY__
    362 struct smc_regs {
    363 	uint32_t bcr0;
    364 	uint32_t bcr1;
    365 	uint32_t bcr2;
    366 	uint32_t bcr3;
    367 	uint32_t reserved0[2];
    368 	uint32_t bcr6;
    369 	uint32_t bcr7;
    370 #if defined(CONFIG_EP9315)
    371 	uint32_t pcattribute;
    372 	uint32_t pccommon;
    373 	uint32_t pcio;
    374 	uint32_t reserved1[5];
    375 	uint32_t pcmciactrl;
    376 #endif
    377 };
    378 #endif
    379 
    380 #define EP93XX_OFF_SMCBCR0		0x00
    381 #define EP93XX_OFF_SMCBCR1		0x04
    382 #define EP93XX_OFF_SMCBCR2		0x08
    383 #define EP93XX_OFF_SMCBCR3		0x0C
    384 #define EP93XX_OFF_SMCBCR6		0x18
    385 #define EP93XX_OFF_SMCBCR7		0x1C
    386 
    387 #define SMC_BCR_IDCY_SHIFT	0
    388 #define SMC_BCR_WST1_SHIFT	5
    389 #define SMC_BCR_BLE		(1 << 10)
    390 #define SMC_BCR_WST2_SHIFT	11
    391 #define SMC_BCR_MW_SHIFT	28
    392 
    393 /*
    394  * 0x80090000 - 0x8009FFFF: Boot ROM
    395  */
    396 
    397 /*
    398  * 0x800A0000 - 0x800AFFFF: IDE interface
    399  */
    400 
    401 /*
    402  * 0x800B0000 - 0x800BFFFF: VIC1
    403  */
    404 
    405 /*
    406  * 0x800C0000 - 0x800CFFFF: VIC2
    407  */
    408 
    409 /*
    410  * 0x800D0000 - 0x800FFFFF: Reserved
    411  */
    412 
    413 /*
    414  * 0x80800000 - 0x8080FFFF: Reserved
    415  */
    416 
    417 /*
    418  * 0x80810000 - 0x8081FFFF: Timers
    419  */
    420 #define TIMER_OFFSET		0x010000
    421 #define TIMER_BASE		(EP93XX_APB_BASE | TIMER_OFFSET)
    422 
    423 #ifndef __ASSEMBLY__
    424 struct timer {
    425 	uint32_t load;
    426 	uint32_t value;
    427 	uint32_t control;
    428 	uint32_t clear;
    429 };
    430 
    431 struct timer4 {
    432 	uint32_t value_low;
    433 	uint32_t value_high;
    434 };
    435 
    436 struct timer_regs {
    437 	struct timer timer1;
    438 	uint32_t reserved0[4];
    439 	struct timer timer2;
    440 	uint32_t reserved1[12];
    441 	struct timer4 timer4;
    442 	uint32_t reserved2[6];
    443 	struct timer timer3;
    444 };
    445 #endif
    446 
    447 /*
    448  * 0x80820000 - 0x8082FFFF: I2S
    449  */
    450 #define I2S_OFFSET		0x020000
    451 #define I2S_BASE		(EP93XX_APB_BASE | I2S_OFFSET)
    452 
    453 /*
    454  * 0x80830000 - 0x8083FFFF: Security
    455  */
    456 #define SECURITY_OFFSET		0x030000
    457 #define SECURITY_BASE		(EP93XX_APB_BASE | SECURITY_OFFSET)
    458 
    459 #define EXTENSIONID		(SECURITY_BASE + 0x2714)
    460 
    461 /*
    462  * 0x80840000 - 0x8084FFFF: GPIO
    463  */
    464 #define GPIO_OFFSET		0x040000
    465 #define GPIO_BASE		(EP93XX_APB_BASE | GPIO_OFFSET)
    466 
    467 #ifndef __ASSEMBLY__
    468 struct gpio_int {
    469 	uint32_t inttype1;
    470 	uint32_t inttype2;
    471 	uint32_t eoi;
    472 	uint32_t inten;
    473 	uint32_t intsts;
    474 	uint32_t rawintsts;
    475 	uint32_t db;
    476 };
    477 
    478 struct gpio_regs {
    479 	uint32_t padr;
    480 	uint32_t pbdr;
    481 	uint32_t pcdr;
    482 	uint32_t pddr;
    483 	uint32_t paddr;
    484 	uint32_t pbddr;
    485 	uint32_t pcddr;
    486 	uint32_t pdddr;
    487 	uint32_t pedr;
    488 	uint32_t peddr;
    489 	uint32_t reserved0[2];
    490 	uint32_t pfdr;
    491 	uint32_t pfddr;
    492 	uint32_t pgdr;
    493 	uint32_t pgddr;
    494 	uint32_t phdr;
    495 	uint32_t phddr;
    496 	uint32_t reserved1;
    497 	uint32_t finttype1;
    498 	uint32_t finttype2;
    499 	uint32_t reserved2;
    500 	struct gpio_int pfint;
    501 	uint32_t reserved3[10];
    502 	struct gpio_int paint;
    503 	struct gpio_int pbint;
    504 	uint32_t eedrive;
    505 };
    506 #endif
    507 
    508 #define EP93XX_LED_DATA		0x80840020
    509 #define EP93XX_LED_GREEN_ON	0x0001
    510 #define EP93XX_LED_RED_ON	0x0002
    511 
    512 #define EP93XX_LED_DDR		0x80840024
    513 #define EP93XX_LED_GREEN_ENABLE	0x0001
    514 #define EP93XX_LED_RED_ENABLE	0x00020000
    515 
    516 /*
    517  * 0x80850000 - 0x8087FFFF: Reserved
    518  */
    519 
    520 /*
    521  * 0x80880000 - 0x8088FFFF: AAC
    522  */
    523 #define AAC_OFFSET		0x080000
    524 #define AAC_BASE		(EP93XX_APB_BASE | AAC_OFFSET)
    525 
    526 /*
    527  * 0x80890000 - 0x8089FFFF: Reserved
    528  */
    529 
    530 /*
    531  * 0x808A0000 - 0x808AFFFF: SPI
    532  */
    533 #define SPI_OFFSET		0x0A0000
    534 #define SPI_BASE		(EP93XX_APB_BASE | SPI_OFFSET)
    535 
    536 /*
    537  * 0x808B0000 - 0x808BFFFF: IrDA
    538  */
    539 #define IRDA_OFFSET		0x0B0000
    540 #define IRDA_BASE		(EP93XX_APB_BASE | IRDA_OFFSET)
    541 
    542 /*
    543  * 0x808C0000 - 0x808CFFFF: UART1
    544  */
    545 #define UART1_OFFSET		0x0C0000
    546 #define UART1_BASE		(EP93XX_APB_BASE | UART1_OFFSET)
    547 
    548 /*
    549  * 0x808D0000 - 0x808DFFFF: UART2
    550  */
    551 #define UART2_OFFSET		0x0D0000
    552 #define UART2_BASE		(EP93XX_APB_BASE | UART2_OFFSET)
    553 
    554 /*
    555  * 0x808E0000 - 0x808EFFFF: UART3
    556  */
    557 #define UART3_OFFSET		0x0E0000
    558 #define UART3_BASE		(EP93XX_APB_BASE | UART3_OFFSET)
    559 
    560 /*
    561  * 0x808F0000 - 0x808FFFFF: Key Matrix
    562  */
    563 #define KEY_OFFSET		0x0F0000
    564 #define KEY_BASE		(EP93XX_APB_BASE | KEY_OFFSET)
    565 
    566 /*
    567  * 0x80900000 - 0x8090FFFF: Touchscreen
    568  */
    569 #define TOUCH_OFFSET		0x900000
    570 #define TOUCH_BASE		(EP93XX_APB_BASE | TOUCH_OFFSET)
    571 
    572 /*
    573  * 0x80910000 - 0x8091FFFF: Pulse Width Modulation
    574  */
    575 #define PWM_OFFSET		0x910000
    576 #define PWM_BASE		(EP93XX_APB_BASE | PWM_OFFSET)
    577 
    578 /*
    579  * 0x80920000 - 0x8092FFFF: Real time clock
    580  */
    581 #define RTC_OFFSET		0x920000
    582 #define RTC_BASE		(EP93XX_APB_BASE | RTC_OFFSET)
    583 
    584 /*
    585  * 0x80930000 - 0x8093FFFF: Syscon
    586  */
    587 #define SYSCON_OFFSET		0x930000
    588 #define SYSCON_BASE		(EP93XX_APB_BASE | SYSCON_OFFSET)
    589 
    590 /* Security */
    591 #define SECURITY_EXTENSIONID	0x80832714
    592 
    593 #ifndef __ASSEMBLY__
    594 struct syscon_regs {
    595 	uint32_t pwrsts;
    596 	uint32_t pwrcnt;
    597 	uint32_t halt;
    598 	uint32_t stby;
    599 	uint32_t reserved0[2];
    600 	uint32_t teoi;
    601 	uint32_t stfclr;
    602 	uint32_t clkset1;
    603 	uint32_t clkset2;
    604 	uint32_t reserved1[6];
    605 	uint32_t scratch0;
    606 	uint32_t scratch1;
    607 	uint32_t reserved2[2];
    608 	uint32_t apbwait;
    609 	uint32_t bustmstrarb;
    610 	uint32_t bootmodeclr;
    611 	uint32_t reserved3[9];
    612 	uint32_t devicecfg;
    613 	uint32_t vidclkdiv;
    614 	uint32_t mirclkdiv;
    615 	uint32_t i2sclkdiv;
    616 	uint32_t keytchclkdiv;
    617 	uint32_t chipid;
    618 	uint32_t reserved4;
    619 	uint32_t syscfg;
    620 	uint32_t reserved5[8];
    621 	uint32_t sysswlock;
    622 };
    623 #else
    624 #define SYSCON_SCRATCH0		(SYSCON_BASE + 0x0040)
    625 #endif
    626 
    627 #define SYSCON_OFF_CLKSET1			0x0020
    628 #define SYSCON_OFF_SYSCFG			0x009c
    629 
    630 #define SYSCON_PWRCNT_UART_BAUD			(1 << 29)
    631 #define SYSCON_PWRCNT_USH_EN			(1 << 28)
    632 
    633 #define SYSCON_CLKSET_PLL_X2IPD_SHIFT		0
    634 #define SYSCON_CLKSET_PLL_X2FBD2_SHIFT		5
    635 #define SYSCON_CLKSET_PLL_X1FBD1_SHIFT		11
    636 #define SYSCON_CLKSET_PLL_PS_SHIFT		16
    637 #define SYSCON_CLKSET1_PCLK_DIV_SHIFT		18
    638 #define SYSCON_CLKSET1_HCLK_DIV_SHIFT		20
    639 #define SYSCON_CLKSET1_NBYP1			(1 << 23)
    640 #define SYSCON_CLKSET1_FCLK_DIV_SHIFT		25
    641 
    642 #define SYSCON_CLKSET2_PLL2_EN			(1 << 18)
    643 #define SYSCON_CLKSET2_NBYP2			(1 << 19)
    644 #define SYSCON_CLKSET2_USB_DIV_SHIFT		28
    645 
    646 #define SYSCON_CHIPID_REV_MASK			0xF0000000
    647 #define SYSCON_DEVICECFG_SWRST			(1 << 31)
    648 
    649 #define SYSCON_SYSCFG_LASDO			0x00000020
    650 
    651 /*
    652  * 0x80930000 - 0x8093FFFF: Watchdog Timer
    653  */
    654 #define WATCHDOG_OFFSET		0x940000
    655 #define WATCHDOG_BASE		(EP93XX_APB_BASE | WATCHDOG_OFFSET)
    656 
    657 /*
    658  * 0x80950000 - 0x9000FFFF: Reserved
    659  */
    660 
    661 /*
    662  * During low_level init we store memory layout in memory at specific location
    663  */
    664 #define UBOOT_MEMORYCNF_BANK_SIZE		0x2000
    665 #define UBOOT_MEMORYCNF_BANK_MASK		0x2004
    666 #define UBOOT_MEMORYCNF_BANK_COUNT		0x2008
    667