|
@@ -105,3 +105,112 @@ static struct spi_board_info ek_spi_devices[] = {
|
|
|
.chip_select = 0,
|
|
|
.max_speed_hz = 15 * 1000 * 1000,
|
|
|
.bus_num = 0,
|
|
|
+ },
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * MACB Ethernet device
|
|
|
+ */
|
|
|
+static struct macb_platform_data __initdata ek_macb_data = {
|
|
|
+ .phy_irq_pin = AT91_PIN_PA7,
|
|
|
+ .is_rmii = 1,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init ek_add_device_macb(void)
|
|
|
+{
|
|
|
+ if (ek_have_2mmc())
|
|
|
+ ek_macb_data.phy_irq_pin = AT91_PIN_PB0;
|
|
|
+
|
|
|
+ at91_add_device_eth(&ek_macb_data);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * NAND flash
|
|
|
+ */
|
|
|
+static struct mtd_partition __initdata ek_nand_partition[] = {
|
|
|
+ {
|
|
|
+ .name = "Bootstrap",
|
|
|
+ .offset = 0,
|
|
|
+ .size = 4 * SZ_1M,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "Partition 1",
|
|
|
+ .offset = MTDPART_OFS_NXTBLK,
|
|
|
+ .size = 60 * SZ_1M,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "Partition 2",
|
|
|
+ .offset = MTDPART_OFS_NXTBLK,
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* det_pin is not connected */
|
|
|
+static struct atmel_nand_data __initdata ek_nand_data = {
|
|
|
+ .ale = 21,
|
|
|
+ .cle = 22,
|
|
|
+ .rdy_pin = AT91_PIN_PC13,
|
|
|
+ .enable_pin = AT91_PIN_PC14,
|
|
|
+ .det_pin = -EINVAL,
|
|
|
+ .ecc_mode = NAND_ECC_SOFT,
|
|
|
+ .on_flash_bbt = 1,
|
|
|
+ .parts = ek_nand_partition,
|
|
|
+ .num_parts = ARRAY_SIZE(ek_nand_partition),
|
|
|
+};
|
|
|
+
|
|
|
+static struct sam9_smc_config __initdata ek_nand_smc_config = {
|
|
|
+ .ncs_read_setup = 0,
|
|
|
+ .nrd_setup = 2,
|
|
|
+ .ncs_write_setup = 0,
|
|
|
+ .nwe_setup = 2,
|
|
|
+
|
|
|
+ .ncs_read_pulse = 4,
|
|
|
+ .nrd_pulse = 4,
|
|
|
+ .ncs_write_pulse = 4,
|
|
|
+ .nwe_pulse = 4,
|
|
|
+
|
|
|
+ .read_cycle = 7,
|
|
|
+ .write_cycle = 7,
|
|
|
+
|
|
|
+ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
|
|
|
+ .tdf_cycles = 3,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init ek_add_device_nand(void)
|
|
|
+{
|
|
|
+ ek_nand_data.bus_width_16 = board_have_nand_16bit();
|
|
|
+ /* setup bus-width (8 or 16) */
|
|
|
+ if (ek_nand_data.bus_width_16)
|
|
|
+ ek_nand_smc_config.mode |= AT91_SMC_DBW_16;
|
|
|
+ else
|
|
|
+ ek_nand_smc_config.mode |= AT91_SMC_DBW_8;
|
|
|
+
|
|
|
+ /* configure chip-select 3 (NAND) */
|
|
|
+ sam9_smc_configure(0, 3, &ek_nand_smc_config);
|
|
|
+
|
|
|
+ at91_add_device_nand(&ek_nand_data);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * MCI (SD/MMC)
|
|
|
+ * wp_pin and vcc_pin are not connected
|
|
|
+ */
|
|
|
+static struct mci_platform_data __initdata ek_mmc_data = {
|
|
|
+ .slot[1] = {
|
|
|
+ .bus_width = 4,
|
|
|
+ .detect_pin = AT91_PIN_PC9,
|
|
|
+ .wp_pin = -EINVAL,
|
|
|
+ },
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+static void __init ek_add_device_mmc(void)
|
|
|
+{
|
|
|
+ if (ek_have_2mmc()) {
|
|
|
+ ek_mmc_data.slot[0].bus_width = 4;
|
|
|
+ ek_mmc_data.slot[0].detect_pin = AT91_PIN_PC2;
|
|
|
+ ek_mmc_data.slot[0].wp_pin = -1;
|