void at91_spi0_hw_init(void) { #if defined(CONFIG_SPI_BUS0) #if defined(CONFIG_SPI0_IOSET_1) const struct pio_desc spi_pins[] = { {"SPI0_SPCK", AT91C_PIN_PA(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI0_MOSI", AT91C_PIN_PA(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI0_MISO", AT91C_PIN_PA(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI0_NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_SPI0_IOSET_2) const struct pio_desc spi_pins[] = { {"SPI0_SPCK", AT91C_PIN_PB(1), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"SPI0_MOSI", AT91C_PIN_PB(0), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"SPI0_MISO", AT91C_PIN_PA(31), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"SPI0_NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #else #error "No SPI0 IOSET defined" #endif #elif defined(CONFIG_SPI_BUS1) #if defined(CONFIG_SPI1_IOSET_1) const struct pio_desc spi_pins[] = { {"SPI1_SPCK", AT91C_PIN_PC(1), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_MOSI", AT91C_PIN_PC(2), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_MISO", AT91C_PIN_PC(3), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_SPI1_IOSET_2) const struct pio_desc spi_pins[] = { {"SPI1_SPCK", AT91C_PIN_PA(22), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_MOSI", AT91C_PIN_PA(23), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_MISO", AT91C_PIN_PA(24), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"SPI1_NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_SPI1_IOSET_3) const struct pio_desc spi_pins[] = { {"SPI1_SPCK", AT91C_PIN_PD(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI1_MOSI", AT91C_PIN_PD(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI1_MISO", AT91C_PIN_PD(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI1_NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #else #error "No SPI1 IOSET defined" #endif #else #error "No SPI Bus defined" #endif pio_configure(spi_pins); pmc_sam9x5_enable_periph_clk(CONFIG_SYS_ID_SPI); }
static void gmac0_hw_init(void) { const struct pio_desc macb_pins[] = { {"G0_MDC", AT91C_PIN_PB(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"G0_MDIO", AT91C_PIN_PB(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pio_configure(macb_pins); pmc_enable_periph_clock(AT91C_ID_PIOB); }
static void at91_dbgu_hw_init(void) { /* Configure DBGU pin */ const struct pio_desc dbgu_pins[] = { {"RXD", AT91C_PIN_PB(12), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"TXD", AT91C_PIN_PB(13), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the dbgu pins */ pio_configure(dbgu_pins); writel((1 << AT91C_ID_PIOB), (PMC_PCER + AT91C_BASE_PMC)); }
static void at91_dbgu_hw_init(void) { const struct pio_desc dbgu_pins[] = { {"RXD", AT91C_PIN_PB(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"TXD", AT91C_PIN_PB(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(dbgu_pins); pmc_enable_periph_clock(AT91C_ID_DBGU); }
static void at91_dbgu_hw_init(void) { /* Configure DBGU pin */ const struct pio_desc dbgu_pins[] = { {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the dbgu pins */ pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(dbgu_pins); }
void at91_spi0_hw_init(void) { /* Configure spi0 PINs */ const struct pio_desc spi0_pins[] = { {"MISO", AT91C_PIN_PB(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PB(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PB(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(spi0_pins); pmc_enable_periph_clock(AT91C_ID_SPI0); }
void at91_spi0_hw_init(void) { /* Configure spi0 PINs */ const struct pio_desc spi0_pins[] = { {"MISO", AT91C_PIN_PB(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PB(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PB(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; writel((1 << AT91C_ID_PIOB), (PMC_PCER + AT91C_BASE_PMC)); pio_configure(spi0_pins); writel((1 << AT91C_ID_SPI0), (PMC_PCER + AT91C_BASE_PMC)); }
void nandflash_hw_init(void) { unsigned int reg; /* Configure NANDFlash pins*/ const struct pio_desc nand_pins[] = { {"NANDALE", AT91C_PIN_PB(2), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDCLE", AT91C_PIN_PB(3), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDOE", AT91C_PIN_PB(4), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDWE", AT91C_PIN_PB(5), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDCS", CONFIG_SYS_NAND_ENABLE_PIN, 1, PIO_PULLUP, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ reg = readl(AT91C_BASE_CCFG + CCFG_EBI0CSA); reg |= AT91C_EBI_CS3A_SM; writel(reg, AT91C_BASE_CCFG + CCFG_EBI0CSA); /* Configure SMC CS3 */ writel((AT91C_SMC_NWESETUP_(1) | AT91C_SMC_NCS_WRSETUP_(0) | AT91C_SMC_NRDSETUP_(1) | AT91C_SMC_NCS_RDSETUP_(0)), AT91C_BASE_SMC + SMC_SETUP3); writel((AT91C_SMC_NWEPULSE_(3) | AT91C_SMC_NCS_WRPULSE_(3) | AT91C_SMC_NRDPULSE_(3) | AT91C_SMC_NCS_RDPULSE_(3)), AT91C_BASE_SMC + SMC_PULSE3); writel((AT91C_SMC_NWECYCLE_(5) | AT91C_SMC_NRDCYCLE_(5)), AT91C_BASE_SMC + SMC_CYCLE3); writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | AT91C_SMC_DBW_WIDTH_BITS_8 | AT91_SMC_TDF_(2)), AT91C_BASE_SMC + SMC_CTRL3); /* Configure the NANDFlash pins */ pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(nand_pins); }
unsigned int at91_eth0_hw_init(void) { unsigned int base_addr = AT91C_BASE_GMAC; const struct pio_desc macb_pins[] = { {"G0_MDC", AT91C_PIN_PB(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"G0_MDIO", AT91C_PIN_PB(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pio_configure(macb_pins); pmc_enable_periph_clock(AT91C_ID_PIOB); pmc_enable_periph_clock(AT91C_ID_GMAC); return base_addr; }
static void one_wire_hw_init(void) { const struct pio_desc wire_pio[] = { {"1-Wire", AT91C_PIN_PB(18), 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOA_B); pio_configure(wire_pio); }
void one_wire_hw_init(void) { const struct pio_desc wire_pio[] = { {"1-Wire", AT91C_PIN_PB(18), 0, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; writel((1 << AT91C_ID_PIOA_B), (PMC_PCER + AT91C_BASE_PMC)); pio_setup(wire_pio); }
/*------------------------------------------------------------------------------*/ void df_hw_init(void) { /* * Configure PIOs */ const struct pio_desc df_pio[] = { {"MISO", AT91C_PIN_PB(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PB(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PB(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS0", AT91C_PIN_PB(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS1", AT91C_PIN_PC(11), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* * Configure the PIO controller */ pio_setup(df_pio); }
/*------------------------------------------------------------------------------*/ void nandflash_hw_init(void) { /* * Configure PIOs */ const struct pio_desc nand_pio[] = { {"NANDALE", AT91C_PIN_PB(2), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDCLE", AT91C_PIN_PB(3), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDOE", AT91C_PIN_PB(4), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDWE", AT91C_PIN_PB(5), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDCS", AT91C_PIN_PB(6), 0, PIO_PULLUP, PIO_OUTPUT}, {"RDY_BSY", AT91C_PIN_PD(17), 0, PIO_PULLUP, PIO_INPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* * Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ writel(readl(AT91C_CCFG_EBICSA) | AT91C_EBI_CS3A_SM, AT91C_CCFG_EBICSA); /* * Configure SMC CS3 */ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC + SMC_SETUP3); writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC + SMC_PULSE3); writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE), AT91C_BASE_SMC + SMC_CYCLE3); writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF), AT91C_BASE_SMC + SMC_CTRL3); /* * Configure the PIO controller */ writel((1 << AT91C_ID_PIOD), PMC_PCER + AT91C_BASE_PMC); pio_setup(nand_pio); }
/*----------------------------------------------------------------------------*/ void hw_init(void) { unsigned int cp15; /* * Configure PIOs */ const struct pio_desc hw_pio[] = { #ifdef CONFIG_DEBUG {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, #endif {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* * Disable watchdog */ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); /* * At this stage the main oscillator is supposed to be enabled * * PCK = MCK = MOSC */ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); /* * Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* * PCK = PLLA/2 = 3 * MCK */ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); /* * Switch MCK on PLLA output */ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); /* * Configure PLLB */ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); /* * Enable External Reset */ writel(AT91C_RSTC_KEY_UNLOCK || AT91C_RSTC_URSTEN, AT91C_BASE_RSTC + RSTC_RMR); /* * Configure CP15 */ cp15 = get_cp15(); //cp15 |= I_CACHE; set_cp15(cp15); /* * Enable External Reset */ writel(AT91C_RSTC_KEY_UNLOCK || AT91C_RSTC_URSTEN, AT91C_BASE_RSTC + RSTC_RMR); /* * Configure the PIO controller */ pio_setup(hw_pio); /* * Configure the EBI Slave Slot Cycle to 64 */ writel((readl((AT91C_BASE_MATRIX + MATRIX_SCFG3)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG3)); #ifdef CONFIG_DEBUG /* * Enable Debug messages on the DBGU */ dbgu_init(BAUDRATE(MASTER_CLOCK, 115200)); dbgu_print("Start AT91Bootstrap...\n\r"); #endif /* CONFIG_DEBUG */ #ifdef CONFIG_SDRAM /* * Initialize the matrix (memory voltage = 3.3) */ writel((readl(AT91C_BASE_CCFG + CCFG_EBICSA)) | AT91C_EBI_CS1A_SDRAMC | (1 << 16), AT91C_BASE_CCFG + CCFG_EBICSA); /* * Configure SDRAM Controller */ sdram_init(AT91C_SDRAMC_NC_9 | AT91C_SDRAMC_NR_13 | AT91C_SDRAMC_CAS_3 | AT91C_SDRAMC_NB_4_BANKS | AT91C_SDRAMC_DBW_32_BITS | AT91C_SDRAMC_TWR_3 | AT91C_SDRAMC_TRC_9 | AT91C_SDRAMC_TRP_3 | AT91C_SDRAMC_TRCD_3 | AT91C_SDRAMC_TRAS_6 | AT91C_SDRAMC_TXSR_10, /* Control Register */ (MASTER_CLOCK * 7) / 1000000, /* Refresh Timer Register */ AT91C_SDRAMC_MD_SDRAM); /* SDRAM (no low power) */ #endif /* CONFIG_SDRAM */ }
void at91_qspi_hw_init(void) { #if defined(CONFIG_QSPI_BUS0) #if defined(CONFIG_QSPI0_IOSET_1) const struct pio_desc qspi_pins[] = { {"QSPI0_SCK", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI0_CS", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI0_IO0", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI0_IO1", AT91C_PIN_PA(3), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI0_IO2", AT91C_PIN_PA(4), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI0_IO3", AT91C_PIN_PA(5), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_QSPI0_IOSET_2) const struct pio_desc qspi_pins[] = { {"QSPI0_SCK", AT91C_PIN_PA(14), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"QSPI0_CS", AT91C_PIN_PA(15), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"QSPI0_IO0", AT91C_PIN_PA(16), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"QSPI0_IO1", AT91C_PIN_PA(17), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"QSPI0_IO2", AT91C_PIN_PA(18), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"QSPI0_IO3", AT91C_PIN_PA(19), 0, PIO_DEFAULT, PIO_PERIPH_C}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_QSPI0_IOSET_3) const struct pio_desc qspi_pins[] = { {"QSPI0_SCK", AT91C_PIN_PA(22), 0, PIO_DEFAULT, PIO_PERIPH_F}, {"QSPI0_CS", AT91C_PIN_PA(23), 0, PIO_DEFAULT, PIO_PERIPH_F}, {"QSPI0_IO0", AT91C_PIN_PA(24), 0, PIO_DEFAULT, PIO_PERIPH_F}, {"QSPI0_IO1", AT91C_PIN_PA(25), 0, PIO_DEFAULT, PIO_PERIPH_F}, {"QSPI0_IO2", AT91C_PIN_PA(26), 0, PIO_DEFAULT, PIO_PERIPH_F}, {"QSPI0_IO3", AT91C_PIN_PA(27), 0, PIO_DEFAULT, PIO_PERIPH_F}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #else #error "No QSPI0 IOSET defined" #endif #elif defined(CONFIG_QSPI_BUS1) #if defined(CONFIG_QSPI1_IOSET_1) const struct pio_desc qspi_pins[] = { {"QSPI1_SCK", AT91C_PIN_PA(6), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI1_CS", AT91C_PIN_PA(11), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI1_IO0", AT91C_PIN_PA(7), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI1_IO1", AT91C_PIN_PA(8), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI1_IO2", AT91C_PIN_PA(9), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"QSPI1_IO3", AT91C_PIN_PA(10), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_QSPI1_IOSET_2) const struct pio_desc qspi_pins[] = { {"QSPI1_SCK", AT91C_PIN_PB(5), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"QSPI1_CS", AT91C_PIN_PB(6), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"QSPI1_IO0", AT91C_PIN_PB(7), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"QSPI1_IO1", AT91C_PIN_PB(8), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"QSPI1_IO2", AT91C_PIN_PB(9), 0, PIO_DEFAULT, PIO_PERIPH_D}, {"QSPI1_IO3", AT91C_PIN_PB(10), 0, PIO_DEFAULT, PIO_PERIPH_D}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #elif defined(CONFIG_QSPI1_IOSET_3) const struct pio_desc qspi_pins[] = { {"QSPI1_SCK", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"QSPI1_CS", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"QSPI1_IO0", AT91C_PIN_PB(16), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"QSPI1_IO1", AT91C_PIN_PB(17), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"QSPI1_IO2", AT91C_PIN_PB(18), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"QSPI1_IO3", AT91C_PIN_PB(19), 0, PIO_DEFAULT, PIO_PERIPH_E}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #else #error "No QSPI1 IOSET defined" #endif #else #error "No QSPI Bus defined" #endif pio_configure(qspi_pins); pmc_sam9x5_enable_periph_clk(CONFIG_SYS_ID_QSPI); }
/*----------------------------------------------------------------------------*/ void hw_init(void) { unsigned int cp15; /* * Configure PIOs */ const struct pio_desc hw_pio[] = { #ifdef CONFIG_DEBUG {"RXD", AT91C_PIN_PB(12), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"TXD", AT91C_PIN_PB(13), 0, PIO_DEFAULT, PIO_PERIPH_A}, #endif {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* * Disable watchdog */ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); /* * At this stage the main oscillator is supposed to be enabled * * PCK = MCK = MOSC */ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); /* * Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); /* * PCK = PLLA/2 = 3 * MCK */ pmc_cfg_mck(BOARD_PRESCALER, PLL_LOCK_TIMEOUT); /* * Switch MCK on PLLA output */ pmc_cfg_mck(0x1302, PLL_LOCK_TIMEOUT); /* * Configure PLLB */ //pmc_cfg_pllutmi(PLLUTMI_SETTINGS, PLL_LOCK_TIMEOUT); /* * Enable External Reset */ writel(AT91C_RSTC_KEY_UNLOCK || AT91C_RSTC_URSTEN, AT91C_BASE_RSTC + RSTC_RMR); /* * Configure CP15 */ cp15 = get_cp15(); //cp15 |= I_CACHE; set_cp15(cp15); #ifdef CONFIG_SCLK sclk_enable(); #endif /* * Configure the PIO controller */ pio_setup(hw_pio); #ifdef CONFIG_DEBUG /* * Enable Debug messages on the DBGU */ dbgu_init(BAUDRATE(MASTER_CLOCK, 115200)); dbgu_print("Start AT91Bootstrap...\n\r"); #endif #ifdef CONFIG_DDR2 /* * Configure DDRAM Controller */ ddramc_hw_init(); #endif /* CONFIG_DDR2 */ }
static void sdramc_hw_init(void) { /* Configure sdramc pins */ const struct pio_desc sdramc_pins[] = { {"D16", AT91C_PIN_PB(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D17", AT91C_PIN_PB(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D18", AT91C_PIN_PB(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D19", AT91C_PIN_PB(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D20", AT91C_PIN_PB(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D21", AT91C_PIN_PB(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D22", AT91C_PIN_PB(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D23", AT91C_PIN_PB(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D24", AT91C_PIN_PB(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D25", AT91C_PIN_PB(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D26", AT91C_PIN_PB(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D27", AT91C_PIN_PB(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D28", AT91C_PIN_PB(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D29", AT91C_PIN_PB(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D30", AT91C_PIN_PB(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D31", AT91C_PIN_PB(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the sdramc pins */ pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(sdramc_pins); }
/*------------------------------------------------------------------------------*/ void sdramc_hw_init(void) { /* * Configure PIOs */ const struct pio_desc sdramc_pio[] = { {"D16", AT91C_PIN_PB(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D17", AT91C_PIN_PB(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D18", AT91C_PIN_PB(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D19", AT91C_PIN_PB(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D20", AT91C_PIN_PB(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D21", AT91C_PIN_PB(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D22", AT91C_PIN_PB(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D23", AT91C_PIN_PB(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D24", AT91C_PIN_PB(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D25", AT91C_PIN_PB(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D26", AT91C_PIN_PB(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D27", AT91C_PIN_PB(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D28", AT91C_PIN_PB(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D29", AT91C_PIN_PB(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D30", AT91C_PIN_PB(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"D31", AT91C_PIN_PB(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* * Configure the SDRAMC PIO controller to output PCK0 */ pio_setup(sdramc_pio); }