stamp.c revision 6fbfa0c41878a5284156d4678dc514c92524e0b9
11394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
296f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Copyright 2004-2009 Analog Devices Inc.
396f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                2005 National ICT Australia (NICTA)
496f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                      Aidan Williams <aidan@nicta.com.au>
51394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
696f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Licensed under the GPL-2 or later.
71394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/device.h>
10fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/kernel.h>
111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/platform_device.h>
126e3647554e2bf7d7a898ccfc35941adbecd888e7Barry Song#include <linux/io.h>
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/mtd.h>
14fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/mtd/nand.h>
151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/partitions.h>
16fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/mtd/plat-ram.h>
17de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger#include <linux/mtd/physmap.h>
181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/spi.h>
191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/flash.h>
201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
21f02bcec5986870b3ddae26f6be1cde0703abfd8aMike Frysinger#include <linux/usb/isp1362.h>
221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
237a9cc48907e05e61033b953a3860e55703625950Sonic Zhang#include <linux/i2c.h>
247a9cc48907e05e61033b953a3860e55703625950Sonic Zhang#include <linux/i2c/adp5588.h>
250531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger#include <linux/etherdevice.h>
260a87e3e92b299e0f1a69b36664ecde2fc296c40aJeff Garzik#include <linux/ata_platform.h>
271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/irq.h>
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/interrupt.h>
2927f5d75afaa1b65e4cc1e4ac8a2a5095d24f1576David Brownell#include <linux/usb/sl811.h>
30f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#include <linux/spi/mmc_spi.h>
3178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#include <linux/leds.h>
3278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#include <linux/input.h>
33c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/dma.h>
341f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger#include <asm/bfin5xx_spi.h>
35c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/reboot.h>
365d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu#include <asm/portmux.h>
3714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich#include <asm/dpmc.h>
38f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#ifdef CONFIG_REGULATOR_ADP_SWITCH
39f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#include <linux/regulator/adp_switch.h>
40f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
41f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#ifdef CONFIG_REGULATOR_AD5398
42f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#include <linux/regulator/ad5398.h>
43f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
44f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#include <linux/regulator/consumer.h>
45f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#include <linux/regulator/userspace-consumer.h>
461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Name the Board for the /proc/cpuinfo
491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
50fe85cad25e56aad5e020ea5cab50a100892f645bMike Frysingerconst char bfin_board_name[] = "ADI BF537-STAMP";
511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *  Driver needs to know address, irq and flag pin.
541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
573f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#include <linux/usb/isp1760.h>
583f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct resource bfin_isp1760_resources[] = {
591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	[0] = {
603f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.start  = 0x203C0000,
613f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.end    = 0x203C0000 + 0x000fffff,
621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags  = IORESOURCE_MEM,
631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	[1] = {
653f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.start  = IRQ_PF7,
663f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.end    = IRQ_PF7,
676a6be3d1882743a382f18da9821a410bb29964a2Michael Hennerich		.flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
713f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct isp1760_platform_data isp1760_priv = {
723f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.is_isp1761 = 0,
733f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.bus_width_16 = 1,
743f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.port1_otg = 0,
753f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.analog_oc = 0,
763f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dack_polarity_high = 0,
773f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dreq_polarity_high = 0,
781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
803f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct platform_device bfin_isp1760_device = {
81c6feb7682885f732a264ef589ee44edb1a3d45f2Michael Hennerich	.name           = "isp1760",
823f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.id             = 0,
833f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dev = {
843f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.platform_data = &isp1760_priv,
853f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	},
863f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.num_resources  = ARRAY_SIZE(bfin_isp1760_resources),
873f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.resource       = bfin_isp1760_resources,
881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
912463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
922463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#include <linux/gpio_keys.h>
932463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
942463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct gpio_keys_button bfin_gpio_keys_table[] = {
952463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_0, GPIO_PF2, 1, "gpio-keys: BTN0"},
962463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_1, GPIO_PF3, 1, "gpio-keys: BTN1"},
972463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_2, GPIO_PF4, 1, "gpio-keys: BTN2"},
982463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_3, GPIO_PF5, 1, "gpio-keys: BTN3"},
992463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1002463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1012463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct gpio_keys_platform_data bfin_gpio_keys_data = {
1022463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.buttons        = bfin_gpio_keys_table,
1032463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.nbuttons       = ARRAY_SIZE(bfin_gpio_keys_table),
1042463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1052463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1062463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct platform_device bfin_device_gpiokeys = {
1072463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.name      = "gpio-keys",
1082463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.dev = {
1092463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich		.platform_data = &bfin_gpio_keys_data,
1102463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	},
1112463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1122463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#endif
1132463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
1151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource bfin_pcmcia_cf_resources[] = {
1161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20310000, /* IO PORT */
1181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20312000,
1191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1201f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
121d2d50aa97d695d83ccb2341488d977e8cfe36555Simon Arlott		.start = 0x20311000, /* Attribute Memory */
1221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20311FFF,
1231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1241f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF4,
1261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF4,
1271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
1281f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 6, /* Card Detect PF6 */
1301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 6,
1311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ,
1321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_pcmcia_cf_device = {
1361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin_cf_pcmcia",
1371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = -1,
1381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
1391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = bfin_pcmcia_cf_resources,
1401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
1441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device rtc_device = {
1451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "rtc-bfin",
1461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id   = -1,
1471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
15161f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich#include <linux/smc91x.h>
15261f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
15361f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerichstatic struct smc91x_platdata smc91x_info = {
15461f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
15561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.leda = RPC_LED_100_10,
15661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.ledb = RPC_LED_TX_RX,
15761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich};
15861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
1591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource smc91x_resources[] = {
1601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.name = "smc91x-regs",
1621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20300300,
1631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20300300 + 16,
1641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1651f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF7,
1681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF7,
1691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
1701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device smc91x_device = {
1731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "smc91x",
1741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(smc91x_resources),
1761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = smc91x_resources,
17761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.dev	= {
17861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich		.platform_data	= &smc91x_info,
17961f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	},
1801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
183f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
184f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landaustatic struct resource dm9000_resources[] = {
185f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	[0] = {
186f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.start	= 0x203FB800,
187b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.end	= 0x203FB800 + 1,
188f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.flags	= IORESOURCE_MEM,
189f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	},
190f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	[1] = {
191b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.start	= 0x203FB804,
192b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.end	= 0x203FB804 + 1,
193b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.flags	= IORESOURCE_MEM,
194b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song	},
195b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song	[2] = {
196f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.start	= IRQ_PF9,
197f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.end	= IRQ_PF9,
198f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.flags	= (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
199f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	},
200f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau};
201f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
202f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landaustatic struct platform_device dm9000_device = {
203f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.name		= "dm9000",
204f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.id		= -1,
205f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.num_resources	= ARRAY_SIZE(dm9000_resources),
206f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.resource	= dm9000_resources,
207f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau};
208f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#endif
209f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
2101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
2111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource sl811_hcd_resources[] = {
2121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
2131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20340000,
2141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20340000,
2151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2161f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20340004,
2181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20340004,
2191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2201f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
22101218654cd97a1e970034b1e080ec5459172c3f6Mike Frysinger		.start = IRQ_PF4,
22201218654cd97a1e970034b1e080ec5459172c3f6Mike Frysinger		.end = IRQ_PF4,
2231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
2241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
2281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuvoid sl811_port_power(struct device *dev, int is_on)
2291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
230c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
231acbcd2631975cf6f0be5cd294cbfd12226cd9958Michael Hennerich	gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
2321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
2331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct sl811_platform_data sl811_priv = {
2361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.potpg = 10,
2371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power = 250,       /* == 500mA */
2381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
2391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.port_power = &sl811_port_power,
2401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device sl811_hcd_device = {
2441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "sl811-hcd",
2451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
2461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
2471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &sl811_priv,
2481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(sl811_hcd_resources),
2501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = sl811_hcd_resources,
2511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
2551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource isp1362_hcd_resources[] = {
2561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
2571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20360000,
2581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20360000,
2591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2601f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20360004,
2621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20360004,
2631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2641f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
26521b03cfe4c50fd586bfebd06d852457c07f60c2bMike Frysinger		.start = IRQ_PF3,
26621b03cfe4c50fd586bfebd06d852457c07f60c2bMike Frysinger		.end = IRQ_PF3,
2679e75894c50d126bf3c8efb0efc91d5a93d6163ddMichael Hennerich		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
2681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct isp1362_platform_data isp1362_priv = {
2721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.sel15Kres = 1,
2731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.clknotstop = 0,
2741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.oc_enable = 0,
2751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_act_high = 0,
2761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_edge_triggered = 0,
2771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.remote_wakeup_connected = 0,
2781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.no_power_switching = 1,
2791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power_switching_mode = 0,
2801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device isp1362_hcd_device = {
2831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "isp1362-hcd",
2841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
2851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
2861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &isp1362_priv,
2871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(isp1362_hcd_resources),
2891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = isp1362_hcd_resources,
2901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
293706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
294706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Songunsigned short bfin_can_peripherals[] = {
295706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	P_CAN0_RX, P_CAN0_TX, 0
296706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
297706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
298706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Songstatic struct resource bfin_can_resources[] = {
299706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
300706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = 0xFFC02A00,
301706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = 0xFFC02FFF,
302706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_MEM,
303706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
304706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
305706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_RX,
306706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_RX,
307706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
308706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
309706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
310706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_TX,
311706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_TX,
312706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
313706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
314706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
315706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_ERROR,
316706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_ERROR,
317706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
318706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
319706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
320706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
321706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Songstatic struct platform_device bfin_can_device = {
322706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.name = "bfin_can",
323706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.num_resources = ARRAY_SIZE(bfin_can_resources),
324706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.resource = bfin_can_resources,
325706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.dev = {
326706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.platform_data = &bfin_can_peripherals, /* Passed to driver */
327706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
328706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
329706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#endif
330706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
3311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
33265319628db2c7a630daadfeec4d371aaca788482Graf Yangstatic struct platform_device bfin_mii_bus = {
33365319628db2c7a630daadfeec4d371aaca788482Graf Yang	.name = "bfin_mii_bus",
33465319628db2c7a630daadfeec4d371aaca788482Graf Yang};
33565319628db2c7a630daadfeec4d371aaca788482Graf Yang
3361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_mac_device = {
3371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin_mac",
33865319628db2c7a630daadfeec4d371aaca788482Graf Yang	.dev.platform_data = &bfin_mii_bus,
3391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
3431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource net2272_bfin_resources[] = {
3441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
3451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20300000,
3461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20300000 + 0x100,
3471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3481f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF7,
3501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF7,
3511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
3521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device net2272_bfin_device = {
3561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "net2272",
3571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = -1,
3581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(net2272_bfin_resources),
3591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = net2272_bfin_resources,
3601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
363fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
364fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#ifdef CONFIG_MTD_PARTITIONS
365fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerconst char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
366fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
367fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct mtd_partition bfin_plat_nand_partitions[] = {
368fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	{
369aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name   = "linux kernel(nand)",
370fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.size   = 0x400000,
371fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.offset = 0,
372fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	}, {
373aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name   = "file system(nand)",
374fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.size   = MTDPART_SIZ_FULL,
375fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.offset = MTDPART_OFS_APPEND,
376fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
377fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
378fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
379fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
380fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_CLE 2
381fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_ALE 1
382fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
383fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
384fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	struct nand_chip *this = mtd->priv;
385fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
386fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	if (cmd == NAND_CMD_NONE)
387fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		return;
388fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
389fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	if (ctrl & NAND_CLE)
390fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_CLE));
391fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	else
392fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_ALE));
393fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
394fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
395fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_READY GPIO_PF3
396fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic int bfin_plat_nand_dev_ready(struct mtd_info *mtd)
397fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
398fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	return gpio_get_value(BFIN_NAND_PLAT_READY);
399fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
400fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
401fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct platform_nand_data bfin_plat_nand_data = {
402fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.chip = {
403ef56609f9c7fdf5baa9d9f86f84a7bd8a717cd25Marek Vasut		.nr_chips = 1,
404fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.chip_delay = 30,
405fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#ifdef CONFIG_MTD_PARTITIONS
406fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.part_probe_types = part_probes,
407fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.partitions = bfin_plat_nand_partitions,
408fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.nr_partitions = ARRAY_SIZE(bfin_plat_nand_partitions),
409fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
410fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
411fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.ctrl = {
412fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.cmd_ctrl  = bfin_plat_nand_cmd_ctrl,
413fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.dev_ready = bfin_plat_nand_dev_ready,
414fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
415fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
416fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
417fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define MAX(x, y) (x > y ? x : y)
418fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct resource bfin_plat_nand_resources = {
419fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.start = 0x20212000,
420fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.end   = 0x20212000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)),
42167d9963bd79b8f861387982ac5c0ff796f12be61Mike Frysinger	.flags = IORESOURCE_MEM,
422fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
423fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
424fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct platform_device bfin_async_nand_device = {
425fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.name = "gen_nand",
426fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.id = -1,
427fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.num_resources = 1,
428fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.resource = &bfin_plat_nand_resources,
429fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.dev = {
430fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.platform_data = &bfin_plat_nand_data,
431fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
432fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
433fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
434fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_init(void)
435fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
436fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	gpio_request(BFIN_NAND_PLAT_READY, "bfin_nand_plat");
437fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
438fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#else
439fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_init(void) {}
440fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
441fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
442793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
443de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct mtd_partition stamp_partitions[] = {
444de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	{
445aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "bootloader(nor)",
446edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size       = 0x40000,
447de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = 0,
448de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
449aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "linux kernel(nor)",
4506ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size       = 0x180000,
451de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = MTDPART_OFS_APPEND,
452de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
453aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "file system(nor)",
4546ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size       = 0x400000 - 0x40000 - 0x180000 - 0x10000,
455de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = MTDPART_OFS_APPEND,
456de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
457aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "MAC Address(nor)",
458de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.size       = MTDPART_SIZ_FULL,
459de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = 0x3F0000,
460de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.mask_flags = MTD_WRITEABLE,
461de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}
462de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
463de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
464de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct physmap_flash_data stamp_flash_data = {
465de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.width      = 2,
466de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.parts      = stamp_partitions,
467de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.nr_parts   = ARRAY_SIZE(stamp_partitions),
46838e7673f24e6c19aba9ecff86760cb7981b91464Barry Song#ifdef CONFIG_ROMKERNEL
46938e7673f24e6c19aba9ecff86760cb7981b91464Barry Song	.probe_type = "map_rom",
47038e7673f24e6c19aba9ecff86760cb7981b91464Barry Song#endif
471de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
472de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
473de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct resource stamp_flash_resource = {
474de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.start = 0x20000000,
475de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.end   = 0x203fffff,
476de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.flags = IORESOURCE_MEM,
477de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
478de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
479de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct platform_device stamp_flash_device = {
480de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.name          = "physmap-flash",
481de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.id            = 0,
482de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.dev = {
483de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.platform_data = &stamp_flash_data,
484de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	},
485de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.num_resources = 1,
486de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.resource      = &stamp_flash_resource,
487de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
488793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#endif
489de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
4901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) \
4911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_MTD_M25P80_MODULE)
4921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct mtd_partition bfin_spi_flash_partitions[] = {
4931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
494aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "bootloader(spi)",
495edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size = 0x00040000,
4961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0,
4971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mask_flags = MTD_CAP_ROM
4981f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
499aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "linux kernel(spi)",
5006ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size = 0x180000,
501edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.offset = MTDPART_OFS_APPEND,
5021f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
503aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "file system(spi)",
504edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size = MTDPART_SIZ_FULL,
505edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.offset = MTDPART_OFS_APPEND,
5061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	}
5071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct flash_platform_data bfin_spi_flash_data = {
5101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "m25p80",
5111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.parts = bfin_spi_flash_partitions,
5121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
51388a8078b3b31349e9cbf09215eab6891fb1aed0fMichael Hennerich	/* .type = "m25p64", */
5141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI flash chip (m25p64) */
5171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_flash_chip_info = {
5181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,         /* use dma transfer with this chip*/
5191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 8,
5201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
523a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger#if defined(CONFIG_BFIN_SPI_ADC) \
524a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger	|| defined(CONFIG_BFIN_SPI_ADC_MODULE)
5251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI ADC chip */
5261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_adc_chip_info = {
5271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,         /* use dma transfer with this chip*/
5281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
5291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
532d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
533d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song	|| defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
5341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip ad1836_spi_chip_info = {
5351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
5361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
5371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5403b82790c12f8122d3df07cc387d2d74355e54c75Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD193X) \
5413b82790c12f8122d3df07cc387d2d74355e54c75Barry Song	|| defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
542d4b834c13940b5433d16ae3605794b3d74804348Barry Songstatic struct bfin5xx_spi_chip ad1938_spi_chip_info = {
543d4b834c13940b5433d16ae3605794b3d74804348Barry Song	.enable_dma = 0,
544d4b834c13940b5433d16ae3605794b3d74804348Barry Song	.bits_per_word = 8,
545d4b834c13940b5433d16ae3605794b3d74804348Barry Song};
546d4b834c13940b5433d16ae3605794b3d74804348Barry Song#endif
547d4b834c13940b5433d16ae3605794b3d74804348Barry Song
548a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) \
549a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	|| defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
550a65912ca57886fcfd2568e422fbc58f91b015c9eYi Listatic struct bfin5xx_spi_chip adav801_spi_chip_info = {
551a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	.enable_dma = 0,
552a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	.bits_per_word = 8,
553a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li};
554a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#endif
555a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li
5565b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
557427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
558427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct bfin5xx_spi_chip ad7147_spi_chip_info = {
559427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.enable_dma = 0,
560427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.bits_per_word = 16,
561427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
562427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
5635b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_slider_plat ad7147_spi_slider_plat[] = {
564427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
565427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.start_stage = 0,
566427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.end_stage = 7,
567427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_coord = 128,
568427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
569427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
570427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
5715b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_button_plat ad7147_spi_button_plat[] = {
572427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
573427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_FORWARD,
574427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
575427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x600,
576427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
577427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
578427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_LEFT,
579427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
580427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x500,
581427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
582427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
583427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_MIDDLE,
584427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
585427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x800,
586427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
587427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
588427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_RIGHT,
589427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x100,
590427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
591427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
592427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
593427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_BACK,
594427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x200,
595427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
596427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
597427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
5985b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_platform_data ad7147_spi_platform_data = {
599427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.slider_num = 1,
600427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 5,
6015b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.slider = ad7147_spi_slider_plat,
6025b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.button = ad7147_spi_button_plat,
603427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
604427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFBFF, 0x1FFF, 0, 0x2626, 1600, 1600, 1600, 1600},
605427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xEFFF, 0x1FFF, 0, 0x2626, 1650, 1650, 1650, 1650},
606427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFE, 0, 0x2626, 1650, 1650, 1650, 1650},
607427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFB, 0, 0x2626, 1650, 1650, 1650, 1650},
608427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FEF, 0, 0x2626, 1650, 1650, 1650, 1650},
609427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FBF, 0, 0x2626, 1650, 1650, 1650, 1650},
610427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1EFF, 0, 0x2626, 1650, 1650, 1650, 1650},
611427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1BFF, 0, 0x2626, 1600, 1600, 1600, 1600},
612427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFF7B, 0x3FFF, 0x506,  0x2626, 1100, 1100, 1150, 1150},
613427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDFE, 0x3FFF, 0x606,  0x2626, 1100, 1100, 1150, 1150},
614427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFEBA, 0x1FFF, 0x1400, 0x2626, 1200, 1200, 1300, 1300},
615427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFEF, 0x1FFF, 0x0,    0x2626, 1100, 1100, 1150, 1150},
616427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
617427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x2B2, 0x0, 0x3233, 0x819, 0x832, 0xCFF, 0xCFF, 0x0},
618427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
619427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
620427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
6215b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
622427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
6235b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_button_plat ad7142_i2c_button_plat[] = {
624427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
625427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_1,
626427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
627427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x1,
628427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
629427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
630427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_2,
631427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
632427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x2,
633427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
634427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
635427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_3,
636427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
637427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x4,
638427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
639427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
640427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_4,
641427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x0,
642427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x8,
643427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
644427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
6455b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_platform_data ad7142_i2c_platform_data = {
646427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 4,
6475b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.button = ad7142_i2c_button_plat,
648427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
649427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		/* fixme: figure out right setting for all comoponent according
650427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		 * to hardware feature of EVAL-AD7142EB board */
651427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xE7FF, 0x3FFF, 0x0005, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
652427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDBF, 0x3FFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
653427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x2DFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
654427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x37BF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
655427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
656427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
657427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
658427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
659427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
660427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
661427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
662427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
663427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
664427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x0B2, 0x0, 0x690, 0x664, 0x290F, 0xF, 0xF, 0x0},
665427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
666427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
667427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
668f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
669f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yangstatic struct bfin5xx_spi_chip ad2s90_spi_chip_info = {
670f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	.enable_dma = 0,
671f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	.bits_per_word = 16,
672f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang};
673f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#endif
674f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang
675df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
676df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yangunsigned short ad2s120x_platform_data[] = {
677df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	/* used as SAMPLE and RDVEL */
678df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	GPIO_PF5, GPIO_PF6, 0
679df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang};
680df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
681df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yangstatic struct bfin5xx_spi_chip ad2s120x_spi_chip_info = {
682df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	.enable_dma = 0,
683df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	.bits_per_word = 16,
684df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang};
685df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#endif
686df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
687848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
688848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yangunsigned short ad2s1210_platform_data[] = {
689848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	/* use as SAMPLE, A0, A1 */
690848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	GPIO_PF7, GPIO_PF8, GPIO_PF9,
691848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang# if defined(CONFIG_AD2S1210_GPIO_INPUT) || defined(CONFIG_AD2S1210_GPIO_OUTPUT)
692848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	/* the RES0 and RES1 pins */
693848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	GPIO_PF4, GPIO_PF5,
694848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang# endif
695848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	0,
696848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang};
697848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
698848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yangstatic struct bfin5xx_spi_chip ad2s1210_spi_chip_info = {
699848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	.enable_dma = 0,
700848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	.bits_per_word = 8,
701848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang};
702848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#endif
703848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
704f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
705f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#define MMC_SPI_CARD_DETECT_INT IRQ_PF5
706f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
707f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic int bfin_mmc_spi_init(struct device *dev,
708f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	irqreturn_t (*detect_int)(int, void *), void *data)
709f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
710f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	return request_irq(MMC_SPI_CARD_DETECT_INT, detect_int,
711f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		IRQF_TRIGGER_FALLING, "mmc-spi-detect", data);
712f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
713f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
714f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic void bfin_mmc_spi_exit(struct device *dev, void *data)
715f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
716f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	free_irq(MMC_SPI_CARD_DETECT_INT, data);
717f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
718f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
719f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct mmc_spi_platform_data bfin_mmc_spi_pdata = {
720f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.init = bfin_mmc_spi_init,
721f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.exit = bfin_mmc_spi_exit,
722f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.detect_delay = 100, /* msecs */
723f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
724f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
725f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct bfin5xx_spi_chip  mmc_spi_chip_info = {
726f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.enable_dma = 0,
727f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.bits_per_word = 8,
728e68d1ebc30e033612bb69f949da654d72beae57dYi Li	.pio_interrupt = 0,
729f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
730f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
731f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
7321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
73346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7877.h>
7341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_ad7877_chip_info = {
7351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
7361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
7371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic const struct ad7877_platform_data bfin_ad7877_ts_info = {
7401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.model			= 7877,
7411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.vref_delay_usecs	= 50,	/* internal, no capacitor */
7421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.x_plate_ohms		= 419,
7431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.y_plate_ohms		= 486,
7441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_max		= 1000,
7451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_min		= 0,
7466ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.stopacq_polarity	= 1,
7476ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.first_conversion_delay	= 3,
7486ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.acquisition_time	= 1,
7496ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.averaging		= 1,
7506ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.pen_down_acc_interval	= 1,
7511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
75446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
75546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7879.h>
75646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerichstatic const struct ad7879_platform_data bfin_ad7879_ts_info = {
75746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.model			= 7879,	/* Model = AD7879 */
75846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.x_plate_ohms		= 620,	/* 620 Ohm from the touch datasheet */
75946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_max		= 10000,
76046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_min		= 0,
7616ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.first_conversion_delay	= 3,	/* wait 512us before do a first conversion */
7626ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.acquisition_time	= 1,	/* 4us acquisition time per sample */
76346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.median			= 2,	/* do 8 measurements */
7646ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.averaging		= 1,	/* take the average of 4 middle samples */
7656ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.pen_down_acc_interval	= 255,	/* 9.4 ms */
766244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_export		= 1,	/* Export GPIO to gpiolib */
767244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_base		= -1,	/* Dynamic allocation */
76846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich};
76946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
77046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich
771ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE)
77257af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#include <linux/input/adxl34x.h>
773ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerichstatic const struct adxl34x_platform_data adxl34x_info = {
774ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.x_axis_offset = 0,
775ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.y_axis_offset = 0,
776ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.z_axis_offset = 0,
777ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_threshold = 0x31,
778ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_duration = 0x10,
779ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_latency = 0x60,
780ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_window = 0xF0,
781ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN,
782ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.act_axis_control = 0xFF,
783ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.activity_threshold = 5,
784ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_threshold = 3,
785ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_time = 4,
786ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_threshold = 0x7,
787ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_time = 0x20,
788ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_rate = 0x8,
789ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_range = ADXL_FULL_RES,
790ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
791ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_type = EV_ABS,
792ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_x = ABS_X,		/* EV_REL */
793ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_y = ABS_Y,		/* EV_REL */
794ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_z = ABS_Z,		/* EV_REL */
795ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
79657af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.ev_code_tap = {BTN_TOUCH, BTN_TOUCH, BTN_TOUCH}, /* EV_KEY x,y,z */
797ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
798ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_ff = KEY_F,*/		/* EV_KEY */
799ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_act_inactivity = KEY_A,*/	/* EV_KEY */
800ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
801ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.fifo_mode = ADXL_FIFO_STREAM,
8026ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.orientation_enable = ADXL_EN_ORIENTATION_3D,
8036ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.deadzone_angle = ADXL_DEADZONE_ANGLE_10p8,
8046ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.divisor_length =  ADXL_LP_FILTER_DIVISOR_16,
8056ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	/* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
8066ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.ev_codes_orient_3d = {BTN_Z, BTN_Y, BTN_X, BTN_A, BTN_B, BTN_C},
807ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich};
808ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
809ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
810f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
811f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerichstatic struct bfin5xx_spi_chip spi_ad7879_chip_info = {
812f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.enable_dma = 0,
813f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.bits_per_word = 16,
814f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich};
815f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
816f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich
8176e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
8186e668936db12550ab5a6a758f236140101e5a644Michael Hennerichstatic struct bfin5xx_spi_chip spidev_chip_info = {
8196e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.enable_dma = 0,
8206e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.bits_per_word = 8,
8216e668936db12550ab5a6a758f236140101e5a644Michael Hennerich};
8226e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
8236e668936db12550ab5a6a758f236140101e5a644Michael Hennerich
8242043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
8252043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin5xx_spi_chip lq035q1_spi_chip_info = {
8262043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.enable_dma	= 0,
8272043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.bits_per_word	= 8,
8282043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
8292043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
8302043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
83185a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
83285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerichstatic struct bfin5xx_spi_chip enc28j60_spi_chip_info = {
83385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.enable_dma	= 1,
83485a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.bits_per_word	= 8,
83585a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich};
83685a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
83785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich
838efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
839efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic struct bfin5xx_spi_chip adf7021_spi_chip_info = {
840efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.bits_per_word = 16,
841efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
842efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
843efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#include <linux/spi/adf702x.h>
844efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#define TXREG 0x0160A470
845efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic const u32 adf7021_regs[] = {
846efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x09608FA0,
847efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00575011,
848efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00A7F092,
849efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x2B141563,
850efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x81F29E94,
851efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00003155,
852efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x050A4F66,
853efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000007,
854efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000008,
855efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x000231E9,
856efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x3296354A,
857efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x891A2B3B,
858efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000D9C,
859efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000D,
860efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000E,
861efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000F,
862efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
863efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
864efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic struct adf702x_platform_data adf7021_platform_data = {
865efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.regs_base = (void *)SPORT1_TCR1,
866efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.dma_ch_rx = CH_SPORT1_RX,
867efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.dma_ch_tx = CH_SPORT1_TX,
868efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.irq_sport_err = IRQ_SPORT1_ERROR,
869efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.gpio_int_rfs = GPIO_PF8,
870efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.pin_req = {P_SPORT1_DTPRI, P_SPORT1_RFS, P_SPORT1_DRPRI,
871efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich			P_SPORT1_RSCLK, P_SPORT1_TSCLK, 0},
872efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.adf702x_model = MODEL_ADF7021,
873efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.adf702x_regs = adf7021_regs,
874efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.tx_reg = TXREG,
875efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
8760531c467da6438f278e9420a30f73eea2fdb73bdMike Frysingerstatic inline void adf702x_mac_init(void)
8770531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger{
8780531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger	random_ether_addr(adf7021_platform_data.mac_addr);
8790531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger}
8800531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger#else
8810531c467da6438f278e9420a30f73eea2fdb73bdMike Frysingerstatic inline void adf702x_mac_init(void) {}
882efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#endif
883efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
884fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
885fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#include <linux/spi/ads7846.h>
886fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic struct bfin5xx_spi_chip ad7873_spi_chip_info = {
887fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.bits_per_word	= 8,
888fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich};
889fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
890fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic int ads7873_get_pendown_state(void)
891fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich{
892fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	return gpio_get_value(GPIO_PF6);
893fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich}
894fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
895fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic struct ads7846_platform_data __initdata ad7873_pdata = {
896fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.model		= 7873,		/* AD7873 */
897fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.x_max		= 0xfff,
898fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.y_max		= 0xfff,
899fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.x_plate_ohms	= 620,
900fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_max	= 1,
901fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_rep	= 0,
902fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_tol	= (~0),
903fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.get_pendown_state = ads7873_get_pendown_state,
904fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich};
905fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#endif
906fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
9078e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
9088e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
909ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
910ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct mtd_partition bfin_spi_dataflash_partitions[] = {
911ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	{
912ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "bootloader(spi)",
913ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = 0x00040000,
914ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = 0,
915ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.mask_flags = MTD_CAP_ROM
916ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
917ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "linux kernel(spi)",
9186ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size = 0x180000,
919ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
920ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
921ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "file system(spi)",
922ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = MTDPART_SIZ_FULL,
923ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
924ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}
925ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
926ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
927ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct flash_platform_data bfin_spi_dataflash_data = {
928ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.name = "SPI Dataflash",
929ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.parts = bfin_spi_dataflash_partitions,
930ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.nr_parts = ARRAY_SIZE(bfin_spi_dataflash_partitions),
931ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
932ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
9338e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich/* DataFlash chip */
9348e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerichstatic struct bfin5xx_spi_chip data_flash_chip_info = {
9358e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
9368e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.bits_per_word = 8,
9378e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich};
9388e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
9398e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich
94057af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
94157af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerichstatic struct bfin5xx_spi_chip spi_adxl34x_chip_info = {
94257af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
94357af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.bits_per_word = 8,
94457af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich};
94557af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#endif
94657af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich
9471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct spi_board_info bfin_spi_board_info[] __initdata = {
9481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) \
9491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_MTD_M25P80_MODULE)
9501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		/* the modalias must be the same as spi device driver name */
9521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "m25p80", /* Name of spi_driver for this device */
9531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
954c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
9551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
9561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &bfin_spi_flash_data,
9571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_flash_chip_info,
9581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
9591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
9618e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
9628e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
9638e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	{	/* DataFlash chip */
9648e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.modalias = "mtd_dataflash",
965ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.max_speed_hz = 33250000,     /* max spi clock (SCK) speed in HZ */
9668e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.bus_num = 0, /* Framework bus number */
9678e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
968ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.platform_data = &bfin_spi_dataflash_data,
9698e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.controller_data = &data_flash_chip_info,
9708e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.mode = SPI_MODE_3,
9718e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	},
9728e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
973a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger#if defined(CONFIG_BFIN_SPI_ADC) \
974a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger	|| defined(CONFIG_BFIN_SPI_ADC_MODULE)
9751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
9771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 6250000,     /* max spi clock (SCK) speed in HZ */
978c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
9791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. */
9801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = NULL, /* No spi_driver specific config */
9811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_adc_chip_info,
9821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
9841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
985d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
986d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song	|| defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
9871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
988d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song		.modalias = "ad183x",
9891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
990c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
9917ba80063e90302287625a105c546c2fc318fcfbfBarry Song		.chip_select = 4,
992d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song		.platform_data = "ad1836", /* only includes chip name for the moment */
9931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &ad1836_spi_chip_info,
9948312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song		.mode = SPI_MODE_3,
9951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
997d4b834c13940b5433d16ae3605794b3d74804348Barry Song
9983b82790c12f8122d3df07cc387d2d74355e54c75Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
999d4b834c13940b5433d16ae3605794b3d74804348Barry Song	{
10003b82790c12f8122d3df07cc387d2d74355e54c75Barry Song		.modalias = "ad193x",
1001d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
1002d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.bus_num = 0,
100308a54bffaf7d5dc9391518323234ce9f9ea4be8eBarry Song		.chip_select = 5,
1004d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.controller_data = &ad1938_spi_chip_info,
1005d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.mode = SPI_MODE_3,
1006d4b834c13940b5433d16ae3605794b3d74804348Barry Song	},
1007d4b834c13940b5433d16ae3605794b3d74804348Barry Song#endif
1008d4b834c13940b5433d16ae3605794b3d74804348Barry Song
1009a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
1010a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	{
1011a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.modalias = "adav80x",
1012a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
1013a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.bus_num = 0,
1014a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.chip_select = 1,
1015a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.controller_data = &adav801_spi_chip_info,
1016a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		.mode = SPI_MODE_3,
1017a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	},
1018a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#endif
1019a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li
10205b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
1021427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
1022427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.modalias = "ad714x_captouch",
1023427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_speed_hz = 1000000,     /* max spi clock (SCK) speed in HZ */
1024427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.irq = IRQ_PF4,
1025427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.bus_num = 0,
1026427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.chip_select = 5,
1027427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.mode = SPI_MODE_3,
10285b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger		.platform_data = &ad7147_spi_platform_data,
1029427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.controller_data = &ad7147_spi_chip_info,
1030427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
1031427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
1032427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
1033f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
1034f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	{
1035f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.modalias = "ad2s90",
1036f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.bus_num = 0,
1037f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.chip_select = 3,            /* change it for your board */
10386fbfa0c41878a5284156d4678dc514c92524e0b9Barry Song		.mode = SPI_MODE_3,
1039f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.platform_data = NULL,
1040f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.controller_data = &ad2s90_spi_chip_info,
1041f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	},
1042f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#endif
1043f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang
1044df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
1045df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	{
1046df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.modalias = "ad2s120x",
1047df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.bus_num = 0,
1048df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.chip_select = 4,            /* CS, change it for your board */
1049df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.platform_data = ad2s120x_platform_data,
1050df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.controller_data = &ad2s120x_spi_chip_info,
1051df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	},
1052df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#endif
1053df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
1054848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
1055848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	{
1056848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.modalias = "ad2s1210",
1057848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.max_speed_hz = 8192000,
1058848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.bus_num = 0,
1059848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.chip_select = 4,            /* CS, change it for your board */
1060848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.platform_data = ad2s1210_platform_data,
1061848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.controller_data = &ad2s1210_spi_chip_info,
1062848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	},
1063848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#endif
1064848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
1065f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
1066f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	{
1067f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.modalias = "mmc_spi",
1068f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
1069f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.bus_num = 0,
1070f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.chip_select = 4,
1071f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.platform_data = &bfin_mmc_spi_pdata,
1072f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.controller_data = &mmc_spi_chip_info,
1073f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.mode = SPI_MODE_3,
1074f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	},
1075f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
10761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
10771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
10781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias		= "ad7877",
10791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data		= &bfin_ad7877_ts_info,
10801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.irq			= IRQ_PF6,
10811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz	= 12500000,     /* max spi clock (SCK) speed in HZ */
1082c7d4896621d42c84956911afd5f10a5d317c781aMichael Hennerich		.bus_num	= 0,
10831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select  = 1,
10841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_ad7877_chip_info,
10851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
10861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1087f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
108846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	{
108946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.modalias = "ad7879",
109046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.platform_data = &bfin_ad7879_ts_info,
109146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.irq = IRQ_PF7,
109246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
109346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.bus_num = 0,
109446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 1,
109546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.controller_data = &spi_ad7879_chip_info,
109646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
109746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	},
109846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
10996e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
11006e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	{
11016e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.modalias = "spidev",
11026e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
11036e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.bus_num = 0,
11046e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.chip_select = 1,
11056e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.controller_data = &spidev_chip_info,
11066e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	},
11076e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
11082043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
11092043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
11102043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.modalias = "bfin-lq035q1-spi",
11112043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
11122043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.bus_num = 0,
111346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 2,
11142043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.controller_data = &lq035q1_spi_chip_info,
11152043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
11162043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
11172043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
111885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
111985a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	{
112085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.modalias = "enc28j60",
112185a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
112285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.irq = IRQ_PF6,
112385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.bus_num = 0,
1124f9f0e3b1f7ac4e9fa822e87dd4bbb38f8c389487Barry Song		.chip_select = GPIO_PF10 + MAX_CTRL_CS,	/* GPIO controlled SSEL */
112585a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.controller_data = &enc28j60_spi_chip_info,
112685a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.mode = SPI_MODE_0,
112785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	},
112885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
112957af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
113057af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	{
113157af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.modalias	= "adxl34x",
113257af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.platform_data	= &adxl34x_info,
113357af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.irq		= IRQ_PF6,
113457af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.max_speed_hz	= 5000000,    /* max spi clock (SCK) speed in HZ */
113557af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.bus_num	= 0,
113657af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.chip_select	= 2,
113757af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.controller_data = &spi_adxl34x_chip_info,
113857af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.mode = SPI_MODE_3,
113957af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	},
114057af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#endif
1141efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
1142efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	{
1143efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.modalias = "adf702x",
1144efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.max_speed_hz = 16000000,     /* max spi clock (SCK) speed in HZ */
1145efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.bus_num = 0,
1146f9f0e3b1f7ac4e9fa822e87dd4bbb38f8c389487Barry Song		.chip_select = GPIO_PF10 + MAX_CTRL_CS,	/* GPIO controlled SSEL */
1147efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.controller_data = &adf7021_spi_chip_info,
1148efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.platform_data = &adf7021_platform_data,
1149efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.mode = SPI_MODE_0,
1150efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	},
1151efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#endif
1152fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
1153fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	{
1154fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.modalias = "ads7846",
1155fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.max_speed_hz = 2000000,     /* max spi clock (SCK) speed in HZ */
1156fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.bus_num = 0,
1157fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.irq = IRQ_PF6,
1158fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.chip_select = GPIO_PF10 + MAX_CTRL_CS,	/* GPIO controlled SSEL */
1159fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.controller_data = &ad7873_spi_chip_info,
1160fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.platform_data = &ad7873_pdata,
1161fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.mode = SPI_MODE_0,
1162fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	},
1163fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#endif
11641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11665bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
11671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI controller data */
1168c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct bfin5xx_spi_master bfin_spi0_info = {
1169f9f0e3b1f7ac4e9fa822e87dd4bbb38f8c389487Barry Song	.num_chipselect = MAX_CTRL_CS + MAX_BLACKFIN_GPIOS,
11701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,  /* master has the ability to do dma transfer */
11715d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
11721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1174c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu/* SPI (0) */
1175c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_spi0_resource[] = {
1176c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1177c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = SPI0_REGBASE,
1178c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = SPI0_REGBASE + 0xFF,
1179c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1180c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		},
1181c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1182c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = CH_SPI,
1183c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = CH_SPI,
1184e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.flags = IORESOURCE_DMA,
1185e68d1ebc30e033612bb69f949da654d72beae57dYi Li	},
1186e68d1ebc30e033612bb69f949da654d72beae57dYi Li	[2] = {
1187e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.start = IRQ_SPI,
1188e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.end   = IRQ_SPI,
1189c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1190c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1191c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1192c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1193c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_spi0_device = {
1194c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-spi",
1195c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = 0, /* Bus number */
1196c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
1197c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_spi0_resource,
11981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
1199c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_spi0_info, /* Passed to driver */
12001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
12011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
12021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif  /* spi master and devices */
12031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
12041e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
12051e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12061e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai/* SPORT SPI controller data */
12071e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi0_info = {
12081e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
12091e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
12101e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI,
12111e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0},
12121e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12131e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12141e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi0_resource[] = {
12151e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
12161e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT0_TCR1,
12171e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT0_TCR1 + 0xFF,
12181e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
12191e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12201e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
12211e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT0_ERROR,
12221e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT0_ERROR,
12231e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
12241e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12251e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12261e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12271e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi0_device = {
12281e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
12291e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 1, /* Bus number */
12301e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi0_resource),
12311e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi0_resource,
12321e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
12331e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi0_info, /* Passed to driver */
12341e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
12351e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12361e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12371e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi1_info = {
12381e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
12391e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
12401e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI,
12411e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0},
12421e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12431e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12441e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi1_resource[] = {
12451e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
12461e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT1_TCR1,
12471e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT1_TCR1 + 0xFF,
12481e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
12491e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12501e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
12511e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT1_ERROR,
12521e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT1_ERROR,
12531e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
12541e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12551e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12561e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12571e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi1_device = {
12581e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
12591e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 2, /* Bus number */
12601e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi1_resource),
12611e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi1_resource,
12621e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
12631e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi1_info, /* Passed to driver */
12641e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
12651e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12661e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12671e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif  /* sport spi master and devices */
12681e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
12701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_fb_device = {
1271c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bf537-lq035",
1272c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1273c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
1274c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
12752043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
12762043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#include <asm/bfin-lq035q1.h>
12772043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12782043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
1279d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
1280d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.ppi_mode = USE_RGB565_16_BIT_PPI,
1281d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.use_bl = 0,	/* let something else control the LCD Blacklight */
1282d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.gpio_bl = GPIO_PF7,
12832043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
12842043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12852043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct resource bfin_lq035q1_resources[] = {
12862043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
12872043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.start = IRQ_PPI_ERROR,
12882043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.end = IRQ_PPI_ERROR,
12892043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.flags = IORESOURCE_IRQ,
12902043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
12912043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
12922043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12932043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct platform_device bfin_lq035q1_device = {
12942043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.name		= "bfin-lq035q1",
12952043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.id		= -1,
1296d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.num_resources	= ARRAY_SIZE(bfin_lq035q1_resources),
1297d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.resource	= bfin_lq035q1_resources,
12982043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.dev		= {
12992043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.platform_data = &bfin_lq035q1_data,
13002043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
13012043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
13022043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
13032043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
13041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
1305233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
13066bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart0_resources[] = {
13071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
13086bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART0_THR,
13096bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART0_GCTL+2,
13101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1311233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	},
13126bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13136bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_RX,
13146bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_RX+1,
13156bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13166bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13176bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13186bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_ERROR,
13196bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_ERROR,
13206bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13216bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13226bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13236bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_TX,
13246bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_TX,
13256bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13266bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13276bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13286bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_RX,
13296bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_RX,
13306bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13316bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13326bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_BFIN_UART0_CTSRTS
13336bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* CTS pin */
13346bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG7,
13356bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG7,
13366bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
13376bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13386bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* RTS pin */
13396bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG6,
13406bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG6,
13416bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
13426bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13436bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
13446bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13456bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13466bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangunsigned short bfin_uart0_peripherals[] = {
13476bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART0_TX, P_UART0_RX, 0
13486bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13496bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13506bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart0_device = {
13516bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.name = "bfin-uart",
13526bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 0,
13536bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
13546bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart0_resources,
13556bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
13566bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
13576bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13586bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
1359233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#endif
1360233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
13616bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart1_resources[] = {
1362233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	{
13636bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART1_THR,
13646bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART1_GCTL+2,
13651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
13661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
13676bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13686bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_RX,
13696bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART1_RX+1,
13706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13726bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13736bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_ERROR,
13746bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART1_ERROR,
13756bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13766bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13776bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13786bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_TX,
13796bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_TX,
13806bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13816bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13826bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13836bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_RX,
13846bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_RX,
13856bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13866bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13876bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13886bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13896bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangunsigned short bfin_uart1_peripherals[] = {
13906bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART1_TX, P_UART1_RX, 0
13911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
13921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
13936bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart1_device = {
13941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-uart",
13951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
13966bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart1_resources),
13976bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart1_resources,
13986bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
13996bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart1_peripherals, /* Passed to driver */
14006bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
14011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
14021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
14036bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
14041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
14055be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
14065be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR0
140742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
14085be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
14095be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC00400,
14105be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC004FF,
14115be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
14125be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
141342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
141442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
141542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
141642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
141742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
141842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
141942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
142042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
142142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
142242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
142342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
142442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang
142542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
142642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
142742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 0,
142842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
142942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
143042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
14315be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
14325be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR1
143342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir1_resources[] = {
14345be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
14355be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC02000,
14365be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC020FF,
14375be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
14385be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
143942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
144042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART1_RX,
144142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART1_RX+1,
144242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
144342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
144442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
144542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART1_RX,
144642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART1_RX+1,
144742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
144842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
14495be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
14505be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
145142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir1_device = {
14525be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.name = "bfin_sir",
145342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 1,
145442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir1_resources),
145542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir1_resources,
14565be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
14575be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
145842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
14595be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
14601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
1461c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_twi0_resource[] = {
1462c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1463c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = TWI0_REGBASE,
1464c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = TWI0_REGBASE,
1465c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1466c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1467c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1468c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = IRQ_TWI,
1469c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = IRQ_TWI,
1470c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1471c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1472c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1473c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
14741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device i2c_bfin_twi_device = {
14751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "i2c-bfin-twi",
14761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1477c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_twi0_resource),
1478c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_twi0_resource,
14791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
14801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
14811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
148251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
148351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = {
148451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[0]	 = KEY_GRAVE,
148551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[1]	 = KEY_1,
148651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[2]	 = KEY_2,
148751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[3]	 = KEY_3,
148851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[4]	 = KEY_4,
148951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[5]	 = KEY_5,
149051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[6]	 = KEY_6,
149151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[7]	 = KEY_7,
149251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[8]	 = KEY_8,
149351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[9]	 = KEY_9,
149451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[10]	 = KEY_0,
149551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[11]	 = KEY_MINUS,
149651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[12]	 = KEY_EQUAL,
149751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[13]	 = KEY_BACKSLASH,
149851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[15]	 = KEY_KP0,
149951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[16]	 = KEY_Q,
150051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[17]	 = KEY_W,
150151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[18]	 = KEY_E,
150251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[19]	 = KEY_R,
150351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[20]	 = KEY_T,
150451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[21]	 = KEY_Y,
150551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[22]	 = KEY_U,
150651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[23]	 = KEY_I,
150751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[24]	 = KEY_O,
150851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[25]	 = KEY_P,
150951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[26]	 = KEY_LEFTBRACE,
151051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[27]	 = KEY_RIGHTBRACE,
151151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[29]	 = KEY_KP1,
151251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[30]	 = KEY_KP2,
151351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[31]	 = KEY_KP3,
151451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[32]	 = KEY_A,
151551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[33]	 = KEY_S,
151651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[34]	 = KEY_D,
151751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[35]	 = KEY_F,
151851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[36]	 = KEY_G,
151951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[37]	 = KEY_H,
152051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[38]	 = KEY_J,
152151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[39]	 = KEY_K,
152251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[40]	 = KEY_L,
152351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[41]	 = KEY_SEMICOLON,
152451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[42]	 = KEY_APOSTROPHE,
152551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[43]	 = KEY_BACKSLASH,
152651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[45]	 = KEY_KP4,
152751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[46]	 = KEY_KP5,
152851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[47]	 = KEY_KP6,
152951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[48]	 = KEY_102ND,
153051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[49]	 = KEY_Z,
153151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[50]	 = KEY_X,
153251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[51]	 = KEY_C,
153351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[52]	 = KEY_V,
153451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[53]	 = KEY_B,
153551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[54]	 = KEY_N,
153651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[55]	 = KEY_M,
153751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[56]	 = KEY_COMMA,
153851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[57]	 = KEY_DOT,
153951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[58]	 = KEY_SLASH,
154051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[60]	 = KEY_KPDOT,
154151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[61]	 = KEY_KP7,
154251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[62]	 = KEY_KP8,
154351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[63]	 = KEY_KP9,
154451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[64]	 = KEY_SPACE,
154551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[65]	 = KEY_BACKSPACE,
154651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[66]	 = KEY_TAB,
154751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[67]	 = KEY_KPENTER,
154851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[68]	 = KEY_ENTER,
154951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[69]	 = KEY_ESC,
155051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[70]	 = KEY_DELETE,
155151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[74]	 = KEY_KPMINUS,
155251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[76]	 = KEY_UP,
155351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[77]	 = KEY_DOWN,
155451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[78]	 = KEY_RIGHT,
155551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[79]	 = KEY_LEFT,
155651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
155751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
155851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic struct adp5588_kpad_platform_data adp5588_kpad_data = {
155951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.rows		= 8,
156051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.cols		= 10,
156151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymap		= adp5588_keymap,
156251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5588_keymap),
156351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.repeat		= 0,
156451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
156551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
156651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
15673ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
15683ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#include <linux/mfd/adp5520.h>
15693ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15703ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
15713ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Backlight Data
15723ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
15733ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15741d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_backlight_platform_data adp5520_backlight_data = {
15751d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_in		= ADP5520_FADE_T_1200ms,
15761d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_out		= ADP5520_FADE_T_1200ms,
15771d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_led_law		= ADP5520_BL_LAW_LINEAR,
15781d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.en_ambl_sens		= 1,
15791d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.abml_filt		= ADP5520_BL_AMBL_FILT_640ms,
15801d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l1_daylight_max	= ADP5520_BL_CUR_mA(15),
15811d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l1_daylight_dim	= ADP5520_BL_CUR_mA(0),
15821d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_office_max		= ADP5520_BL_CUR_mA(7),
15831d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_office_dim		= ADP5520_BL_CUR_mA(0),
15841d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_dark_max		= ADP5520_BL_CUR_mA(3),
15851d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_dark_dim		= ADP5520_BL_CUR_mA(0),
15861d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_trip		= ADP5520_L2_COMP_CURR_uA(700),
15871d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_hyst		= ADP5520_L2_COMP_CURR_uA(50),
15881d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_trip		= ADP5520_L3_COMP_CURR_uA(80),
15891d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_hyst		= ADP5520_L3_COMP_CURR_uA(20),
15903ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
15913ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15923ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
15933ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 LEDs Data
15943ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
15953ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15963ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct led_info adp5520_leds[] = {
15973ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
15983ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led1",
15993ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
16001d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich		.flags = FLAG_ID_ADP5520_LED1_ADP5501_LED0 | ADP5520_LED_OFFT_600ms,
16013ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
16023ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#ifdef ADP5520_EN_ALL_LEDS
16033ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
16043ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led2",
16053ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
16063ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED2_ADP5501_LED1,
16073ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
16083ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
16093ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led3",
16103ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
16113ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED3_ADP5501_LED2,
16123ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
16133ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
16143ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16153ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16161d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_leds_platform_data adp5520_leds_data = {
16173ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.num_leds = ARRAY_SIZE(adp5520_leds),
16183ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.leds = adp5520_leds,
16191d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_in = ADP5520_FADE_T_600ms,
16201d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_out = ADP5520_FADE_T_600ms,
16211d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.led_on_time = ADP5520_LED_ONT_600ms,
16223ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16233ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16243ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16253ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 GPIO Data
16263ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16273ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16281d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_gpio_platform_data adp5520_gpio_data = {
16293ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.gpio_start = 50,
16301d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio_en_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
16311d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio_pullup_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
16323ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16333ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16343ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16353ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 Keypad Data
16363ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16373ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16383ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic const unsigned short adp5520_keymap[ADP5520_KEYMAPSIZE] = {
16391d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 0)]	= KEY_GRAVE,
16401d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 1)]	= KEY_1,
16411d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 2)]	= KEY_2,
16421d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 3)]	= KEY_3,
16431d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 0)]	= KEY_4,
16441d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 1)]	= KEY_5,
16451d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 2)]	= KEY_6,
16461d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 3)]	= KEY_7,
16471d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 0)]	= KEY_8,
16481d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 1)]	= KEY_9,
16491d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 2)]	= KEY_0,
16501d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 3)]	= KEY_MINUS,
16511d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 0)]	= KEY_EQUAL,
16521d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 1)]	= KEY_BACKSLASH,
16531d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 2)]	= KEY_BACKSPACE,
16541d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 3)]	= KEY_ENTER,
16551d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich};
16561d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich
16571d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_keys_platform_data adp5520_keys_data = {
16581d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.rows_en_mask	= ADP5520_ROW_R3 | ADP5520_ROW_R2 | ADP5520_ROW_R1 | ADP5520_ROW_R0,
16591d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.cols_en_mask	= ADP5520_COL_C3 | ADP5520_COL_C2 | ADP5520_COL_C1 | ADP5520_COL_C0,
16603ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymap		= adp5520_keymap,
16613ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5520_keymap),
16623ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.repeat		= 0,
16633ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16643ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16653ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16663ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Multifuction Device Init Data
16673ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16683ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16693ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_platform_data adp5520_pdev_data = {
16701d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.backlight = &adp5520_backlight_data,
16711d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.leds = &adp5520_leds_data,
16721d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio = &adp5520_gpio_data,
16731d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.keys = &adp5520_keys_data,
16743ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16753ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16763ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
16773ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
1678ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
16791d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5588_gpio_platform_data adp5588_gpio_data = {
1680ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	.gpio_start = 50,
1681ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	.pullup_dis_mask = 0,
1682ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich};
1683ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#endif
1684ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich
168578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
168678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#include <linux/i2c/adp8870.h>
168778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerichstatic struct led_info adp8870_leds[] = {
168878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	{
168978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.name = "adp8870-led7",
169078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.default_trigger = "none",
169178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.flags = ADP8870_LED_D7 | ADP8870_LED_OFFT_600ms,
169278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	},
169378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich};
169478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
169578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
169678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerichstatic struct adp8870_backlight_platform_data adp8870_pdata = {
169778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_led_assign = ADP8870_BL_D1 | ADP8870_BL_D2 | ADP8870_BL_D3 |
169878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich			 ADP8870_BL_D4 | ADP8870_BL_D5 | ADP8870_BL_D6,	/* 1 = Backlight 0 = Individual LED */
169978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.pwm_assign = 0,				/* 1 = Enables PWM mode */
170078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
170178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_in = ADP8870_FADE_T_1200ms,		/* Backlight Fade-In Timer */
170278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_out = ADP8870_FADE_T_1200ms,		/* Backlight Fade-Out Timer */
170378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_law = ADP8870_FADE_LAW_CUBIC1,		/* fade-on/fade-off transfer characteristic */
170478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
170578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.en_ambl_sens = 1,				/* 1 = enable ambient light sensor */
170678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.abml_filt = ADP8870_BL_AMBL_FILT_320ms,	/* Light sensor filter time */
170778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
170878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l1_daylight_max = ADP8870_BL_CUR_mA(20),	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
170978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l1_daylight_dim = ADP8870_BL_CUR_mA(0),	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
171078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_bright_max = ADP8870_BL_CUR_mA(14),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
171178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_bright_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
171278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_office_max = ADP8870_BL_CUR_mA(6),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
171378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_office_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
171478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_indoor_max = ADP8870_BL_CUR_mA(3),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
171578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_indor_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
171678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_dark_max = ADP8870_BL_CUR_mA(2),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
171778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_dark_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
171878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
171978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_trip = ADP8870_L2_COMP_CURR_uA(710),	/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
172078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_hyst = ADP8870_L2_COMP_CURR_uA(73),		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
172178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_trip = ADP8870_L3_COMP_CURR_uA(389),	/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
172278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_hyst = ADP8870_L3_COMP_CURR_uA(54),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
172378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_trip = ADP8870_L4_COMP_CURR_uA(167),	/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
172478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_hyst = ADP8870_L4_COMP_CURR_uA(16),		/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
172578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_trip = ADP8870_L5_COMP_CURR_uA(43),		/* use L5_COMP_CURR_uA(I) 0 <= I <= 138 uA */
172678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_hyst = ADP8870_L5_COMP_CURR_uA(11),		/* use L6_COMP_CURR_uA(I) 0 <= I <= 138 uA */
172778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
172878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.leds = adp8870_leds,
172978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.num_leds = ARRAY_SIZE(adp8870_leds),
173078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_law = ADP8870_FADE_LAW_SQUARE,	/* fade-on/fade-off transfer characteristic */
173178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_in = ADP8870_FADE_T_600ms,
173278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_out = ADP8870_FADE_T_600ms,
173378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_on_time = ADP8870_LED_ONT_200ms,
173478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich};
173578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#endif
173678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
173772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
173872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#include <linux/i2c/adp8860.h>
173972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerichstatic struct led_info adp8860_leds[] = {
174072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	{
174172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.name = "adp8860-led7",
174272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.default_trigger = "none",
174372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.flags = ADP8860_LED_D7 | ADP8860_LED_OFFT_600ms,
174472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	},
174572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich};
174672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
174772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerichstatic struct adp8860_backlight_platform_data adp8860_pdata = {
174872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_led_assign = ADP8860_BL_D1 | ADP8860_BL_D2 | ADP8860_BL_D3 |
174972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich			 ADP8860_BL_D4 | ADP8860_BL_D5 | ADP8860_BL_D6,	/* 1 = Backlight 0 = Individual LED */
175072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
175172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_in = ADP8860_FADE_T_1200ms,		/* Backlight Fade-In Timer */
175272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_out = ADP8860_FADE_T_1200ms,		/* Backlight Fade-Out Timer */
175372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_law = ADP8860_FADE_LAW_CUBIC1,		/* fade-on/fade-off transfer characteristic */
175472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
175572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.en_ambl_sens = 1,				/* 1 = enable ambient light sensor */
175672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.abml_filt = ADP8860_BL_AMBL_FILT_320ms,	/* Light sensor filter time */
175772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
175872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l1_daylight_max = ADP8860_BL_CUR_mA(20),	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
175972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l1_daylight_dim = ADP8860_BL_CUR_mA(0),	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
176072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_office_max = ADP8860_BL_CUR_mA(6),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
176172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_office_dim = ADP8860_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
176272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_dark_max = ADP8860_BL_CUR_mA(2),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
176372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_dark_dim = ADP8860_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
176472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
176572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_trip = ADP8860_L2_COMP_CURR_uA(710),	/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
176672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_hyst = ADP8860_L2_COMP_CURR_uA(73),		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
176772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_trip = ADP8860_L3_COMP_CURR_uA(43),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
176872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_hyst = ADP8860_L3_COMP_CURR_uA(11),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
176972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
177072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.leds = adp8860_leds,
177172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.num_leds = ARRAY_SIZE(adp8860_leds),
177272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_law = ADP8860_FADE_LAW_SQUARE,	/* fade-on/fade-off transfer characteristic */
177372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_in = ADP8860_FADE_T_600ms,
177472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_out = ADP8860_FADE_T_600ms,
177572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_on_time = ADP8860_LED_ONT_200ms,
177672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich};
177772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#endif
177872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
1779f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1780f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_consumer_supply ad5398_consumer = {
1781f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supply = "current",
1782f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1783f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1784f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_init_data ad5398_regulator_data = {
1785f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.constraints = {
1786f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.name = "current range",
1787f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.max_uA = 120000,
1788f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.valid_ops_mask = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS,
1789f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1790f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.num_consumer_supplies = 1,
1791f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.consumer_supplies     = &ad5398_consumer,
1792f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1793f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1794f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct ad5398_platform_data ad5398_i2c_platform_data = {
1795f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.current_bits = 10,
1796f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.current_offset = 4,
1797f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.regulator_data = &ad5398_regulator_data,
1798f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1799f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1800f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
1801f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
1802f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct platform_device ad5398_virt_consumer_device = {
1803f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "reg-virt-consumer",
1804f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.id = 0,
1805f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.dev = {
1806f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = "current", /* Passed to driver */
1807f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1808f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1809f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1810f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
1811f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
1812f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_bulk_data ad5398_bulk_data = {
1813f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supply = "current",
1814f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1815f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1816f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_userspace_consumer_data ad5398_userspace_comsumer_data = {
1817f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "ad5398",
1818f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.num_supplies = 1,
1819f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supplies = &ad5398_bulk_data,
1820f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1821f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1822f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct platform_device ad5398_userspace_consumer_device = {
1823f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "reg-userspace-consumer",
1824f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.id = 0,
1825f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.dev = {
1826f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = &ad5398_userspace_comsumer_data,
1827f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1828f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1829f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1830f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1831f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
183281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wustatic struct i2c_board_info __initdata bfin_i2c_board_info[] = {
183392b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song#if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
183492b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song	{
183592b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song		I2C_BOARD_INFO("ad1937", 0x04),
183692b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song	},
183792b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song#endif
183892b20f7fb28e541d7f8efb4e3e8d81733aa8adfcBarry Song
1839a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#if defined(CONFIG_SND_BF5XX_SOC_ADAV80X) || defined(CONFIG_SND_BF5XX_SOC_ADAV80X_MODULE)
1840a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	{
1841a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li		I2C_BOARD_INFO("adav803", 0x10),
1842a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li	},
1843a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li#endif
1844a65912ca57886fcfd2568e422fbc58f91b015c9eYi Li
18455b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
184681d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
1847427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		I2C_BOARD_INFO("ad7142_captouch", 0x2C),
18484c94c3e09adba9718218d6e3d35b2dfae81f3911Barry Song		.irq = IRQ_PG5,
18495b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger		.platform_data = (void *)&ad7142_i2c_platform_data,
185081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
185181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1852ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1853ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD7150) || defined(CONFIG_AD7150_MODULE)
1854ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1855ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad7150", 0x48),
1856ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		.irq = IRQ_PG5, /* fixme: use real interrupt number */
1857ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1858ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1859ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1860ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD7152) || defined(CONFIG_AD7152_MODULE)
1861ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1862ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad7152", 0x48),
1863ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1864ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1865ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1866ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD774X) || defined(CONFIG_AD774X_MODULE)
1867ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1868ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad774x", 0x48),
1869ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1870ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1871ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
18725f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang#if defined(CONFIG_AD7414) || defined(CONFIG_AD7414_MODULE)
18735f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang	{
18745f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		I2C_BOARD_INFO("ad7414", 0x9),
18755f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		.irq = IRQ_PG5,
18765f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		/*
18775f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * platform_data pointer is borrwoed by the driver to
18785f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * store custimer defined IRQ ALART level mode.
18795f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
18805f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 */
18815f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		.platform_data = (void *)IRQF_TRIGGER_LOW,
18825f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang	},
18835f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang#endif
18845f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang
1885ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang#if defined(CONFIG_AD7416) || defined(CONFIG_AD7416_MODULE)
1886ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang	{
1887ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		I2C_BOARD_INFO("ad7417", 0xb),
1888ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		.irq = IRQ_PG5,
1889ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		/*
1890ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * platform_data pointer is borrwoed by the driver to
1891ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * store custimer defined IRQ ALART level mode.
1892ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1893ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 */
1894ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		.platform_data = (void *)IRQF_TRIGGER_LOW,
1895ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang	},
1896ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang#endif
1897ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang
1898ebd5833327e3fb46eb55553d8f5432b5226bf897Michael Hennerich#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
189981d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
190081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_lcd", 0x22),
190181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
190281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1903204844ebd08cfb0c83689e55d6633dcd0230d36dMichael Hennerich#if defined(CONFIG_INPUT_PCF8574) || defined(CONFIG_INPUT_PCF8574_MODULE)
190481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
190581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_keypad", 0x27),
1906f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG6,
1907f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	},
1908f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
1909f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
1910f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	{
1911f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		I2C_BOARD_INFO("ad7879", 0x2F),
1912f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG5,
1913f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.platform_data = (void *)&bfin_ad7879_ts_info,
191481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
191581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
191651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
191751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	{
191851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		I2C_BOARD_INFO("adp5588-keys", 0x34),
191951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.irq = IRQ_PG0,
192051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.platform_data = (void *)&adp5588_kpad_data,
192151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	},
192251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
19233ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
19243ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
19253ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		I2C_BOARD_INFO("pmic-adp5520", 0x32),
19264f84b6e0bb9a7d92c791ba3607674c98f69418cbMike Frysinger		.irq = IRQ_PG0,
19273ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = (void *)&adp5520_pdev_data,
19283ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
19293ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
1930ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_I2C) || defined(CONFIG_INPUT_ADXL34X_I2C_MODULE)
1931ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	{
1932ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		I2C_BOARD_INFO("adxl34x", 0x53),
1933ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.irq = IRQ_PG3,
1934ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.platform_data = (void *)&adxl34x_info,
1935ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	},
1936ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
1937ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
1938ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	{
1939ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich		I2C_BOARD_INFO("adp5588-gpio", 0x34),
1940ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich		.platform_data = (void *)&adp5588_gpio_data,
1941ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	},
1942ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#endif
194350c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
194450c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich	{
194550c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich		I2C_BOARD_INFO("bfin-adv7393", 0x2B),
194650c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich	},
194750c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich#endif
1948ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
1949ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich	{
1950ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich		I2C_BOARD_INFO("bf537-lq035-ad5280", 0x2C),
1951ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich	},
1952ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich#endif
195378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
195478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	{
195578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		I2C_BOARD_INFO("adp8870", 0x2B),
195678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.platform_data = (void *)&adp8870_pdata,
195778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	},
195878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#endif
1959d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai#if defined(CONFIG_SND_SOC_ADAU1371) || defined(CONFIG_SND_SOC_ADAU1371_MODULE)
1960d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai	{
1961d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai		I2C_BOARD_INFO("adau1371", 0x1A),
1962d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai	},
1963d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai#endif
196404267638e07f4430f902d7a304845634443caf1aCliff Cai#if defined(CONFIG_SND_SOC_ADAU1761) || defined(CONFIG_SND_SOC_ADAU1761_MODULE)
196504267638e07f4430f902d7a304845634443caf1aCliff Cai	{
196604267638e07f4430f902d7a304845634443caf1aCliff Cai		I2C_BOARD_INFO("adau1761", 0x38),
196704267638e07f4430f902d7a304845634443caf1aCliff Cai	},
196804267638e07f4430f902d7a304845634443caf1aCliff Cai#endif
1969c48d767569ec6449277bf4248295b4c165b57159Cliff Cai#if defined(CONFIG_SND_SOC_ADAU1361) || defined(CONFIG_SND_SOC_ADAU1361_MODULE)
1970c48d767569ec6449277bf4248295b4c165b57159Cliff Cai	{
1971c48d767569ec6449277bf4248295b4c165b57159Cliff Cai		I2C_BOARD_INFO("adau1361", 0x38),
1972c48d767569ec6449277bf4248295b4c165b57159Cliff Cai	},
1973c48d767569ec6449277bf4248295b4c165b57159Cliff Cai#endif
19741f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE)
19751f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich	{
19761f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich		I2C_BOARD_INFO("ad5258", 0x18),
19771f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich	},
19781f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich#endif
197929bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai#if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE)
198029bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai	{
198129bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai		I2C_BOARD_INFO("ssm2602", 0x1b),
198229bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai	},
198329bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai#endif
1984f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1985f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	{
1986f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		I2C_BOARD_INFO("ad5398", 0xC),
1987f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = (void *)&ad5398_i2c_platform_data,
1988f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1989f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
199072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
199172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	{
199272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		I2C_BOARD_INFO("adp8860", 0x2A),
199372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.platform_data = (void *)&adp8860_pdata,
199472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	},
199572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#endif
19963cbcb1616c071543525e2ef2fab439848c8bac88Cliff Cai#if defined(CONFIG_SND_SOC_ADAU1373) || defined(CONFIG_SND_SOC_ADAU1373_MODULE)
19973cbcb1616c071543525e2ef2fab439848c8bac88Cliff Cai	{
19983cbcb1616c071543525e2ef2fab439848c8bac88Cliff Cai		I2C_BOARD_INFO("adau1373", 0x1A),
19993cbcb1616c071543525e2ef2fab439848c8bac88Cliff Cai	},
20003cbcb1616c071543525e2ef2fab439848c8bac88Cliff Cai#endif
200181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu};
200281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu
20031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2004df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2005df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport0_uart_resources[] = {
2006df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2007df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT0_TCR1,
2008df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT0_MRCS3+4,
2009df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
2010df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2011df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2012df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_RX,
2013df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_RX+1,
2014df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2015df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2016df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2017df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_ERROR,
2018df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_ERROR,
2019df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2020df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2021df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2022df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
2023df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangunsigned short bfin_sport0_peripherals[] = {
2024df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
2025df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
2026df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2027df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
20281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport0_uart_device = {
20291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
20301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
2031df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
2032df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport0_uart_resources,
2033df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
2034df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport0_peripherals, /* Passed to driver */
2035df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2036df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2037df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2038df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2039df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport1_uart_resources[] = {
2040df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2041df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT1_TCR1,
2042df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT1_MRCS3+4,
2043df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
2044df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2045df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2046df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_RX,
2047df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_RX+1,
2048df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2049df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2050df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2051df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_ERROR,
2052df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_ERROR,
2053df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2054df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2055df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2056df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
2057df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangunsigned short bfin_sport1_peripherals[] = {
2058df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
2059df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
20601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
20611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
20621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport1_uart_device = {
20631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
20641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
2065df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
2066df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport1_uart_resources,
2067df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
2068df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport1_peripherals, /* Passed to driver */
2069df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
20701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
20711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2072df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
20731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2074c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
20752c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define CF_IDE_NAND_CARD_USE_HDD_INTERFACE
20762c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich/* #define CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE */
2077c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
20782c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#ifdef CF_IDE_NAND_CARD_USE_HDD_INTERFACE
20792c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define PATA_INT	IRQ_PF5
2080c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct pata_platform_info bfin_pata_platform_data = {
2081c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.ioport_shift = 1,
208264e5c51291ec760e7fdb7628fe63690d1dc6aaf7Mike Frysinger	.irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
2083c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
2084c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2085c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_pata_resources[] = {
2086c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2087c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x20314020,
2088c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031403F,
2089c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
2090c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2091c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2092c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x2031401C,
2093c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031401F,
2094c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
2095c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2096c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2097c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = PATA_INT,
2098c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = PATA_INT,
2099c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
2100c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2101c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
21022c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#elif defined(CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE)
21032c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct pata_platform_info bfin_pata_platform_data = {
21042c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	.ioport_shift = 0,
21052c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
2106648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich/* CompactFlash Storage Card Memory Mapped Adressing
2107648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich * /REG = A11 = 1
2108648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich */
21092c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct resource bfin_pata_resources[] = {
21102c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
2111648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x20211800,
2112648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x20211807,
21132c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
21142c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
21152c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
2116648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x2021180E,	/* Device Ctl */
2117648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x2021180E,
21182c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
21192c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
21202c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
21212c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#endif
2122c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2123c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_pata_device = {
2124c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "pata_platform",
2125c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = -1,
2126c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pata_resources),
2127c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_pata_resources,
2128c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.dev = {
2129c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_pata_platform_data,
2130c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	}
2131c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
2132c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
2133c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
213414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
213514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich{
213614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_085, 250000000),
213714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_090, 376000000),
213814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_095, 426000000),
213914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_100, 426000000),
214014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_105, 476000000),
214114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_110, 476000000),
214214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_115, 476000000),
214314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_120, 500000000),
214414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_125, 533000000),
214514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_130, 600000000),
214614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
214714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
214814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
214914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
215014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
215114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.vr_settling_time = 25 /* us */,
215214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
215314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
215414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct platform_device bfin_dpmc = {
215514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.name = "bfin dpmc",
215614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.dev = {
215714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
215814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	},
215914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
216014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
2161336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2162336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Songstatic struct platform_device bfin_i2s = {
2163336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.name = "bfin-i2s",
2164336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
2165336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	/* TODO: add platform data here */
2166336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song};
2167336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2168336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
21698312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
21708312440e05ea74feabc648ad8f36c823af4ddd8eBarry Songstatic struct platform_device bfin_tdm = {
21718312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	.name = "bfin-tdm",
2172336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
2173336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	/* TODO: add platform data here */
2174336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song};
2175336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2176336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
2177336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2178336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Songstatic struct platform_device bfin_ac97 = {
2179336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.name = "bfin-ac97",
2180336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
21818312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	/* TODO: add platform data here */
21828312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song};
21838312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#endif
21848312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song
2185f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2186f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#define REGULATOR_ADP122        "adp122"
2187f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#define REGULATOR_ADP150        "adp150"
2188f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2189f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_consumer_supply adp122_consumers = {
2190f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.supply = REGULATOR_ADP122,
2191f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2192f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2193f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_consumer_supply adp150_consumers = {
2194f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.supply = REGULATOR_ADP150,
2195f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2196f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2197f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_init_data adp_switch_regulator_data[] = {
2198f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	{
2199f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.constraints = {
2200f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.name = REGULATOR_ADP122,
2201f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.valid_ops_mask = REGULATOR_CHANGE_STATUS,
22025f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.min_uA = 0,
22035f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.max_uA = 300000,
2204f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		},
2205f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.num_consumer_supplies = 1,	/* only 1 */
2206f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.consumer_supplies     = &adp122_consumers,
2207f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.driver_data	       = (void *)GPIO_PF2, /* gpio port only */
2208f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2209f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	{
2210f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.constraints = {
2211f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.name = REGULATOR_ADP150,
2212f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.valid_ops_mask = REGULATOR_CHANGE_STATUS,
22135f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.min_uA = 0,
22145f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.max_uA = 150000,
2215f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		},
2216f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.num_consumer_supplies = 1,	/* only 1 */
2217f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.consumer_supplies     = &adp150_consumers,
2218f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.driver_data	       = (void *)GPIO_PF3, /* gpio port only */
2219f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2220f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2221f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2222f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct adp_switch_platform_data adp_switch_pdata = {
2223f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.regulator_num = ARRAY_SIZE(adp_switch_regulator_data),
2224f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.regulator_data = adp_switch_regulator_data,
2225f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2226f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2227f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp_switch_device = {
2228f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "adp_switch",
2229f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 0,
2230f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2231f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp_switch_pdata,
2232f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2233f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2234f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2235f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2236f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2237f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_bulk_data adp122_bulk_data = {
2238f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supply = REGULATOR_ADP122,
2239f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2240f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2241f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_userspace_consumer_data adp122_userspace_comsumer_data = {
2242f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = REGULATOR_ADP122,
2243f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.num_supplies = 1,
2244f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supplies = &adp122_bulk_data,
2245f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2246f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2247f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp122_userspace_consumer_device = {
2248f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "reg-userspace-consumer",
2249f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 0,
2250f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2251f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp122_userspace_comsumer_data,
2252f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2253f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2254f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2255f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_bulk_data adp150_bulk_data = {
2256f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supply = REGULATOR_ADP150,
2257f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2258f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2259f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_userspace_consumer_data adp150_userspace_comsumer_data = {
2260f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = REGULATOR_ADP150,
2261f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.num_supplies = 1,
2262f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supplies = &adp150_bulk_data,
2263f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2264f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2265f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp150_userspace_consumer_device = {
2266f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "reg-userspace-consumer",
2267f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 1,
2268f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2269f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp150_userspace_comsumer_data,
2270f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2271f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2272f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2273f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2274f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2275f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
22761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device *stamp_devices[] __initdata = {
227714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
227814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	&bfin_dpmc,
227914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
22801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
22811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_pcmcia_cf_device,
22821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
22851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&rtc_device,
22861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
22891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&sl811_hcd_device,
22901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
22931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&isp1362_hcd_device,
22941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22963f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
22973f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	&bfin_isp1760_device,
22983f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#endif
22993f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich
23001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
23011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&smc91x_device,
23021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2304f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
2305f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	&dm9000_device,
2306f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#endif
2307f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
2308706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
2309706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	&bfin_can_device,
2310706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#endif
2311706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
23121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
231365319628db2c7a630daadfeec4d371aaca788482Graf Yang	&bfin_mii_bus,
23141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_mac_device,
23151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
23181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&net2272_bfin_device,
23191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
2322c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_spi0_device,
23231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23251e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
23261e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi0_device,
23271e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi1_device,
23281e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif
23291e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
23301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
23311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_fb_device,
23321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23342043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
23352043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	&bfin_lq035q1_device,
23362043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
23372043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
23381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
23396bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
23406bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart0_device,
23416bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
23426bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
23436bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart1_device,
23446bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
23451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23475be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
234842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
234942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
235042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
235142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR1
235242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir1_device,
235342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
23545be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
23555be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
23561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
23571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&i2c_bfin_twi_device,
23581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2361df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
23621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport0_uart_device,
2363df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2364df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
23651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport1_uart_device,
23661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2367df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2368c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2369c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
2370c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_pata_device,
2371c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
23722463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
23732463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
23742463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	&bfin_device_gpiokeys,
23752463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#endif
2376cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger
2377fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
2378fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	&bfin_async_nand_device,
2379fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
2380fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
2381793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
2382de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	&stamp_flash_device,
2383793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#endif
23848312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song
2385336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2386336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	&bfin_i2s,
2387336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2388336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
23898312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
23908312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	&bfin_tdm,
23918312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#endif
2392336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
2393336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2394336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	&bfin_ac97,
2395336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2396f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
2397f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
2398f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
2399f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	&ad5398_virt_consumer_device,
2400f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2401f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2402f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2403f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	&ad5398_userspace_consumer_device,
2404f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2405f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2406f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2407f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2408f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp_switch_device,
2409f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2410f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2411f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp122_userspace_consumer_device,
2412f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp150_userspace_consumer_device,
2413f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2414f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
24151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
24161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
24171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic int __init stamp_init(void)
24181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
2419b85d858b40a28107ee50ca9e89f57c0e35c251c6Harvey Harrison	printk(KERN_INFO "%s(): registering device resources\n", __func__);
2420fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	bfin_plat_nand_init();
24210531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger	adf702x_mac_init();
24221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
2423df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	i2c_register_board_info(0, bfin_i2c_board_info,
2424df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang				ARRAY_SIZE(bfin_i2c_board_info));
24255bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
2426c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
24271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	return 0;
24281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
24291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
24301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuarch_initcall(stamp_init);
2431c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2432c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2433c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangstatic struct platform_device *stamp_early_devices[] __initdata = {
2434c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
2435c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
2436c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart0_device,
2437c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2438c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
2439c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart1_device,
2440c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2441c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2442c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2443c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
2444c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2445c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport0_uart_device,
2446c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2447c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2448c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport1_uart_device,
2449c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2450c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2451c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang};
2452c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2453c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangvoid __init native_machine_early_platform_add_devices(void)
2454c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang{
2455c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	printk(KERN_INFO "register early platform devices\n");
2456c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	early_platform_add_devices(stamp_early_devices,
2457c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang		ARRAY_SIZE(stamp_early_devices));
2458c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang}
2459c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2460c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wuvoid native_machine_restart(char *cmd)
2461c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu{
2462c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	/* workaround reboot hang when booting from SPI */
2463c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	if ((bfin_read_SYSCR() & 0x7) == 0x3)
2464b52dae3139066765a7d96563e9cd33d9e60efe33Sonic Zhang		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
2465c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu}
2466137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger
2467137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger/*
2468137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger * Currently the MAC address is saved in Flash by U-Boot
2469137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger */
2470137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger#define FLASH_MAC	0x203f0000
24719862cc5278aabd82230369a142c817e37a42caa3Mike Frysingervoid bfin_get_ether_addr(char *addr)
2472137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger{
2473137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
2474137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
2475137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger}
24769862cc5278aabd82230369a142c817e37a42caa3Mike FrysingerEXPORT_SYMBOL(bfin_get_ether_addr);
2477