|
@@ -151,3 +151,110 @@ static struct mci_platform_data __initdata mci1_data = {
|
|
|
|
|
|
|
|
|
/*
|
|
|
+ * MACB Ethernet device
|
|
|
+ */
|
|
|
+static struct macb_platform_data __initdata ek_macb_data = {
|
|
|
+ .phy_irq_pin = AT91_PIN_PE31,
|
|
|
+ .is_rmii = 1,
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * NAND flash
|
|
|
+ */
|
|
|
+static struct mtd_partition __initdata ek_nand_partition[] = {
|
|
|
+ {
|
|
|
+ .name = "Partition 1",
|
|
|
+ .offset = 0,
|
|
|
+ .size = SZ_64M,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .name = "Partition 2",
|
|
|
+ .offset = MTDPART_OFS_NXTBLK,
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct atmel_nand_data __initdata ek_nand_data = {
|
|
|
+ .ale = 21,
|
|
|
+ .cle = 22,
|
|
|
+ .det_pin = -EINVAL,
|
|
|
+ .rdy_pin = AT91_PIN_PA22,
|
|
|
+ .enable_pin = AT91_PIN_PD15,
|
|
|
+ .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 = 1,
|
|
|
+ .ncs_write_setup = 0,
|
|
|
+ .nwe_setup = 1,
|
|
|
+
|
|
|
+ .ncs_read_pulse = 3,
|
|
|
+ .nrd_pulse = 3,
|
|
|
+ .ncs_write_pulse = 3,
|
|
|
+ .nwe_pulse = 3,
|
|
|
+
|
|
|
+ .read_cycle = 5,
|
|
|
+ .write_cycle = 5,
|
|
|
+
|
|
|
+ .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE,
|
|
|
+ .tdf_cycles = 2,
|
|
|
+};
|
|
|
+
|
|
|
+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);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * I2C devices
|
|
|
+ */
|
|
|
+static struct at24_platform_data at24c512 = {
|
|
|
+ .byte_len = SZ_512K / 8,
|
|
|
+ .page_size = 128,
|
|
|
+ .flags = AT24_FLAG_ADDR16,
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+static struct i2c_board_info __initdata ek_i2c_devices[] = {
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("24c512", 0x50),
|
|
|
+ .platform_data = &at24c512,
|
|
|
+ },
|
|
|
+ /* more devices can be added using expansion connectors */
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * LCD Controller
|
|
|
+ */
|
|
|
+#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
|
|
|
+static struct fb_videomode at91_tft_vga_modes[] = {
|
|
|
+ {
|
|
|
+ .name = "TX09D50VM1CCA @ 60",
|
|
|
+ .refresh = 60,
|
|
|
+ .xres = 240, .yres = 320,
|
|
|
+ .pixclock = KHZ2PICOS(4965),
|
|
|
+
|
|
|
+ .left_margin = 1, .right_margin = 33,
|
|
|
+ .upper_margin = 1, .lower_margin = 0,
|
|
|
+ .hsync_len = 5, .vsync_len = 1,
|
|
|
+
|
|
|
+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
|
|
|
+ .vmode = FB_VMODE_NONINTERLACED,
|
|
|
+ },
|
|
|
+};
|