|
@@ -150,3 +150,184 @@ static void da850_evm_setup_mac_addr(void)
|
|
}
|
|
}
|
|
#else
|
|
#else
|
|
static void da850_evm_setup_mac_addr(void) { }
|
|
static void da850_evm_setup_mac_addr(void) { }
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+static struct mtd_partition da850_evm_norflash_partition[] = {
|
|
|
|
+ {
|
|
|
|
+ .name = "bootloaders + env",
|
|
|
|
+ .offset = 0,
|
|
|
|
+ .size = SZ_512K,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "kernel",
|
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
|
+ .size = SZ_2M,
|
|
|
|
+ .mask_flags = 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "filesystem",
|
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
|
+ .mask_flags = 0,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct physmap_flash_data da850_evm_norflash_data = {
|
|
|
|
+ .width = 2,
|
|
|
|
+ .parts = da850_evm_norflash_partition,
|
|
|
|
+ .nr_parts = ARRAY_SIZE(da850_evm_norflash_partition),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource da850_evm_norflash_resource[] = {
|
|
|
|
+ {
|
|
|
|
+ .start = DA8XX_AEMIF_CS2_BASE,
|
|
|
|
+ .end = DA8XX_AEMIF_CS2_BASE + SZ_32M - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device da850_evm_norflash_device = {
|
|
|
|
+ .name = "physmap-flash",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &da850_evm_norflash_data,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = 1,
|
|
|
|
+ .resource = da850_evm_norflash_resource,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct davinci_pm_config da850_pm_pdata = {
|
|
|
|
+ .sleepcount = 128,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device da850_pm_device = {
|
|
|
|
+ .name = "pm-davinci",
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &da850_pm_pdata,
|
|
|
|
+ },
|
|
|
|
+ .id = -1,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* DA850/OMAP-L138 EVM includes a 512 MByte large-page NAND flash
|
|
|
|
+ * (128K blocks). It may be used instead of the (default) SPI flash
|
|
|
|
+ * to boot, using TI's tools to install the secondary boot loader
|
|
|
|
+ * (UBL) and U-Boot.
|
|
|
|
+ */
|
|
|
|
+static struct mtd_partition da850_evm_nandflash_partition[] = {
|
|
|
|
+ {
|
|
|
|
+ .name = "u-boot env",
|
|
|
|
+ .offset = 0,
|
|
|
|
+ .size = SZ_128K,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "UBL",
|
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
|
+ .size = SZ_128K,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "u-boot",
|
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
|
+ .size = 4 * SZ_128K,
|
|
|
|
+ .mask_flags = MTD_WRITEABLE,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "kernel",
|
|
|
|
+ .offset = 0x200000,
|
|
|
|
+ .size = SZ_2M,
|
|
|
|
+ .mask_flags = 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "filesystem",
|
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
|
+ .mask_flags = 0,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct davinci_aemif_timing da850_evm_nandflash_timing = {
|
|
|
|
+ .wsetup = 24,
|
|
|
|
+ .wstrobe = 21,
|
|
|
|
+ .whold = 14,
|
|
|
|
+ .rsetup = 19,
|
|
|
|
+ .rstrobe = 50,
|
|
|
|
+ .rhold = 0,
|
|
|
|
+ .ta = 20,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct davinci_nand_pdata da850_evm_nandflash_data = {
|
|
|
|
+ .parts = da850_evm_nandflash_partition,
|
|
|
|
+ .nr_parts = ARRAY_SIZE(da850_evm_nandflash_partition),
|
|
|
|
+ .ecc_mode = NAND_ECC_HW,
|
|
|
|
+ .ecc_bits = 4,
|
|
|
|
+ .bbt_options = NAND_BBT_USE_FLASH,
|
|
|
|
+ .timing = &da850_evm_nandflash_timing,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource da850_evm_nandflash_resource[] = {
|
|
|
|
+ {
|
|
|
|
+ .start = DA8XX_AEMIF_CS3_BASE,
|
|
|
|
+ .end = DA8XX_AEMIF_CS3_BASE + SZ_512K + 2 * SZ_1K - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .start = DA8XX_AEMIF_CTL_BASE,
|
|
|
|
+ .end = DA8XX_AEMIF_CTL_BASE + SZ_32K - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device da850_evm_nandflash_device = {
|
|
|
|
+ .name = "davinci_nand",
|
|
|
|
+ .id = 1,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &da850_evm_nandflash_data,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(da850_evm_nandflash_resource),
|
|
|
|
+ .resource = da850_evm_nandflash_resource,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device *da850_evm_devices[] = {
|
|
|
|
+ &da850_evm_nandflash_device,
|
|
|
|
+ &da850_evm_norflash_device,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define DA8XX_AEMIF_CE2CFG_OFFSET 0x10
|
|
|
|
+#define DA8XX_AEMIF_ASIZE_16BIT 0x1
|
|
|
|
+
|
|
|
|
+static void __init da850_evm_init_nor(void)
|
|
|
|
+{
|
|
|
|
+ void __iomem *aemif_addr;
|
|
|
|
+
|
|
|
|
+ aemif_addr = ioremap(DA8XX_AEMIF_CTL_BASE, SZ_32K);
|
|
|
|
+
|
|
|
|
+ /* Configure data bus width of CS2 to 16 bit */
|
|
|
|
+ writel(readl(aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET) |
|
|
|
|
+ DA8XX_AEMIF_ASIZE_16BIT,
|
|
|
|
+ aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET);
|
|
|
|
+
|
|
|
|
+ iounmap(aemif_addr);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static const short da850_evm_nand_pins[] = {
|
|
|
|
+ DA850_EMA_D_0, DA850_EMA_D_1, DA850_EMA_D_2, DA850_EMA_D_3,
|
|
|
|
+ DA850_EMA_D_4, DA850_EMA_D_5, DA850_EMA_D_6, DA850_EMA_D_7,
|
|
|
|
+ DA850_EMA_A_1, DA850_EMA_A_2, DA850_NEMA_CS_3, DA850_NEMA_CS_4,
|
|
|
|
+ DA850_NEMA_WE, DA850_NEMA_OE,
|
|
|
|
+ -1
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const short da850_evm_nor_pins[] = {
|
|
|
|
+ DA850_EMA_BA_1, DA850_EMA_CLK, DA850_EMA_WAIT_1, DA850_NEMA_CS_2,
|
|
|
|
+ DA850_NEMA_WE, DA850_NEMA_OE, DA850_EMA_D_0, DA850_EMA_D_1,
|
|
|
|
+ DA850_EMA_D_2, DA850_EMA_D_3, DA850_EMA_D_4, DA850_EMA_D_5,
|
|
|
|
+ DA850_EMA_D_6, DA850_EMA_D_7, DA850_EMA_D_8, DA850_EMA_D_9,
|
|
|
|
+ DA850_EMA_D_10, DA850_EMA_D_11, DA850_EMA_D_12, DA850_EMA_D_13,
|
|
|
|
+ DA850_EMA_D_14, DA850_EMA_D_15, DA850_EMA_A_0, DA850_EMA_A_1,
|
|
|
|
+ DA850_EMA_A_2, DA850_EMA_A_3, DA850_EMA_A_4, DA850_EMA_A_5,
|
|
|
|
+ DA850_EMA_A_6, DA850_EMA_A_7, DA850_EMA_A_8, DA850_EMA_A_9,
|
|
|
|
+ DA850_EMA_A_10, DA850_EMA_A_11, DA850_EMA_A_12, DA850_EMA_A_13,
|
|
|
|
+ DA850_EMA_A_14, DA850_EMA_A_15, DA850_EMA_A_16, DA850_EMA_A_17,
|
|
|
|
+ DA850_EMA_A_18, DA850_EMA_A_19, DA850_EMA_A_20, DA850_EMA_A_21,
|