| 
					
				 | 
			
			
				@@ -150,3 +150,184 @@ static void da850_evm_setup_mac_addr(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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, 
			 |