void at91_sdram_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTC, 16, 0); at91_set_a_periph(AT91_PIO_PORTC, 17, 0); at91_set_a_periph(AT91_PIO_PORTC, 18, 0); at91_set_a_periph(AT91_PIO_PORTC, 19, 0); at91_set_a_periph(AT91_PIO_PORTC, 20, 0); at91_set_a_periph(AT91_PIO_PORTC, 21, 0); at91_set_a_periph(AT91_PIO_PORTC, 22, 0); at91_set_a_periph(AT91_PIO_PORTC, 23, 0); at91_set_a_periph(AT91_PIO_PORTC, 24, 0); at91_set_a_periph(AT91_PIO_PORTC, 25, 0); at91_set_a_periph(AT91_PIO_PORTC, 26, 0); at91_set_a_periph(AT91_PIO_PORTC, 27, 0); at91_set_a_periph(AT91_PIO_PORTC, 28, 0); at91_set_a_periph(AT91_PIO_PORTC, 29, 0); at91_set_a_periph(AT91_PIO_PORTC, 30, 0); at91_set_a_periph(AT91_PIO_PORTC, 31, 0); }
static void sama5d4ek_lcd_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTA, 24, 0); /* LCDPWM */ at91_set_a_periph(AT91_PIO_PORTA, 25, 0); /* LCDDISP */ at91_set_a_periph(AT91_PIO_PORTA, 26, 0); /* LCDVSYNC */ at91_set_a_periph(AT91_PIO_PORTA, 27, 0); /* LCDHSYNC */ at91_set_a_periph(AT91_PIO_PORTA, 28, 0); /* LCDDOTCK */ at91_set_a_periph(AT91_PIO_PORTA, 29, 0); /* LCDDEN */ at91_set_a_periph(AT91_PIO_PORTA, 2, 0); /* LCDD2 */ at91_set_a_periph(AT91_PIO_PORTA, 3, 0); /* LCDD3 */ at91_set_a_periph(AT91_PIO_PORTA, 4, 0); /* LCDD4 */ at91_set_a_periph(AT91_PIO_PORTA, 5, 0); /* LCDD5 */ at91_set_a_periph(AT91_PIO_PORTA, 6, 0); /* LCDD6 */ at91_set_a_periph(AT91_PIO_PORTA, 7, 0); /* LCDD7 */ at91_set_a_periph(AT91_PIO_PORTA, 10, 0); /* LCDD10 */ at91_set_a_periph(AT91_PIO_PORTA, 11, 0); /* LCDD11 */ at91_set_a_periph(AT91_PIO_PORTA, 12, 0); /* LCDD12 */ at91_set_a_periph(AT91_PIO_PORTA, 13, 0); /* LCDD13 */ at91_set_a_periph(AT91_PIO_PORTA, 14, 0); /* LCDD14 */ at91_set_a_periph(AT91_PIO_PORTA, 15, 0); /* LCDD15 */ at91_set_a_periph(AT91_PIO_PORTA, 18, 0); /* LCDD18 */ at91_set_a_periph(AT91_PIO_PORTA, 19, 0); /* LCDD19 */ at91_set_a_periph(AT91_PIO_PORTA, 20, 0); /* LCDD20 */ at91_set_a_periph(AT91_PIO_PORTA, 21, 0); /* LCDD21 */ at91_set_a_periph(AT91_PIO_PORTA, 22, 0); /* LCDD22 */ at91_set_a_periph(AT91_PIO_PORTA, 23, 0); /* LCDD23 */ /* Enable clock */ at91_periph_clk_enable(ATMEL_ID_LCDC); }
static void sama5d4ek_nand_hw_init(void) { struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC; at91_periph_clk_enable(ATMEL_ID_SMC); /* Configure SMC CS3 for NAND */ writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) | AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(1), &smc->cs[3].setup); writel(AT91_SMC_PULSE_NWE(2) | AT91_SMC_PULSE_NCS_WR(3) | AT91_SMC_PULSE_NRD(2) | AT91_SMC_PULSE_NCS_RD(3), &smc->cs[3].pulse); writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5), &smc->cs[3].cycle); writel(AT91_SMC_TIMINGS_TCLR(2) | AT91_SMC_TIMINGS_TADL(7) | AT91_SMC_TIMINGS_TAR(2) | AT91_SMC_TIMINGS_TRR(3) | AT91_SMC_TIMINGS_TWB(7) | AT91_SMC_TIMINGS_RBNSEL(3)| AT91_SMC_TIMINGS_NFSEL(1), &smc->cs[3].timings); writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE | AT91_SMC_MODE_EXNW_DISABLE | AT91_SMC_MODE_DBW_8 | AT91_SMC_MODE_TDF_CYCLE(3), &smc->cs[3].mode); at91_set_a_periph(AT91_PIO_PORTC, 5, 0); /* D0 */ at91_set_a_periph(AT91_PIO_PORTC, 6, 0); /* D1 */ at91_set_a_periph(AT91_PIO_PORTC, 7, 0); /* D2 */ at91_set_a_periph(AT91_PIO_PORTC, 8, 0); /* D3 */ at91_set_a_periph(AT91_PIO_PORTC, 9, 0); /* D4 */ at91_set_a_periph(AT91_PIO_PORTC, 10, 0); /* D5 */ at91_set_a_periph(AT91_PIO_PORTC, 11, 0); /* D6 */ at91_set_a_periph(AT91_PIO_PORTC, 12, 0); /* D7 */ at91_set_a_periph(AT91_PIO_PORTC, 13, 0); /* RE */ at91_set_a_periph(AT91_PIO_PORTC, 14, 0); /* WE */ at91_set_a_periph(AT91_PIO_PORTC, 15, 1); /* NCS */ at91_set_a_periph(AT91_PIO_PORTC, 16, 1); /* RDY */ at91_set_a_periph(AT91_PIO_PORTC, 17, 1); /* ALE */ at91_set_a_periph(AT91_PIO_PORTC, 18, 1); /* CLE */ }
void at91_lcd_hw_init(void) { struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; at91_set_a_periph(AT91_PIO_PORTC, 24, 0); /* LCDDPWR */ at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDVSYNC */ at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDHSYNC */ at91_set_a_periph(AT91_PIO_PORTC, 28, 0); /* LCDDOTCK */ at91_set_a_periph(AT91_PIO_PORTC, 29, 0); /* LCDDEN */ at91_set_a_periph(AT91_PIO_PORTC, 30, 0); /* LCDDOTCK */ at91_set_a_periph(AT91_PIO_PORTC, 0, 0); /* LCDD0 */ at91_set_a_periph(AT91_PIO_PORTC, 1, 0); /* LCDD1 */ at91_set_a_periph(AT91_PIO_PORTC, 2, 0); /* LCDD2 */ at91_set_a_periph(AT91_PIO_PORTC, 3, 0); /* LCDD3 */ at91_set_a_periph(AT91_PIO_PORTC, 4, 0); /* LCDD4 */ at91_set_a_periph(AT91_PIO_PORTC, 5, 0); /* LCDD5 */ at91_set_a_periph(AT91_PIO_PORTC, 6, 0); /* LCDD6 */ at91_set_a_periph(AT91_PIO_PORTC, 7, 0); /* LCDD7 */ at91_set_a_periph(AT91_PIO_PORTC, 8, 0); /* LCDD8 */ at91_set_a_periph(AT91_PIO_PORTC, 9, 0); /* LCDD9 */ at91_set_a_periph(AT91_PIO_PORTC, 10, 0); /* LCDD10 */ at91_set_a_periph(AT91_PIO_PORTC, 11, 0); /* LCDD11 */ at91_set_a_periph(AT91_PIO_PORTC, 12, 0); /* LCDD12 */ at91_set_a_periph(AT91_PIO_PORTC, 13, 0); /* LCDD13 */ at91_set_a_periph(AT91_PIO_PORTC, 14, 0); /* LCDD14 */ at91_set_a_periph(AT91_PIO_PORTC, 15, 0); /* LCDD15 */ at91_set_a_periph(AT91_PIO_PORTC, 16, 0); /* LCDD16 */ at91_set_a_periph(AT91_PIO_PORTC, 17, 0); /* LCDD17 */ at91_set_a_periph(AT91_PIO_PORTC, 18, 0); /* LCDD18 */ at91_set_a_periph(AT91_PIO_PORTC, 19, 0); /* LCDD19 */ at91_set_a_periph(AT91_PIO_PORTC, 20, 0); /* LCDD20 */ at91_set_a_periph(AT91_PIO_PORTC, 21, 0); /* LCDD21 */ at91_set_a_periph(AT91_PIO_PORTC, 22, 0); /* LCDD22 */ at91_set_a_periph(AT91_PIO_PORTC, 23, 0); /* LCDD23 */ writel(1 << ATMEL_ID_LCDC, &pmc->pcer); }
void at91_lcd_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTA, 24, 0); /* LCDPWM */ at91_set_a_periph(AT91_PIO_PORTA, 25, 0); /* LCDDISP */ at91_set_a_periph(AT91_PIO_PORTA, 26, 0); /* LCDVSYNC */ at91_set_a_periph(AT91_PIO_PORTA, 27, 0); /* LCDHSYNC */ at91_set_a_periph(AT91_PIO_PORTA, 28, 0); /* LCDDOTCK */ at91_set_a_periph(AT91_PIO_PORTA, 29, 0); /* LCDDEN */ /* The lower 16-bit of LCD only available on Port A */ at91_set_a_periph(AT91_PIO_PORTA, 0, 0); /* LCDD0 */ at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* LCDD1 */ at91_set_a_periph(AT91_PIO_PORTA, 2, 0); /* LCDD2 */ at91_set_a_periph(AT91_PIO_PORTA, 3, 0); /* LCDD3 */ at91_set_a_periph(AT91_PIO_PORTA, 4, 0); /* LCDD4 */ at91_set_a_periph(AT91_PIO_PORTA, 5, 0); /* LCDD5 */ at91_set_a_periph(AT91_PIO_PORTA, 6, 0); /* LCDD6 */ at91_set_a_periph(AT91_PIO_PORTA, 7, 0); /* LCDD7 */ at91_set_a_periph(AT91_PIO_PORTA, 8, 0); /* LCDD8 */ at91_set_a_periph(AT91_PIO_PORTA, 9, 0); /* LCDD9 */ at91_set_a_periph(AT91_PIO_PORTA, 10, 0); /* LCDD10 */ at91_set_a_periph(AT91_PIO_PORTA, 11, 0); /* LCDD11 */ at91_set_a_periph(AT91_PIO_PORTA, 12, 0); /* LCDD12 */ at91_set_a_periph(AT91_PIO_PORTA, 13, 0); /* LCDD13 */ at91_set_a_periph(AT91_PIO_PORTA, 14, 0); /* LCDD14 */ at91_set_a_periph(AT91_PIO_PORTA, 15, 0); /* LCDD15 */ /* Enable clock */ at91_periph_clk_enable(ATMEL_ID_LCDC); }
static void at91sam9x5ek_lcd_hw_init(void) { if (has_lcdc()) { at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDPWM */ at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDVSYNC */ at91_set_a_periph(AT91_PIO_PORTC, 28, 0); /* LCDHSYNC */ at91_set_a_periph(AT91_PIO_PORTC, 24, 0); /* LCDDISP */ at91_set_a_periph(AT91_PIO_PORTC, 29, 0); /* LCDDEN */ at91_set_a_periph(AT91_PIO_PORTC, 30, 0); /* LCDPCK */ at91_set_a_periph(AT91_PIO_PORTC, 0, 0); /* LCDD0 */ at91_set_a_periph(AT91_PIO_PORTC, 1, 0); /* LCDD1 */ at91_set_a_periph(AT91_PIO_PORTC, 2, 0); /* LCDD2 */ at91_set_a_periph(AT91_PIO_PORTC, 3, 0); /* LCDD3 */ at91_set_a_periph(AT91_PIO_PORTC, 4, 0); /* LCDD4 */ at91_set_a_periph(AT91_PIO_PORTC, 5, 0); /* LCDD5 */ at91_set_a_periph(AT91_PIO_PORTC, 6, 0); /* LCDD6 */ at91_set_a_periph(AT91_PIO_PORTC, 7, 0); /* LCDD7 */ at91_set_a_periph(AT91_PIO_PORTC, 8, 0); /* LCDD8 */ at91_set_a_periph(AT91_PIO_PORTC, 9, 0); /* LCDD9 */ at91_set_a_periph(AT91_PIO_PORTC, 10, 0); /* LCDD10 */ at91_set_a_periph(AT91_PIO_PORTC, 11, 0); /* LCDD11 */ at91_set_a_periph(AT91_PIO_PORTC, 12, 0); /* LCDD12 */ at91_set_a_periph(AT91_PIO_PORTC, 13, 0); /* LCDD13 */ at91_set_a_periph(AT91_PIO_PORTC, 14, 0); /* LCDD14 */ at91_set_a_periph(AT91_PIO_PORTC, 15, 0); /* LCDD15 */ at91_set_a_periph(AT91_PIO_PORTC, 16, 0); /* LCDD16 */ at91_set_a_periph(AT91_PIO_PORTC, 17, 0); /* LCDD17 */ at91_set_a_periph(AT91_PIO_PORTC, 18, 0); /* LCDD18 */ at91_set_a_periph(AT91_PIO_PORTC, 19, 0); /* LCDD19 */ at91_set_a_periph(AT91_PIO_PORTC, 20, 0); /* LCDD20 */ at91_set_a_periph(AT91_PIO_PORTC, 21, 0); /* LCDD21 */ at91_set_a_periph(AT91_PIO_PORTC, 22, 0); /* LCDD22 */ at91_set_a_periph(AT91_PIO_PORTC, 23, 0); /* LCDD23 */ at91_periph_clk_enable(ATMEL_ID_LCDC); } }
void at91_seriald_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTA, 30, PUP); /* DRXD */ at91_set_a_periph(AT91_PIO_PORTA, 31, 1); /* DTXD */ /* writing SYS to PCER has no effect on AT91RM9200 */ }
static void board_lcd_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTC, 28, 0); /* LCDPWM */ at91_set_a_periph(AT91_PIO_PORTC, 29, 0); /* LCDDISP */ at91_set_a_periph(AT91_PIO_PORTC, 30, 0); /* LCDVSYNC */ at91_set_a_periph(AT91_PIO_PORTC, 31, 0); /* LCDHSYNC */ at91_set_a_periph(AT91_PIO_PORTD, 0, 0); /* LCDPCK */ at91_set_a_periph(AT91_PIO_PORTD, 1, 0); /* LCDDEN */ /* LCDDAT0 */ /* LCDDAT1 */ at91_set_a_periph(AT91_PIO_PORTC, 10, 0); /* LCDDAT2 */ at91_set_a_periph(AT91_PIO_PORTC, 11, 0); /* LCDDAT3 */ at91_set_a_periph(AT91_PIO_PORTC, 12, 0); /* LCDDAT4 */ at91_set_a_periph(AT91_PIO_PORTC, 13, 0); /* LCDDAT5 */ at91_set_a_periph(AT91_PIO_PORTC, 14, 0); /* LCDDAT6 */ at91_set_a_periph(AT91_PIO_PORTC, 15, 0); /* LCDDAT7 */ /* LCDDAT8 */ /* LCDDAT9 */ at91_set_a_periph(AT91_PIO_PORTC, 16, 0); /* LCDDAT10 */ at91_set_a_periph(AT91_PIO_PORTC, 17, 0); /* LCDDAT11 */ at91_set_a_periph(AT91_PIO_PORTC, 18, 0); /* LCDDAT12 */ at91_set_a_periph(AT91_PIO_PORTC, 19, 0); /* LCDDAT13 */ at91_set_a_periph(AT91_PIO_PORTC, 20, 0); /* LCDDAT14 */ at91_set_a_periph(AT91_PIO_PORTC, 21, 0); /* LCDDAT15 */ /* LCDD16 */ /* LCDD17 */ at91_set_a_periph(AT91_PIO_PORTC, 22, 0); /* LCDDAT18 */ at91_set_a_periph(AT91_PIO_PORTC, 23, 0); /* LCDDAT19 */ at91_set_a_periph(AT91_PIO_PORTC, 24, 0); /* LCDDAT20 */ at91_set_a_periph(AT91_PIO_PORTC, 25, 0); /* LCDDAT21 */ at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDDAT22 */ at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDDAT23 */ at91_periph_clk_enable(ATMEL_ID_LCDC); }
static void board_sdhci0_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTA, 0, 0); /* SDMMC0_CK */ at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* SDMMC0_CMD */ at91_set_a_periph(AT91_PIO_PORTA, 2, 0); /* SDMMC0_DAT0 */ at91_set_a_periph(AT91_PIO_PORTA, 3, 0); /* SDMMC0_DAT1 */ at91_set_a_periph(AT91_PIO_PORTA, 4, 0); /* SDMMC0_DAT2 */ at91_set_a_periph(AT91_PIO_PORTA, 5, 0); /* SDMMC0_DAT3 */ at91_set_a_periph(AT91_PIO_PORTA, 6, 0); /* SDMMC0_DAT4 */ at91_set_a_periph(AT91_PIO_PORTA, 7, 0); /* SDMMC0_DAT5 */ at91_set_a_periph(AT91_PIO_PORTA, 8, 0); /* SDMMC0_DAT6 */ at91_set_a_periph(AT91_PIO_PORTA, 9, 0); /* SDMMC0_DAT7 */ at91_set_a_periph(AT91_PIO_PORTA, 10, 0); /* SDMMC0_RSTN */ at91_set_a_periph(AT91_PIO_PORTA, 11, 0); /* SDMMC0_VDDSEL */ at91_periph_clk_enable(ATMEL_ID_SDHCI0); atmel_enable_periph_generated_clk(ATMEL_ID_SDHCI0, GCK_CSS_UPLL_CLK, AT91_SDHCI0_GCKDIV_RATIO); }
void at91_serial2_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTD, 2, 1); /* TXD2 */ at91_set_a_periph(AT91_PIO_PORTD, 3, PUP); /* RXD2 */ at91_periph_clk_enable(ATMEL_ID_USART2); }
void at91_seriald_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTC, 30, PUP); /* DRXD */ at91_set_a_periph(AT91_PIO_PORTC, 31, 1); /* DTXD */ at91_periph_clk_enable(ATMEL_ID_SYS); }
void at91_serial1_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTD, 0, 1); /* TXD1 */ at91_set_a_periph(AT91_PIO_PORTD, 1, PUP); /* RXD1 */ at91_periph_clk_enable(ATMEL_ID_USART1); }
void at91_serial0_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTA, 26, 1); /* TXD0 */ at91_set_a_periph(AT91_PIO_PORTA, 27, PUP); /* RXD0 */ at91_periph_clk_enable(ATMEL_ID_USART0); }
void at91_mci_hw_init(void) { at91_periph_clk_enable(ATMEL_ID_MCI1); at91_set_a_periph(AT91_PIO_PORTA, 6, PUP); /* MCI1_CK */ #if defined(CONFIG_ATMEL_MCI_PORTB) at91_set_a_periph(AT91_PIO_PORTA, 21, PUP); /* MCI1_CDB */ at91_set_a_periph(AT91_PIO_PORTA, 22, PUP); /* MCI1_DB0 */ at91_set_a_periph(AT91_PIO_PORTA, 23, PUP); /* MCI1_DB1 */ at91_set_a_periph(AT91_PIO_PORTA, 24, PUP); /* MCI1_DB2 */ at91_set_a_periph(AT91_PIO_PORTA, 25, PUP); /* MCI1_DB3 */ #else at91_set_a_periph(AT91_PIO_PORTA, 7, PUP); /* MCI1_CDA */ at91_set_a_periph(AT91_PIO_PORTA, 8, PUP); /* MCI1_DA0 */ at91_set_a_periph(AT91_PIO_PORTA, 9, PUP); /* MCI1_DA1 */ at91_set_a_periph(AT91_PIO_PORTA, 10, PUP); /* MCI1_DA2 */ at91_set_a_periph(AT91_PIO_PORTA, 11, PUP); /* MCI1_DA3 */ #endif }
void lcd_enable(void) { if (has_lcdc()) at91_set_a_periph(AT91_PIO_PORTC, 29, 1); /* power up */ }
void at91_macb_hw_init(void) { at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC; struct at91_rstc *rstc = (struct at91_rstc *)ATMEL_BASE_RSTC; unsigned long erstl; erstl = readl(&rstc->mr) & AT91_RSTC_MR_ERSTL_MASK; /* Need to reset PHY -> 500ms reset */ writel(AT91_RSTC_KEY | AT91_RSTC_MR_ERSTL(13) | AT91_RSTC_MR_URSTEN, &rstc->mr); writel(AT91_RSTC_KEY | AT91_RSTC_CR_EXTRST, &rstc->cr); /* Wait for end hardware reset */ while (!(readl(&rstc->sr) & AT91_RSTC_SR_NRSTL)) ; /* Restore NRST value */ writel(AT91_RSTC_KEY | erstl | AT91_RSTC_MR_URSTEN, &rstc->mr); if (has_emac0()) { /* Enable EMAC0 clock */ writel(1 << ATMEL_ID_EMAC0, &pmc->pcer); /* EMAC0 pins setup */ at91_set_a_periph(AT91_PIO_PORTB, 4, 0); /* ETXCK */ at91_set_a_periph(AT91_PIO_PORTB, 3, 0); /* ERXDV */ at91_set_a_periph(AT91_PIO_PORTB, 0, 0); /* ERX0 */ at91_set_a_periph(AT91_PIO_PORTB, 1, 0); /* ERX1 */ at91_set_a_periph(AT91_PIO_PORTB, 2, 0); /* ERXER */ at91_set_a_periph(AT91_PIO_PORTB, 7, 0); /* ETXEN */ at91_set_a_periph(AT91_PIO_PORTB, 9, 0); /* ETX0 */ at91_set_a_periph(AT91_PIO_PORTB, 10, 0); /* ETX1 */ at91_set_a_periph(AT91_PIO_PORTB, 5, 0); /* EMDIO */ at91_set_a_periph(AT91_PIO_PORTB, 6, 0); /* EMDC */ } if (has_emac1()) { /* Enable EMAC1 clock */ writel(1 << ATMEL_ID_EMAC1, &pmc->pcer); /* EMAC1 pins setup */ at91_set_b_periph(AT91_PIO_PORTC, 29, 0); /* ETXCK */ at91_set_b_periph(AT91_PIO_PORTC, 28, 0); /* ECRSDV */ at91_set_b_periph(AT91_PIO_PORTC, 20, 0); /* ERXO */ at91_set_b_periph(AT91_PIO_PORTC, 21, 0); /* ERX1 */ at91_set_b_periph(AT91_PIO_PORTC, 16, 0); /* ERXER */ at91_set_b_periph(AT91_PIO_PORTC, 27, 0); /* ETXEN */ at91_set_b_periph(AT91_PIO_PORTC, 18, 0); /* ETX0 */ at91_set_b_periph(AT91_PIO_PORTC, 19, 0); /* ETX1 */ at91_set_b_periph(AT91_PIO_PORTC, 31, 0); /* EMDIO */ at91_set_b_periph(AT91_PIO_PORTC, 30, 0); /* EMDC */ } #ifndef CONFIG_RMII /* Only emac0 support MII */ if (has_emac0()) { at91_set_a_periph(AT91_PIO_PORTB, 16, 0); /* ECRS */ at91_set_a_periph(AT91_PIO_PORTB, 17, 0); /* ECOL */ at91_set_a_periph(AT91_PIO_PORTB, 13, 0); /* ERX2 */ at91_set_a_periph(AT91_PIO_PORTB, 14, 0); /* ERX3 */ at91_set_a_periph(AT91_PIO_PORTB, 15, 0); /* ERXCK */ at91_set_a_periph(AT91_PIO_PORTB, 11, 0); /* ETX2 */ at91_set_a_periph(AT91_PIO_PORTB, 12, 0); /* ETX3 */ at91_set_a_periph(AT91_PIO_PORTB, 8, 0); /* ETXER */ } #endif }
void lcd_disable(void) { if (has_lcdc()) at91_set_a_periph(AT91_PIO_PORTC, 29, 0); /* power down */ }
static void sama5d3xek_nor_hw_init(void) { struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC; at91_periph_clk_enable(ATMEL_ID_SMC); /* Configure SMC CS0 for NOR flash */ writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) | AT91_SMC_SETUP_NRD(2) | AT91_SMC_SETUP_NCS_RD(0), &smc->cs[0].setup); writel(AT91_SMC_PULSE_NWE(10) | AT91_SMC_PULSE_NCS_WR(11) | AT91_SMC_PULSE_NRD(10) | AT91_SMC_PULSE_NCS_RD(11), &smc->cs[0].pulse); writel(AT91_SMC_CYCLE_NWE(11) | AT91_SMC_CYCLE_NRD(14), &smc->cs[0].cycle); writel(AT91_SMC_TIMINGS_TCLR(0) | AT91_SMC_TIMINGS_TADL(0) | AT91_SMC_TIMINGS_TAR(0) | AT91_SMC_TIMINGS_TRR(0) | AT91_SMC_TIMINGS_TWB(0) | AT91_SMC_TIMINGS_RBNSEL(0)| AT91_SMC_TIMINGS_NFSEL(0), &smc->cs[0].timings); writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE | AT91_SMC_MODE_EXNW_DISABLE | AT91_SMC_MODE_DBW_16 | AT91_SMC_MODE_TDF_CYCLE(1), &smc->cs[0].mode); /* Address pin (A1 ~ A23) configuration */ at91_set_a_periph(AT91_PIO_PORTE, 1, 0); at91_set_a_periph(AT91_PIO_PORTE, 2, 0); at91_set_a_periph(AT91_PIO_PORTE, 3, 0); at91_set_a_periph(AT91_PIO_PORTE, 4, 0); at91_set_a_periph(AT91_PIO_PORTE, 5, 0); at91_set_a_periph(AT91_PIO_PORTE, 6, 0); at91_set_a_periph(AT91_PIO_PORTE, 7, 0); at91_set_a_periph(AT91_PIO_PORTE, 8, 0); at91_set_a_periph(AT91_PIO_PORTE, 9, 0); at91_set_a_periph(AT91_PIO_PORTE, 10, 0); at91_set_a_periph(AT91_PIO_PORTE, 11, 0); at91_set_a_periph(AT91_PIO_PORTE, 12, 0); at91_set_a_periph(AT91_PIO_PORTE, 13, 0); at91_set_a_periph(AT91_PIO_PORTE, 14, 0); at91_set_a_periph(AT91_PIO_PORTE, 15, 0); at91_set_a_periph(AT91_PIO_PORTE, 16, 0); at91_set_a_periph(AT91_PIO_PORTE, 17, 0); at91_set_a_periph(AT91_PIO_PORTE, 18, 0); at91_set_a_periph(AT91_PIO_PORTE, 19, 0); at91_set_a_periph(AT91_PIO_PORTE, 20, 0); at91_set_a_periph(AT91_PIO_PORTE, 21, 0); at91_set_a_periph(AT91_PIO_PORTE, 22, 0); at91_set_a_periph(AT91_PIO_PORTE, 23, 0); /* CS0 pin configuration */ at91_set_a_periph(AT91_PIO_PORTE, 26, 0); }
static void at91sam9x5ek_nand_hw_init(void) { struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC; struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX; unsigned long csa; /* Enable CS3 */ csa = readl(&matrix->ebicsa); csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA; /* NAND flash on D16 */ csa |= AT91_MATRIX_NFD0_ON_D16; /* Configure IO drive */ csa &= ~AT91_MATRIX_EBI_EBI_IOSR_NORMAL; writel(csa, &matrix->ebicsa); /* Configure SMC CS3 for NAND/SmartMedia */ writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) | AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0), &smc->cs[3].setup); writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) | AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6), &smc->cs[3].pulse); writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6), &smc->cs[3].cycle); writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE | AT91_SMC_MODE_EXNW_DISABLE | #ifdef CONFIG_SYS_NAND_DBW_16 AT91_SMC_MODE_DBW_16 | #else /* CONFIG_SYS_NAND_DBW_8 */ AT91_SMC_MODE_DBW_8 | #endif AT91_SMC_MODE_TDF_CYCLE(1), &smc->cs[3].mode); at91_periph_clk_enable(ATMEL_ID_PIOCD); /* Configure RDY/BSY */ at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1); /* Enable NandFlash */ at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); at91_set_a_periph(AT91_PIO_PORTD, 0, 1); /* NAND OE */ at91_set_a_periph(AT91_PIO_PORTD, 1, 1); /* NAND WE */ at91_set_a_periph(AT91_PIO_PORTD, 2, 1); /* NAND ALE */ at91_set_a_periph(AT91_PIO_PORTD, 3, 1); /* NAND CLE */ at91_set_a_periph(AT91_PIO_PORTD, 6, 1); at91_set_a_periph(AT91_PIO_PORTD, 7, 1); at91_set_a_periph(AT91_PIO_PORTD, 8, 1); at91_set_a_periph(AT91_PIO_PORTD, 9, 1); at91_set_a_periph(AT91_PIO_PORTD, 10, 1); at91_set_a_periph(AT91_PIO_PORTD, 11, 1); at91_set_a_periph(AT91_PIO_PORTD, 12, 1); at91_set_a_periph(AT91_PIO_PORTD, 13, 1); }
void at91_seriald_hw_init(void) { at91_set_a_periph(AT91_PIO_PORTB, 12, 0); /* DRXD */ at91_set_a_periph(AT91_PIO_PORTB, 13, 1); /* DTXD */ at91_periph_clk_enable(ATMEL_ID_SYS); }