|
278 | 278 | #define MAX_PIV 0xfffff |
279 | 279 | #define PIT_MR_EN (1 << 24) |
280 | 280 |
|
| 281 | +/* GPIO PMC IDs */ |
| 282 | +#define GPIOA_PMCID 0x06 |
| 283 | +#define GPIOB_PMCID 0x07 |
| 284 | +#define GPIOC_PMCID 0x08 |
| 285 | +#define GPIOD_PMCID 0x09 |
| 286 | +#define GPIOE_PMCID 0x0A |
| 287 | + |
| 288 | + |
281 | 289 |
|
282 | 290 | struct dram { |
283 | 291 | struct dram_timing { |
@@ -427,22 +435,36 @@ extern void *kernel_addr, *update_addr, *dts_addr; |
427 | 435 | #define MAX_ECC_BYTES 8 |
428 | 436 | #endif |
429 | 437 |
|
430 | | -#define GPIOE_BASE 0xFFFFFA00 |
431 | | - |
432 | | -#define GPIOE_PER *(volatile uint32_t *)(GPIOE_BASE + 0x00) |
433 | | -#define GPIOE_PDR *(volatile uint32_t *)(GPIOE_BASE + 0x04) |
434 | | -#define GPIOE_PSR *(volatile uint32_t *)(GPIOE_BASE + 0x08) |
435 | | -#define GPIOE_OER *(volatile uint32_t *)(GPIOE_BASE + 0x10) |
436 | | -#define GPIOE_ODR *(volatile uint32_t *)(GPIOE_BASE + 0x14) |
437 | | -#define GPIOE_OSR *(volatile uint32_t *)(GPIOE_BASE + 0x18) |
438 | | -#define GPIOE_SODR *(volatile uint32_t *)(GPIOE_BASE + 0x30) |
439 | | -#define GPIOE_CODR *(volatile uint32_t *)(GPIOE_BASE + 0x34) |
440 | | -#define GPIOE_IER *(volatile uint32_t *)(GPIOE_BASE + 0x40) |
441 | | -#define GPIOE_IDR *(volatile uint32_t *)(GPIOE_BASE + 0x44) |
442 | | -#define GPIOE_MDER *(volatile uint32_t *)(GPIOE_BASE + 0x50) |
443 | | -#define GPIOE_MDDR *(volatile uint32_t *)(GPIOE_BASE + 0x54) |
444 | | -#define GPIOE_PPUDR *(volatile uint32_t *)(GPIOE_BASE + 0x60) |
445 | | -#define GPIOE_PPUER *(volatile uint32_t *)(GPIOE_BASE + 0x64) |
| 438 | + |
| 439 | +#define GPIOB 0xFFFFF400 |
| 440 | +#define GPIOC 0xFFFFF600 |
| 441 | +#define GPIOE 0xFFFFFA00 |
| 442 | + |
| 443 | +#define GPIO_PER(base) *(volatile uint32_t *)(base + 0x00) |
| 444 | +#define GPIO_PDR(base) *(volatile uint32_t *)(base + 0x04) |
| 445 | +#define GPIO_PSR(base) *(volatile uint32_t *)(base + 0x08) |
| 446 | +#define GPIO_OER(base) *(volatile uint32_t *)(base + 0x10) |
| 447 | +#define GPIO_ODR(base) *(volatile uint32_t *)(base + 0x14) |
| 448 | +#define GPIO_OSR(base) *(volatile uint32_t *)(base + 0x18) |
| 449 | +#define GPIO_SODR(base) *(volatile uint32_t *)(base + 0x30) |
| 450 | +#define GPIO_CODR(base) *(volatile uint32_t *)(base + 0x34) |
| 451 | +#define GPIO_IER(base) *(volatile uint32_t *)(base + 0x40) |
| 452 | +#define GPIO_IDR(base) *(volatile uint32_t *)(base + 0x44) |
| 453 | +#define GPIO_MDER(base) *(volatile uint32_t *)(base + 0x50) |
| 454 | +#define GPIO_MDDR(base) *(volatile uint32_t *)(base + 0x54) |
| 455 | +#define GPIO_PPUDR(base) *(volatile uint32_t *)(base + 0x60) |
| 456 | +#define GPIO_PPUER(base) *(volatile uint32_t *)(base + 0x64) |
| 457 | +#define GPIO_PPDDR(base) *(volatile uint32_t *)(base + 0x90) |
| 458 | + |
| 459 | + |
| 460 | +/* PMC Macro to enable clock */ |
| 461 | +#define PMC_CLOCK_EN(id) { \ |
| 462 | + register uint32_t pmc_pcr; \ |
| 463 | + PMC_PCR = id; \ |
| 464 | + pmc_pcr = PMC_PCR & (~PMC_PCR_DIV_MASK); \ |
| 465 | + pmc_pcr |= PMC_PCR_CMD | PMC_PCR_EN; \ |
| 466 | + PMC_PCR = pmc_pcr; \ |
| 467 | +} |
446 | 468 |
|
447 | 469 |
|
448 | 470 | #endif |
0 commit comments