| 
					
				 | 
			
			
				@@ -0,0 +1,188 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Board Info File for the BlackStamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright 2004-2008 Analog Devices Inc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *                2008 Benjamin Matthews <bmat@lle.rochester.edu> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *                2005 National ICT Australia (NICTA) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *                      Aidan Williams <aidan@nicta.com.au> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * More info about the BlackStamp at: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 	http://blackfin.uclinux.org/gf/project/blackstamp/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Licensed under the GPL-2 or later. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/device.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/platform_device.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/mtd.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/partitions.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/mtd/physmap.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/spi/spi.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/spi/flash.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/irq.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/i2c.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/dma.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/bfin5xx_spi.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/portmux.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/dpmc.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Name the Board for the /proc/cpuinfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const char bfin_board_name[] = "BlackStamp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device rtc_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name = "rtc-bfin", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id   = -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  Driver needs to know address, irq and flag pin. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/smc91x.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct smc91x_platdata smc91x_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.leda = RPC_LED_100_10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.ledb = RPC_LED_TX_RX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource smc91x_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name = "smc91x-regs", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start = 0x20300300, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end = 0x20300300 + 16, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags = IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start = IRQ_PF3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end = IRQ_PF3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device smc91x_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name = "smc91x", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources = ARRAY_SIZE(smc91x_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource = smc91x_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev	= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data	= &smc91x_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct mtd_partition bfin_spi_flash_partitions[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name = "bootloader(spi)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size = 0x00040000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mask_flags = MTD_CAP_ROM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name = "linux kernel(spi)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size = 0x180000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset = MTDPART_OFS_APPEND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.name = "file system(spi)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.size = MTDPART_SIZ_FULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.offset = MTDPART_OFS_APPEND, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct flash_platform_data bfin_spi_flash_data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name = "m25p80", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.parts = bfin_spi_flash_partitions, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type = "m25p64", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* SPI flash chip (m25p64) */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct bfin5xx_spi_chip spi_flash_chip_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_dma = 0,         /* use dma transfer with this chip*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct bfin5xx_spi_chip mmc_spi_chip_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_dma = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct spi_board_info bfin_spi_board_info[] __initdata = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* the modalias must be the same as spi device driver name */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.modalias = "m25p80", /* Name of spi_driver for this device */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.bus_num = 0, /* Framework bus number */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.chip_select = 2, /* Framework chip select. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data = &bfin_spi_flash_data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.controller_data = &spi_flash_chip_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mode = SPI_MODE_3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.modalias = "mmc_spi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.bus_num = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.chip_select = 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.controller_data = &mmc_spi_chip_info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.mode = SPI_MODE_3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.modalias = "spidev", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.bus_num = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.chip_select = 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* SPI (0) */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource bfin_spi0_resource[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[0] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start = SPI0_REGBASE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end   = SPI0_REGBASE + 0xFF, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags = IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[1] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start = CH_SPI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end   = CH_SPI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags = IORESOURCE_DMA, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[2] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start = IRQ_SPI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end   = IRQ_SPI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags = IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* SPI controller data */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct bfin5xx_spi_master bfin_spi0_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_chipselect = 8, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.enable_dma = 1,  /* master has the ability to do dma transfer */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device bfin_spi0_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name = "bfin-spi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id = 0, /* Bus number */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources = ARRAY_SIZE(bfin_spi0_resource), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource = bfin_spi0_resource, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.platform_data = &bfin_spi0_info, /* Passed to driver */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif  /* spi master and devices */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef CONFIG_SERIAL_BFIN_UART0 
			 |