unsigned int at91_twi0_hw_init(void) { unsigned int base_addr = AT91C_BASE_TWI0; const struct pio_desc twi_pins[] = { {"TWD0", AT91C_PIN_PD(21), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"TWCK0", AT91C_PIN_PD(22), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pio_configure(twi_pins); pmc_sam9x5_enable_periph_clk(AT91C_ID_TWI0); return base_addr; }
static void at91_dbgu_hw_init(void) { /* Configure DBGU pin */ 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}, }; /* Configure the dbgu pins */ pmc_enable_periph_clock(AT91C_ID_PIOB); pio_configure(dbgu_pins); /* Enable clock */ pmc_enable_periph_clock(AT91C_ID_DBGU); }
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 PIOs */ const struct pio_desc nand_pins[] = { {"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 * EBI IO in 1.8V mode */ reg = readl(AT91C_BASE_CCFG + CCFG_EBICSA); reg |= AT91C_EBI_CS3A_SM; reg &= ~AT91C_VDDIOM_SEL_33V; writel(reg, AT91C_BASE_CCFG + CCFG_EBICSA); /* Configure SMC CS3 */ writel((AT91C_SMC_NWESETUP_(2) | AT91C_SMC_NCS_WRSETUP_(0) | AT91C_SMC_NRDSETUP_(2) | AT91C_SMC_NCS_RDSETUP_(0)), AT91C_BASE_SMC + SMC_SETUP3); writel((AT91C_SMC_NWEPULSE_(4) | AT91C_SMC_NCS_WRPULSE_(4) | AT91C_SMC_NRDPULSE_(4) | AT91C_SMC_NCS_RDPULSE_(4)), AT91C_BASE_SMC + SMC_PULSE3); writel((AT91C_SMC_NWECYCLE_(7) | AT91C_SMC_NRDCYCLE_(7)), AT91C_BASE_SMC + SMC_CYCLE3); writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | AT91C_SMC_DBW_WIDTH_BITS_16 | AT91_SMC_TDF_(3)), AT91C_BASE_SMC + SMC_CTRL3); /* Configure the PIO controll */ writel((1 << AT91C_ID_PIOC), (PMC_PCER + AT91C_BASE_PMC)); pio_configure(nand_pins); }
static int ek_special_hw_init(void) { unsigned long rstc; unsigned long rst_key = (0xA5 << 24); /* * For on the sam9m10g45ek board, the chip wm9711 stay in the test mode, * so it need do some action to exit mode. */ const struct pio_desc wm9711_pins[] = { {"AC97TX", AT91C_PIN_PD(7), 0, PIO_PULLUP, PIO_OUTPUT}, {"AC97FS", AT91C_PIN_PD(8), 0, PIO_PULLUP, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pio_configure(wm9711_pins); writel((1 << AT91C_ID_PIOD_E), PMC_PCER + AT91C_BASE_PMC); /* * Disable pull-up on: * RXDV(PA15) => PHY normal mode (not Test mode) * ERX0(PA12) => PHY ADDR0 * ERX1(PA13) => PHY ADDR1 => PHYADDR = 0x0 * * PHY has internal pull-down */ writel((0x01 << 12) | (0x01 << 13) | (0x01 << 15), AT91C_BASE_PIOA + PIO_PPUDR(0)); rstc = at91_sys_read(AT91C_BASE_RSTC + RSTC_RMR); /* Need to reset PHY -> 500ms reset */ at91_sys_write(AT91C_BASE_RSTC + RSTC_RMR, rst_key | (AT91C_RSTC_ERSTL & (0x0D << 8)) | AT91C_RSTC_URSTEN); at91_sys_write(AT91C_BASE_RSTC + RSTC_RCR, rst_key | AT91C_RSTC_EXTRST); /* Wait for end hardware reset */ while (!(at91_sys_read(AT91C_BASE_RSTC + RSTC_RSR) & AT91C_RSTC_NRSTL)); /* Restore NRST value */ at91_sys_write(AT91C_BASE_RSTC + RSTC_RMR, rst_key | (rstc) | AT91C_RSTC_URSTEN); return 0; }
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); }
void at91_spi0_hw_init(void) { /* Configure PIN for SPI0 */ const struct pio_desc spi0_pins[] = { {"SPI0_MISO", AT91C_PIN_PC(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI0_MOSI", AT91C_PIN_PC(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPI0_SPCK", AT91C_PIN_PC(2), 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}, }; /* Configure the PIO controller */ pio_configure(spi0_pins); pmc_enable_periph_clock(AT91C_ID_PIOC); pmc_enable_periph_clock(AT91C_ID_SPI0); }
unsigned int at91_eth1_hw_init(void) { unsigned int base_addr = AT91C_BASE_GMAC1; const struct pio_desc macb_pins[] = { {"G1_MDC", AT91C_PIN_PA(22), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"G1_MDIO", AT91C_PIN_PA(23), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pio_configure(macb_pins); pmc_enable_periph_clock(AT91C_ID_PIOA); pmc_enable_periph_clock(AT91C_ID_GMAC1); return base_addr; }
unsigned int at91_twi3_hw_init(void) { unsigned int base_addr = AT91C_BASE_TWI3; const struct pio_desc twi_pins[] = { {"TWD3", AT91C_PIN_PC(25), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"TWCK3", AT91C_PIN_PC(26), 0, PIO_DEFAULT, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOC); pio_configure(twi_pins); pmc_enable_periph_clock(AT91C_ID_TWI3); return base_addr; }
/** * \brief Configure the Pushbutton. */ static void configure_button(void) { /* Enable the peripheral clock for the push button on board. */ pmc_enable_periph_clk(PUSHBUTTON_ID); /* Configure PIOs as input pins. */ pio_configure(PUSHBUTTON_PIO, PUSHBUTTON_TYPE, PUSHBUTTON_MASK, PUSHBUTTON_ATTR); /* Adjust PIO debounce filter parameters. */ pio_set_debounce_filter(PUSHBUTTON_PIO, PUSHBUTTON_MASK, PUSHBUTTON_FILTER_GLITCH_VAULE); /* Initialize PIO interrupt handler, interrupt on rising edge. */ pio_handler_set(PUSHBUTTON_PIO, PUSHBUTTON_ID, PUSHBUTTON_MASK, PUSHBUTTON_ATTR, button_handler); }
unsigned int at91_eth1_hw_init(void) { unsigned int base_addr = AT91C_BASE_EMAC; const struct pio_desc macb_pins[] = { {"EMDC", AT91C_PIN_PC(8), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"EMDIO", AT91C_PIN_PC(9), 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_PIOC); pmc_enable_periph_clock(AT91C_ID_EMAC); return base_addr; }
void nandflash_hw_init(void) { const struct pio_desc nand_pins[] = { {"NANDALE", AT91C_PIN_PE(21), 0, PIO_PULLUP, PIO_PERIPH_A}, {"NANDCLE", AT91C_PIN_PE(22), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOE); pio_configure(nand_pins); pmc_enable_periph_clock(AT91C_ID_SMC); writel(AT91C_SMC_SETUP_NWE(1) | AT91C_SMC_SETUP_NCS_WR(1) | AT91C_SMC_SETUP_NRD(2) | AT91C_SMC_SETUP_NCS_RD(1), (ATMEL_BASE_SMC + SMC_SETUP3)); writel(AT91C_SMC_PULSE_NWE(5) | AT91C_SMC_PULSE_NCS_WR(7) | AT91C_SMC_PULSE_NRD(5) | AT91C_SMC_PULSE_NCS_RD(7), (ATMEL_BASE_SMC + SMC_PULSE3)); writel(AT91C_SMC_CYCLE_NWE(8) | AT91C_SMC_CYCLE_NRD(9), (ATMEL_BASE_SMC + SMC_CYCLE3)); writel(AT91C_SMC_TIMINGS_TCLR(3) | AT91C_SMC_TIMINGS_TADL(10) | AT91C_SMC_TIMINGS_TAR(3) | AT91C_SMC_TIMINGS_TRR(4) | AT91C_SMC_TIMINGS_TWB(5) | AT91C_SMC_TIMINGS_RBNSEL(3) | AT91C_SMC_TIMINGS_NFSEL, (ATMEL_BASE_SMC + SMC_TIMINGS3)); writel(AT91C_SMC_MODE_READMODE_NRD_CTRL | AT91C_SMC_MODE_WRITEMODE_NWE_CTRL | AT91C_SMC_MODE_EXNWMODE_DISABLED | AT91C_SMC_MODE_DBW_8 | AT91C_SMC_MODE_TDF_CYCLES(1), (ATMEL_BASE_SMC + SMC_MODE3)); }
static void psram_hw_init(void) { unsigned short *addressMax = (unsigned short *)MICRON_8MB_ADDRESS_MAX; const struct pio_desc psram_pins[] = { {"CRE", CONFIG_SYS_PSRAM_DATA_ACCESS_PIN, 1, PIO_DEFAULT, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure SMC1 CS0 */ writel((AT91C_SMC_NWESETUP_(0) | AT91C_SMC_NCS_WRSETUP_(0) | AT91C_SMC_NRDSETUP_(0) | AT91C_SMC_NCS_RDSETUP_(0)), AT91C_BASE_SMC1 + SMC_SETUP0); writel((AT91C_SMC_NWEPULSE_(4) | AT91C_SMC_NCS_WRPULSE_(5) | AT91C_SMC_NRDPULSE_(2) | AT91C_SMC_NCS_RDPULSE_(5)), AT91C_BASE_SMC1 + SMC_PULSE0); writel((AT91C_SMC_NWECYCLE_(5) | AT91C_SMC_NRDCYCLE_(7)), AT91C_BASE_SMC1 + SMC_CYCLE0); writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_BAT_BYTE_SELECT | AT91C_SMC_DBW_WIDTH_BITS_16 | AT91C_SMC_PMEN | AT91C_SMC_PS_SIZE_THIRTY_TWO_BYTES), AT91C_BASE_SMC1 + SMC_CTRL0); /* Configure psram pins */ pio_configure(psram_pins); data_access_enable(); /* Enable page mode */ readl(addressMax); readl(addressMax); writel(MICRON_RCR, addressMax); writel(MICRON_PAGE_MODE_ENABLE, addressMax); }
void at91_spi0_hw_init(void) { /* Configure spi0 PINs */ const struct pio_desc spi0_pins[] = { {"MISO", AT91C_PIN_PA(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PA(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PA(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_PULLUP, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the spi0 pins */ pmc_enable_periph_clock(AT91C_ID_PIOA); pio_configure(spi0_pins); /* Enable the spi0 clock */ pmc_enable_periph_clock(AT91C_ID_SPI); }
void at91_spi0_hw_init(void) { /* Configure PIN for SPI0 */ const struct pio_desc spi0_pins[] = { {"MISO", AT91C_PIN_PD(10), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PD(11), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PD(12), 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}, }; /* Configure the PIO controller */ writel((1 << AT91C_ID_PIOD), (PMC_PCER + AT91C_BASE_PMC)); pio_configure(spi0_pins); /* Enable the clock */ writel((1 << AT91C_ID_SPI0), (PMC_PCER + AT91C_BASE_PMC)); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK",AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"MCCDA", AT91C_PIN_PA(1), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA0", AT91C_PIN_PA(0), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA1", AT91C_PIN_PA(4), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA2", AT91C_PIN_PA(5), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA3", AT91C_PIN_PA(6), 0, PIO_PULLUP, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_B}, }; pio_configure(mci_pins); writel((1 << AT91C_ID_PIOA), (PMC_PCER + AT91C_BASE_PMC)); /* Enable the clock */ writel((1 << AT91C_ID_MCI), (PMC_PCER + AT91C_BASE_PMC)); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCI1_CK", AT91C_PIN_PE(18), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"MCI1_CDA", AT91C_PIN_PE(19), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"MCI1_DA0", AT91C_PIN_PE(20), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"MCI1_DA1", AT91C_PIN_PE(21), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"MCI1_DA2", AT91C_PIN_PE(22), 0, PIO_DEFAULT, PIO_PERIPH_C}, {"MCI1_DA3", AT91C_PIN_PE(23), 0, PIO_DEFAULT, PIO_PERIPH_C}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the PIO controller */ pio_configure(mci_pins); pmc_enable_periph_clock(AT91C_ID_PIOE); pmc_enable_periph_clock(AT91C_ID_HSMCI1); }
/** * \brief Configure the Pushbuttons * * Configure the PIO as inputs and generate corresponding interrupt when * pressed or released. */ static void _configure_buttons(void) { int i = 0; for (i = 0; i < ARRAY_SIZE(button_pins); ++i) { /* Configure pios as inputs. */ pio_configure(&button_pins[i], 1); /* Adjust pio debounce filter parameters, uses 10 Hz filter. */ pio_set_debounce_filter(&button_pins[i], 10); /* Initialize pios interrupt with its handlers */ pio_configure_it(&button_pins[i]); pio_add_handler_to_group(button_pins[i].group, button_pins[i].mask, push_button_handler, NULL); pio_enable_it(button_pins); } }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK",AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_B}, {"MCCDA", AT91C_PIN_PA(1), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA0", AT91C_PIN_PA(0), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA1", AT91C_PIN_PA(4), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA2", AT91C_PIN_PA(5), 0, PIO_PULLUP, PIO_PERIPH_B}, {"MCDA3", AT91C_PIN_PA(6), 0, PIO_PULLUP, PIO_PERIPH_B}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_B}, }; pmc_enable_periph_clock(AT91C_ID_PIOA); pio_configure(mci_pins); /* Enable the clock */ pmc_enable_periph_clock(AT91C_ID_MCI); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK", AT91C_PIN_PA(17), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCCDA", AT91C_PIN_PA(16), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA0", AT91C_PIN_PA(15), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA1", AT91C_PIN_PA(18), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA2", AT91C_PIN_PA(19), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA3", AT91C_PIN_PA(20), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the PIO controller */ writel((1 << AT91C_ID_PIOA_B), (PMC_PCER + AT91C_BASE_PMC)); pio_configure(mci_pins); /* Enable the clock */ writel((1 << AT91C_ID_MCI), (PMC_PCER + AT91C_BASE_PMC)); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK", AT91C_PIN_PA(17), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCCDA", AT91C_PIN_PA(16), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA0", AT91C_PIN_PA(15), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA1", AT91C_PIN_PA(18), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA2", AT91C_PIN_PA(19), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA3", AT91C_PIN_PA(20), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the PIO controller */ pmc_enable_periph_clock(AT91C_ID_PIOA_B); pio_configure(mci_pins); /* Enable the clock */ pmc_enable_periph_clock(AT91C_ID_HSMCI0); }
void at91_spi0_hw_init(void) { /* Configure spi0 PINs */ const struct pio_desc spi0_pins[] = { {"MISO", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MOSI", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SPCK", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"NPCS", CONFIG_SYS_SPI_PCS, 1, PIO_PULLUP, PIO_OUTPUT}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the spi0 pins */ pio_configure(spi0_pins); writel(((1 << AT91C_ID_PIOA) | (1 << AT91C_ID_PIOC)), (PMC_PCER + AT91C_BASE_PMC)); /* Enable the spi0 clock */ writel((1 << AT91C_ID_SPI0), (PMC_PCER + AT91C_BASE_PMC)); }
void at91_sdhc_hw_init(void) { #ifdef CONFIG_SDHC0 const struct pio_desc sdmmc_pins[] = { {"SDMMC0_CK", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_CMD", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT0", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT1", AT91C_PIN_PA(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT2", AT91C_PIN_PA(4), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT3", AT91C_PIN_PA(5), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT4", AT91C_PIN_PA(6), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT5", AT91C_PIN_PA(7), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT6", AT91C_PIN_PA(8), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_DAT7", AT91C_PIN_PA(9), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_RSTN", AT91C_PIN_PA(10), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_VDDSEL", AT91C_PIN_PA(11), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"SDMMC0_CD", AT91C_PIN_PA(13), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #endif #ifdef CONFIG_SDHC1 const struct pio_desc sdmmc_pins[] = { {"SDMMC1_CD", AT91C_PIN_PA(30), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_CMD", AT91C_PIN_PA(28), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_CK", AT91C_PIN_PA(22), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_DAT0", AT91C_PIN_PA(18), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_DAT1", AT91C_PIN_PA(19), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_DAT2", AT91C_PIN_PA(20), 0, PIO_DEFAULT, PIO_PERIPH_E}, {"SDMMC1_DAT3", AT91C_PIN_PA(21), 0, PIO_DEFAULT, PIO_PERIPH_E}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; #endif pio_configure(sdmmc_pins); pmc_sam9x5_enable_periph_clk(CONFIG_SYS_ID_SDHC); pmc_enable_periph_generated_clk(CONFIG_SYS_ID_SDHC, GCK_CSS_UPLL_CLK, ATMEL_SDHC_GCKDIV_VALUE); }
/** * usb_hid_mouse application entry. * * Initializes the system and then monitors buttons, sending the * corresponding character when one is pressed. */ int main(void) { uint8_t bm_buttons = 0; int8_t dx = 0, dy = 0; uint8_t is_changed; /* Output example information */ console_example_info("USB Device HID Mouse Example"); /* Initialize all USB power (off) */ usb_power_configure(); #ifdef NO_PUSHBUTTON printf("-- Press I J K L to move cursor\n\r"); #else /* Initialize key statuses and configure push buttons */ pio_configure(pins_joystick, ARRAY_SIZE(pins_joystick)); #endif /* HID driver initialization */ hidd_mouse_driver_initialize(&hidd_mouse_driver_descriptors); /* connect if needed */ usb_vbus_configure(); /* Infinite loop */ while (1) { if (usbd_get_state() < USBD_STATE_CONFIGURED) continue; is_changed = _buttons_monitor(&bm_buttons, &dx, &dy); if (is_changed) { uint8_t status; do { status = hidd_mouse_driver_change_points(bm_buttons, dx, dy); } while (status != USBD_STATUS_SUCCESS); } } }
void board_restore_pio_reset_state(void) { int i; /* all pins, excluding JTAG and NTRST */ struct _pin pins[] = { { PIO_GROUP_A, 0xFFFEFEFE, PIO_INPUT, PIO_PULLUP }, { PIO_GROUP_B, 0xFCFFFFFF, PIO_INPUT, PIO_PULLUP }, { PIO_GROUP_C, 0xFFFFFFFF, PIO_INPUT, PIO_PULLUP }, { PIO_GROUP_D, 0xFFFFFFFF, PIO_INPUT, PIO_PULLUP }, }; /* For low_power_mode example, power consumption results can be affected * by IOs setting. To generate power consumption numbers in datasheet, * most IOs must be disconnected from external devices just like on * VB board. Then putting IOs to reset state are OK. */ pio_configure(pins, ARRAY_SIZE(pins)); for (i = 0; i < ARRAY_SIZE(pins); i++) pio_clear(&pins[i]); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK", AT91C_PIN_PD(9), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCCDA", AT91C_PIN_PD(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA0", AT91C_PIN_PD(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA1", AT91C_PIN_PD(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA2", AT91C_PIN_PD(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA3", AT91C_PIN_PD(4), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA4", AT91C_PIN_PD(5), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA5", AT91C_PIN_PD(6), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA6", AT91C_PIN_PD(7), 0, PIO_DEFAULT, PIO_PERIPH_A}, {"MCDA7", AT91C_PIN_PD(8), 0, PIO_DEFAULT, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_HSMCI0); pio_configure(mci_pins); pmc_enable_periph_clock(AT91C_ID_HSMCI0); }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK", AT91C_PIN_PA(0), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCCDA", AT91C_PIN_PA(1), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA0", AT91C_PIN_PA(2), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA1", AT91C_PIN_PA(3), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA2", AT91C_PIN_PA(4), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA3", AT91C_PIN_PA(5), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the PIO controller */ writel((1 << AT91C_ID_PIOA), (PMC_PCER + AT91C_BASE_PMC)); pio_configure(mci_pins); /* Enable the clock */ writel((1 << AT91C_ID_MCI0), (PMC_PCER + AT91C_BASE_PMC)); /* Set of name function pointer */ sdcard_set_of_name = &sdcard_set_of_name_board; }
void at91_mci0_hw_init(void) { const struct pio_desc mci_pins[] = { {"MCCK", AT91C_PIN_PA(8), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCCDA", AT91C_PIN_PA(7), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA0", AT91C_PIN_PA(6), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA1", AT91C_PIN_PA(9), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA2", AT91C_PIN_PA(10), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCDA3", AT91C_PIN_PA(11), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; /* Configure the PIO controller */ pmc_enable_periph_clock(AT91C_ID_PIOA); pio_configure(mci_pins); /* Enable the clock */ pmc_enable_periph_clock(AT91C_ID_MCI); /* Set of name function pointer */ sdcard_set_of_name = &sdcard_set_of_name_board; }
static void Configure ( void ) { // ------- Configure the UART connected to the AVR controller ------- if ( ENABLE_DEBUG_CONSOLE ) { VERIFY( pio_configure( PIOA, PIO_PERIPH_A, PIO_PA8A_URXD | PIO_PA9A_UTXD, PIO_DEFAULT ) ); // Enable the pull-up resistor for RX0. pio_pull_up( PIOA, PIO_PA8A_URXD, ENABLE ) ; InitSerialPort( false ); SerialSyncWriteStr( "--- EmptyDue " PACKAGE_VERSION " ---" EOL ); SerialSyncWriteStr( "Welcome to the Arduino Due's programming USB serial port." EOL ); } SetUserPanicMsgFunction( &PrintPanicMsg ); // ------- Perform some assorted checks ------- assert( IsJtagTdoPullUpActive() ); // Check that the brown-out detector is active. #ifndef NDEBUG const uint32_t supcMr = SUPC->SUPC_MR; assert( ( supcMr & SUPC_MR_BODDIS ) == SUPC_MR_BODDIS_ENABLE ); assert( ( supcMr & SUPC_MR_BODRSTEN ) == SUPC_MR_BODRSTEN_ENABLE ); #endif // ------- Configure the watchdog ------- WDT->WDT_MR = WDT_MR_WDDIS; }
void at91_mci0_hw_init(void) { /* Note: For at91sam9263ek, using MCI1 instead of MCI0 as SD Card booting */ /* Configure the MCI1 pins */ const struct pio_desc mci_pins[] = { {"MCI1_CK", AT91C_PIN_PA(6), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCI1_CDA", AT91C_PIN_PA(7), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCI1_DA0", AT91C_PIN_PA(8), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCI1_DA1", AT91C_PIN_PA(9), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCI1_DA2", AT91C_PIN_PA(10), 0, PIO_PULLUP, PIO_PERIPH_A}, {"MCI1_DA3", AT91C_PIN_PA(11), 0, PIO_PULLUP, PIO_PERIPH_A}, {(char *)0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, }; pmc_enable_periph_clock(AT91C_ID_PIOA); pio_configure(mci_pins); /* Enable the clock */ pmc_enable_periph_clock(AT91C_ID_MCI1); /* Set of name function pointer */ sdcard_set_of_name = &sdcard_set_of_name_board; }