| 
					
				 | 
			
			
				@@ -0,0 +1,120 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * TI DaVinci DM646X EVM board 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Derived from: arch/arm/mach-davinci/board-evm.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright (C) 2006 Texas Instruments. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * (C) 2007-2008, MontaVista Software, Inc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * This file is licensed under the terms of the GNU General Public License 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * version 2. This program is licensed "as is" without any warranty of any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * kind, whether express or implied. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/************************************************************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Included Files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ **************************************************************************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/kernel.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/init.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/leds.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/gpio.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/platform_device.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/i2c.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/i2c/at24.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/i2c/pcf857x.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <media/tvp514x.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <media/adv7343.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/mtd.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/nand.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/partitions.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/clk.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/export.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/mach-types.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/mach/arch.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/common.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/serial.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/platform_data/i2c-davinci.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/platform_data/mtd-davinci.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/clock.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/cdce949.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/platform_data/mtd-davinci-aemif.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "davinci.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "clock.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define NAND_BLOCK_SIZE		SZ_128K 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Note: We are setting first partition as 'bootloader' constituting UBL, U-Boot 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * and U-Boot environment this avoids dependency on any particular combination 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * of UBL, U-Boot or flashing tools etc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct mtd_partition davinci_nand_partitions[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* UBL, U-Boot with environment */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name		= "bootloader", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset		= MTDPART_OFS_APPEND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size		= 16 * NAND_BLOCK_SIZE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mask_flags	= MTD_WRITEABLE,	/* force read-only */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name		= "kernel", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset		= MTDPART_OFS_APPEND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size		= SZ_4M, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mask_flags	= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name		= "filesystem", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset		= MTDPART_OFS_APPEND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size		= MTDPART_SIZ_FULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mask_flags	= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct davinci_aemif_timing dm6467tevm_nandflash_timing = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wsetup		= 29, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.wstrobe	= 24, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.whold		= 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.rsetup		= 19, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.rstrobe	= 33, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.rhold		= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ta		= 29, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct davinci_nand_pdata davinci_nand_data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.mask_cle 		= 0x80000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.mask_ale 		= 0x40000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.parts			= davinci_nand_partitions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.nr_parts		= ARRAY_SIZE(davinci_nand_partitions), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ecc_mode		= NAND_ECC_HW, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.options		= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource davinci_nand_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start		= DM646X_ASYNC_EMIF_CS2_SPACE_BASE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end		= DM646X_ASYNC_EMIF_CS2_SPACE_BASE + SZ_32M - 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags		= IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start		= DM646X_ASYNC_EMIF_CONTROL_BASE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end		= DM646X_ASYNC_EMIF_CONTROL_BASE + SZ_4K - 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags		= IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device davinci_nand_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name			= "davinci_nand", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id			= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources		= ARRAY_SIZE(davinci_nand_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource		= davinci_nand_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev			= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &davinci_nand_data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ 
			 |