static void __init at91sam9x5_register_clocks(void) { int i; for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) clk_register(periph_clocks[i]); clkdev_add_table(periph_clocks_lookups, ARRAY_SIZE(periph_clocks_lookups)); clkdev_add_table(usart_clocks_lookups, ARRAY_SIZE(usart_clocks_lookups)); if (cpu_is_at91sam9g25() || cpu_is_at91sam9x25()) clk_register(&usart3_clk); if (cpu_is_at91sam9g25() || cpu_is_at91sam9x25() || cpu_is_at91sam9g35() || cpu_is_at91sam9x35()) clk_register(&macb0_clk); if (cpu_is_at91sam9g15() || cpu_is_at91sam9g35() || cpu_is_at91sam9x35()) clk_register(&lcdc_clk); if (cpu_is_at91sam9g25()) clk_register(&isi_clk); if (cpu_is_at91sam9x25()) clk_register(&macb1_clk); if (cpu_is_at91sam9x25() || cpu_is_at91sam9x35()) { clk_register(&can0_clk); clk_register(&can1_clk); } clk_register(&pck0); clk_register(&pck1); }
void __init at91_add_device_lcdc(struct atmel_lcdfb_platform_data *data) { BUG_ON(!data); if (cpu_is_at91sam9g25() || cpu_is_at91sam9x25()) { pr_warn("AT91: no lcd on at91sam9g25 or at91sam9x25\n"); return; } at91_set_A_periph(AT91_PIN_PC26, 0); /* LCDPWM */ at91_set_A_periph(AT91_PIN_PC27, 0); /* LCDVSYNC */ at91_set_A_periph(AT91_PIN_PC28, 0); /* LCDHSYNC */ at91_set_A_periph(AT91_PIN_PC24, 0); /* LCDDISP */ at91_set_A_periph(AT91_PIN_PC29, 0); /* LCDDEN */ at91_set_A_periph(AT91_PIN_PC30, 0); /* LCDPCK */ at91_set_A_periph(AT91_PIN_PC0, 0); /* LCDD0 */ at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDD1 */ at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDD2 */ at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDD3 */ at91_set_A_periph(AT91_PIN_PC4, 0); /* LCDD4 */ at91_set_A_periph(AT91_PIN_PC5, 0); /* LCDD5 */ at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDD6 */ at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDD7 */ at91_set_A_periph(AT91_PIN_PC8, 0); /* LCDD8 */ at91_set_A_periph(AT91_PIN_PC9, 0); /* LCDD9 */ at91_set_A_periph(AT91_PIN_PC10, 0); /* LCDD10 */ at91_set_A_periph(AT91_PIN_PC11, 0); /* LCDD11 */ at91_set_A_periph(AT91_PIN_PC12, 0); /* LCDD12 */ at91_set_A_periph(AT91_PIN_PC13, 0); /* LCDD13 */ at91_set_A_periph(AT91_PIN_PC14, 0); /* LCDD14 */ at91_set_A_periph(AT91_PIN_PC15, 0); /* LCDD15 */ at91_set_A_periph(AT91_PIN_PC16, 0); /* LCDD16 */ at91_set_A_periph(AT91_PIN_PC17, 0); /* LCDD17 */ at91_set_A_periph(AT91_PIN_PC18, 0); /* LCDD18 */ at91_set_A_periph(AT91_PIN_PC19, 0); /* LCDD19 */ at91_set_A_periph(AT91_PIN_PC20, 0); /* LCDD20 */ at91_set_A_periph(AT91_PIN_PC21, 0); /* LCDD21 */ at91_set_A_periph(AT91_PIN_PC22, 0); /* LCDD22 */ at91_set_A_periph(AT91_PIN_PC23, 0); /* LCDD23 */ add_generic_device("atmel_hlcdfb", DEVICE_ID_SINGLE, NULL, AT91SAM9X5_BASE_LCDC, SZ_4K, IORESOURCE_MEM, data); }
unsigned int has_emac1() { return cpu_is_at91sam9x25(); }
void at91_add_device_eth(int id, struct macb_platform_data *data) { resource_size_t start; if (!data) return; if (cpu_is_at91sam9g15()) return; if (id && !cpu_is_at91sam9x25()) return; switch (id) { case 0: start = AT91SAM9X5_BASE_EMAC0; /* Pins used for MII and RMII */ at91_set_A_periph(AT91_PIN_PB4, 0); /* ETXCK_EREFCK */ at91_set_A_periph(AT91_PIN_PB3, 0); /* ERXDV */ at91_set_A_periph(AT91_PIN_PB0, 0); /* ERX0 */ at91_set_A_periph(AT91_PIN_PB1, 0); /* ERX1 */ at91_set_A_periph(AT91_PIN_PB2, 0); /* ERXER */ at91_set_A_periph(AT91_PIN_PB7, 0); /* ETXEN */ at91_set_A_periph(AT91_PIN_PB9, 0); /* ETX0 */ at91_set_A_periph(AT91_PIN_PB10, 0); /* ETX1 */ at91_set_A_periph(AT91_PIN_PB5, 0); /* EMDIO */ at91_set_A_periph(AT91_PIN_PB6, 0); /* EMDC */ if (data->phy_interface != PHY_INTERFACE_MODE_RMII) { at91_set_A_periph(AT91_PIN_PB16, 0); /* ECRS */ at91_set_A_periph(AT91_PIN_PB17, 0); /* ECOL */ at91_set_A_periph(AT91_PIN_PB13, 0); /* ERX2 */ at91_set_A_periph(AT91_PIN_PB14, 0); /* ERX3 */ at91_set_A_periph(AT91_PIN_PB15, 0); /* ERXCK */ at91_set_A_periph(AT91_PIN_PB11, 0); /* ETX2 */ at91_set_A_periph(AT91_PIN_PB12, 0); /* ETX3 */ at91_set_A_periph(AT91_PIN_PB8, 0); /* ETXER */ } break; case 1: start = AT91SAM9X5_BASE_EMAC1; if (data->phy_interface != PHY_INTERFACE_MODE_RMII) pr_warn("AT91: Only RMII available on interface macb%d.\n", id); /* Pins used for RMII */ at91_set_B_periph(AT91_PIN_PC29, 0); /* ETXCK_EREFCK */ at91_set_B_periph(AT91_PIN_PC28, 0); /* ECRSDV */ at91_set_B_periph(AT91_PIN_PC20, 0); /* ERX0 */ at91_set_B_periph(AT91_PIN_PC21, 0); /* ERX1 */ at91_set_B_periph(AT91_PIN_PC16, 0); /* ERXER */ at91_set_B_periph(AT91_PIN_PC27, 0); /* ETXEN */ at91_set_B_periph(AT91_PIN_PC18, 0); /* ETX0 */ at91_set_B_periph(AT91_PIN_PC19, 0); /* ETX1 */ at91_set_B_periph(AT91_PIN_PC31, 0); /* EMDIO */ at91_set_B_periph(AT91_PIN_PC30, 0); /* EMDC */ break; default: return; } add_generic_device("macb", id, NULL, start, SZ_16K, IORESOURCE_MEM, data); }