stamp.c revision ef56609f9c7fdf5baa9d9f86f84a7bd8a717cd25
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,
2671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
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)),
421fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.flags = IORESOURCE_IO,
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
5485b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
549427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
550427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct bfin5xx_spi_chip ad7147_spi_chip_info = {
551427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.enable_dma = 0,
552427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.bits_per_word = 16,
553427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
554427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
5555b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_slider_plat ad7147_spi_slider_plat[] = {
556427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
557427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.start_stage = 0,
558427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.end_stage = 7,
559427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_coord = 128,
560427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
561427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
562427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
5635b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_button_plat ad7147_spi_button_plat[] = {
564427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
565427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_FORWARD,
566427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
567427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x600,
568427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
569427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
570427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_LEFT,
571427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
572427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x500,
573427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
574427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
575427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_MIDDLE,
576427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
577427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x800,
578427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
579427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
580427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_RIGHT,
581427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x100,
582427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
583427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
584427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
585427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_BACK,
586427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x200,
587427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
588427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
589427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
5905b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_platform_data ad7147_spi_platform_data = {
591427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.slider_num = 1,
592427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 5,
5935b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.slider = ad7147_spi_slider_plat,
5945b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.button = ad7147_spi_button_plat,
595427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
596427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFBFF, 0x1FFF, 0, 0x2626, 1600, 1600, 1600, 1600},
597427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xEFFF, 0x1FFF, 0, 0x2626, 1650, 1650, 1650, 1650},
598427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFE, 0, 0x2626, 1650, 1650, 1650, 1650},
599427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFB, 0, 0x2626, 1650, 1650, 1650, 1650},
600427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FEF, 0, 0x2626, 1650, 1650, 1650, 1650},
601427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FBF, 0, 0x2626, 1650, 1650, 1650, 1650},
602427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1EFF, 0, 0x2626, 1650, 1650, 1650, 1650},
603427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1BFF, 0, 0x2626, 1600, 1600, 1600, 1600},
604427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFF7B, 0x3FFF, 0x506,  0x2626, 1100, 1100, 1150, 1150},
605427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDFE, 0x3FFF, 0x606,  0x2626, 1100, 1100, 1150, 1150},
606427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFEBA, 0x1FFF, 0x1400, 0x2626, 1200, 1200, 1300, 1300},
607427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFEF, 0x1FFF, 0x0,    0x2626, 1100, 1100, 1150, 1150},
608427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
609427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x2B2, 0x0, 0x3233, 0x819, 0x832, 0xCFF, 0xCFF, 0x0},
610427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
611427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
612427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
6135b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
614427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
6155b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_button_plat ad7142_i2c_button_plat[] = {
616427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
617427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_1,
618427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
619427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x1,
620427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
621427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
622427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_2,
623427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
624427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x2,
625427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
626427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
627427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_3,
628427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
629427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x4,
630427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
631427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
632427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_4,
633427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x0,
634427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x8,
635427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
636427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
6375b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysingerstatic struct ad714x_platform_data ad7142_i2c_platform_data = {
638427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 4,
6395b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger	.button = ad7142_i2c_button_plat,
640427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
641427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		/* fixme: figure out right setting for all comoponent according
642427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		 * to hardware feature of EVAL-AD7142EB board */
643427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xE7FF, 0x3FFF, 0x0005, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
644427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDBF, 0x3FFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
645427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x2DFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
646427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x37BF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
647427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
648427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
649427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
650427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
651427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
652427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
653427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
654427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
655427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
656427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x0B2, 0x0, 0x690, 0x664, 0x290F, 0xF, 0xF, 0x0},
657427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
658427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
659427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
660f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
661f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yangstatic struct bfin5xx_spi_chip ad2s90_spi_chip_info = {
662f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	.enable_dma = 0,
663f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	.bits_per_word = 16,
664f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang};
665f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#endif
666f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang
667df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
668df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yangunsigned short ad2s120x_platform_data[] = {
669df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	/* used as SAMPLE and RDVEL */
670df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	GPIO_PF5, GPIO_PF6, 0
671df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang};
672df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
673df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yangstatic struct bfin5xx_spi_chip ad2s120x_spi_chip_info = {
674df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	.enable_dma = 0,
675df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	.bits_per_word = 16,
676df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang};
677df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#endif
678df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
679848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
680848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yangunsigned short ad2s1210_platform_data[] = {
681848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	/* use as SAMPLE, A0, A1 */
682848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	GPIO_PF7, GPIO_PF8, GPIO_PF9,
683848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang# if defined(CONFIG_AD2S1210_GPIO_INPUT) || defined(CONFIG_AD2S1210_GPIO_OUTPUT)
684848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	/* the RES0 and RES1 pins */
685848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	GPIO_PF4, GPIO_PF5,
686848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang# endif
687848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	0,
688848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang};
689848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
690848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yangstatic struct bfin5xx_spi_chip ad2s1210_spi_chip_info = {
691848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	.enable_dma = 0,
692848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	.bits_per_word = 8,
693848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang};
694848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#endif
695848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
696f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
697f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#define MMC_SPI_CARD_DETECT_INT IRQ_PF5
698f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
699f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic int bfin_mmc_spi_init(struct device *dev,
700f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	irqreturn_t (*detect_int)(int, void *), void *data)
701f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
702f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	return request_irq(MMC_SPI_CARD_DETECT_INT, detect_int,
703f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		IRQF_TRIGGER_FALLING, "mmc-spi-detect", data);
704f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
705f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
706f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic void bfin_mmc_spi_exit(struct device *dev, void *data)
707f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
708f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	free_irq(MMC_SPI_CARD_DETECT_INT, data);
709f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
710f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
711f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct mmc_spi_platform_data bfin_mmc_spi_pdata = {
712f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.init = bfin_mmc_spi_init,
713f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.exit = bfin_mmc_spi_exit,
714f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.detect_delay = 100, /* msecs */
715f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
716f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
717f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct bfin5xx_spi_chip  mmc_spi_chip_info = {
718f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.enable_dma = 0,
719f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.bits_per_word = 8,
720e68d1ebc30e033612bb69f949da654d72beae57dYi Li	.pio_interrupt = 0,
721f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
722f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
723f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
7241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
72546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7877.h>
7261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_ad7877_chip_info = {
7271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
7281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
7291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic const struct ad7877_platform_data bfin_ad7877_ts_info = {
7321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.model			= 7877,
7331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.vref_delay_usecs	= 50,	/* internal, no capacitor */
7341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.x_plate_ohms		= 419,
7351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.y_plate_ohms		= 486,
7361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_max		= 1000,
7371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_min		= 0,
7386ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.stopacq_polarity	= 1,
7396ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.first_conversion_delay	= 3,
7406ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.acquisition_time	= 1,
7416ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.averaging		= 1,
7426ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.pen_down_acc_interval	= 1,
7431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
74646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
74746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7879.h>
74846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerichstatic const struct ad7879_platform_data bfin_ad7879_ts_info = {
74946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.model			= 7879,	/* Model = AD7879 */
75046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.x_plate_ohms		= 620,	/* 620 Ohm from the touch datasheet */
75146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_max		= 10000,
75246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_min		= 0,
7536ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.first_conversion_delay	= 3,	/* wait 512us before do a first conversion */
7546ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.acquisition_time	= 1,	/* 4us acquisition time per sample */
75546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.median			= 2,	/* do 8 measurements */
7566ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.averaging		= 1,	/* take the average of 4 middle samples */
7576ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.pen_down_acc_interval	= 255,	/* 9.4 ms */
758244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_export		= 1,	/* Export GPIO to gpiolib */
759244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_base		= -1,	/* Dynamic allocation */
76046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich};
76146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
76246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich
763ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE)
76457af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#include <linux/input/adxl34x.h>
765ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerichstatic const struct adxl34x_platform_data adxl34x_info = {
766ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.x_axis_offset = 0,
767ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.y_axis_offset = 0,
768ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.z_axis_offset = 0,
769ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_threshold = 0x31,
770ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_duration = 0x10,
771ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_latency = 0x60,
772ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_window = 0xF0,
773ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN,
774ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.act_axis_control = 0xFF,
775ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.activity_threshold = 5,
776ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_threshold = 3,
777ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_time = 4,
778ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_threshold = 0x7,
779ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_time = 0x20,
780ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_rate = 0x8,
781ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_range = ADXL_FULL_RES,
782ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
783ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_type = EV_ABS,
784ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_x = ABS_X,		/* EV_REL */
785ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_y = ABS_Y,		/* EV_REL */
786ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_z = ABS_Z,		/* EV_REL */
787ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
78857af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.ev_code_tap = {BTN_TOUCH, BTN_TOUCH, BTN_TOUCH}, /* EV_KEY x,y,z */
789ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
790ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_ff = KEY_F,*/		/* EV_KEY */
791ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_act_inactivity = KEY_A,*/	/* EV_KEY */
792ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
793ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.fifo_mode = ADXL_FIFO_STREAM,
7946ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.orientation_enable = ADXL_EN_ORIENTATION_3D,
7956ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.deadzone_angle = ADXL_DEADZONE_ANGLE_10p8,
7966ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.divisor_length =  ADXL_LP_FILTER_DIVISOR_16,
7976ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	/* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
7986ba255f4a8a0785ea8a2b052837a7b91eeac1bb4Michael Hennerich	.ev_codes_orient_3d = {BTN_Z, BTN_Y, BTN_X, BTN_A, BTN_B, BTN_C},
799ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich};
800ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
801ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
802f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
803f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerichstatic struct bfin5xx_spi_chip spi_ad7879_chip_info = {
804f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.enable_dma = 0,
805f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.bits_per_word = 16,
806f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich};
807f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
808f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich
8096e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
8106e668936db12550ab5a6a758f236140101e5a644Michael Hennerichstatic struct bfin5xx_spi_chip spidev_chip_info = {
8116e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.enable_dma = 0,
8126e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.bits_per_word = 8,
8136e668936db12550ab5a6a758f236140101e5a644Michael Hennerich};
8146e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
8156e668936db12550ab5a6a758f236140101e5a644Michael Hennerich
8162043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
8172043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin5xx_spi_chip lq035q1_spi_chip_info = {
8182043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.enable_dma	= 0,
8192043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.bits_per_word	= 8,
8202043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
8212043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
8222043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
82385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
82485a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerichstatic struct bfin5xx_spi_chip enc28j60_spi_chip_info = {
82585a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.enable_dma	= 1,
82685a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.bits_per_word	= 8,
82785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.cs_gpio = GPIO_PF10,
82885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich};
82985a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
83085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich
831efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
832efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic struct bfin5xx_spi_chip adf7021_spi_chip_info = {
833efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.bits_per_word = 16,
834efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.cs_gpio = GPIO_PF10,
835efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
836efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
837efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#include <linux/spi/adf702x.h>
838efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#define TXREG 0x0160A470
839efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic const u32 adf7021_regs[] = {
840efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x09608FA0,
841efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00575011,
842efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00A7F092,
843efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x2B141563,
844efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x81F29E94,
845efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00003155,
846efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x050A4F66,
847efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000007,
848efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000008,
849efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x000231E9,
850efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x3296354A,
851efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x891A2B3B,
852efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x00000D9C,
853efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000D,
854efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000E,
855efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	0x0000000F,
856efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
857efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
858efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerichstatic struct adf702x_platform_data adf7021_platform_data = {
859efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.regs_base = (void *)SPORT1_TCR1,
860efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.dma_ch_rx = CH_SPORT1_RX,
861efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.dma_ch_tx = CH_SPORT1_TX,
862efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.irq_sport_err = IRQ_SPORT1_ERROR,
863efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.gpio_int_rfs = GPIO_PF8,
864efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.pin_req = {P_SPORT1_DTPRI, P_SPORT1_RFS, P_SPORT1_DRPRI,
865efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich			P_SPORT1_RSCLK, P_SPORT1_TSCLK, 0},
866efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.adf702x_model = MODEL_ADF7021,
867efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.adf702x_regs = adf7021_regs,
868efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	.tx_reg = TXREG,
869efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich};
8700531c467da6438f278e9420a30f73eea2fdb73bdMike Frysingerstatic inline void adf702x_mac_init(void)
8710531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger{
8720531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger	random_ether_addr(adf7021_platform_data.mac_addr);
8730531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger}
8740531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger#else
8750531c467da6438f278e9420a30f73eea2fdb73bdMike Frysingerstatic inline void adf702x_mac_init(void) {}
876efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#endif
877efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich
878fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
879fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#include <linux/spi/ads7846.h>
880fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic struct bfin5xx_spi_chip ad7873_spi_chip_info = {
881fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.bits_per_word	= 8,
882fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich};
883fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
884fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic int ads7873_get_pendown_state(void)
885fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich{
886fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	return gpio_get_value(GPIO_PF6);
887fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich}
888fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
889fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerichstatic struct ads7846_platform_data __initdata ad7873_pdata = {
890fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.model		= 7873,		/* AD7873 */
891fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.x_max		= 0xfff,
892fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.y_max		= 0xfff,
893fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.x_plate_ohms	= 620,
894fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_max	= 1,
895fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_rep	= 0,
896fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.debounce_tol	= (~0),
897fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	.get_pendown_state = ads7873_get_pendown_state,
898fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich};
899fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#endif
900fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich
9018e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
9028e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
903ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
904ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct mtd_partition bfin_spi_dataflash_partitions[] = {
905ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	{
906ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "bootloader(spi)",
907ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = 0x00040000,
908ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = 0,
909ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.mask_flags = MTD_CAP_ROM
910ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
911ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "linux kernel(spi)",
9126ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size = 0x180000,
913ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
914ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
915ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "file system(spi)",
916ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = MTDPART_SIZ_FULL,
917ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
918ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}
919ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
920ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
921ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct flash_platform_data bfin_spi_dataflash_data = {
922ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.name = "SPI Dataflash",
923ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.parts = bfin_spi_dataflash_partitions,
924ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.nr_parts = ARRAY_SIZE(bfin_spi_dataflash_partitions),
925ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
926ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
9278e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich/* DataFlash chip */
9288e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerichstatic struct bfin5xx_spi_chip data_flash_chip_info = {
9298e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
9308e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.bits_per_word = 8,
9318e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich};
9328e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
9338e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich
93457af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
93557af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerichstatic struct bfin5xx_spi_chip spi_adxl34x_chip_info = {
93657af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
93757af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	.bits_per_word = 8,
93857af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich};
93957af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#endif
94057af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich
9411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct spi_board_info bfin_spi_board_info[] __initdata = {
9421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) \
9431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_MTD_M25P80_MODULE)
9441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		/* the modalias must be the same as spi device driver name */
9461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "m25p80", /* Name of spi_driver for this device */
9471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
948c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
9491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
9501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &bfin_spi_flash_data,
9511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_flash_chip_info,
9521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
9531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
9558e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
9568e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
9578e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	{	/* DataFlash chip */
9588e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.modalias = "mtd_dataflash",
959ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.max_speed_hz = 33250000,     /* max spi clock (SCK) speed in HZ */
9608e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.bus_num = 0, /* Framework bus number */
9618e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
962ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.platform_data = &bfin_spi_dataflash_data,
9638e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.controller_data = &data_flash_chip_info,
9648e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.mode = SPI_MODE_3,
9658e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	},
9668e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
967a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger#if defined(CONFIG_BFIN_SPI_ADC) \
968a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger	|| defined(CONFIG_BFIN_SPI_ADC_MODULE)
9691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
9711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 6250000,     /* max spi clock (SCK) speed in HZ */
972c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
9731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. */
9741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = NULL, /* No spi_driver specific config */
9751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_adc_chip_info,
9761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
9781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
979d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
980d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song	|| defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
9811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
982d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song		.modalias = "ad183x",
9831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
984c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
9858312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song		.chip_select = 4,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */
986d40bd71f88e7be193ce4feb4b92572c70024b9c2Barry Song		.platform_data = "ad1836", /* only includes chip name for the moment */
9871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &ad1836_spi_chip_info,
9888312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song		.mode = SPI_MODE_3,
9891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
991d4b834c13940b5433d16ae3605794b3d74804348Barry Song
9923b82790c12f8122d3df07cc387d2d74355e54c75Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
993d4b834c13940b5433d16ae3605794b3d74804348Barry Song	{
9943b82790c12f8122d3df07cc387d2d74355e54c75Barry Song		.modalias = "ad193x",
995d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
996d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.bus_num = 0,
99708a54bffaf7d5dc9391518323234ce9f9ea4be8eBarry Song		.chip_select = 5,
998d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.controller_data = &ad1938_spi_chip_info,
999d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.mode = SPI_MODE_3,
1000d4b834c13940b5433d16ae3605794b3d74804348Barry Song	},
1001d4b834c13940b5433d16ae3605794b3d74804348Barry Song#endif
1002d4b834c13940b5433d16ae3605794b3d74804348Barry Song
10035b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_SPI) || defined(CONFIG_INPUT_AD714X_SPI_MODULE)
1004427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
1005427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.modalias = "ad714x_captouch",
1006427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_speed_hz = 1000000,     /* max spi clock (SCK) speed in HZ */
1007427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.irq = IRQ_PF4,
1008427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.bus_num = 0,
1009427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.chip_select = 5,
1010427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.mode = SPI_MODE_3,
10115b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger		.platform_data = &ad7147_spi_platform_data,
1012427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.controller_data = &ad7147_spi_chip_info,
1013427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
1014427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
1015427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
1016f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
1017f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	{
1018f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.modalias = "ad2s90",
1019f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.bus_num = 0,
1020f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.chip_select = 3,            /* change it for your board */
1021f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.platform_data = NULL,
1022f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang		.controller_data = &ad2s90_spi_chip_info,
1023f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang	},
1024f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang#endif
1025f5f9531c7e588ee62e3aeddb14613ea80e7c2ca2Graf Yang
1026df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
1027df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	{
1028df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.modalias = "ad2s120x",
1029df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.bus_num = 0,
1030df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.chip_select = 4,            /* CS, change it for your board */
1031df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.platform_data = ad2s120x_platform_data,
1032df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang		.controller_data = &ad2s120x_spi_chip_info,
1033df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang	},
1034df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang#endif
1035df6a949b4666780969fd90a2f3ac3db3b62552d6Graf Yang
1036848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
1037848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	{
1038848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.modalias = "ad2s1210",
1039848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.max_speed_hz = 8192000,
1040848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.bus_num = 0,
1041848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.chip_select = 4,            /* CS, change it for your board */
1042848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.platform_data = ad2s1210_platform_data,
1043848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang		.controller_data = &ad2s1210_spi_chip_info,
1044848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang	},
1045848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang#endif
1046848c51ccee5c4d51b1dc1a029508cfbb73f8c260Graf Yang
1047f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
1048f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	{
1049f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.modalias = "mmc_spi",
1050f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
1051f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.bus_num = 0,
1052f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.chip_select = 4,
1053f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.platform_data = &bfin_mmc_spi_pdata,
1054f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.controller_data = &mmc_spi_chip_info,
1055f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.mode = SPI_MODE_3,
1056f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	},
1057f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
10581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
10591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
10601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias		= "ad7877",
10611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data		= &bfin_ad7877_ts_info,
10621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.irq			= IRQ_PF6,
10631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz	= 12500000,     /* max spi clock (SCK) speed in HZ */
1064c7d4896621d42c84956911afd5f10a5d317c781aMichael Hennerich		.bus_num	= 0,
10651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select  = 1,
10661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_ad7877_chip_info,
10671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
10681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1069f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
107046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	{
107146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.modalias = "ad7879",
107246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.platform_data = &bfin_ad7879_ts_info,
107346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.irq = IRQ_PF7,
107446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
107546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.bus_num = 0,
107646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 1,
107746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.controller_data = &spi_ad7879_chip_info,
107846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
107946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	},
108046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
10816e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
10826e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	{
10836e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.modalias = "spidev",
10846e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
10856e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.bus_num = 0,
10866e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.chip_select = 1,
10876e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.controller_data = &spidev_chip_info,
10886e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	},
10896e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
10902043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
10912043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
10922043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.modalias = "bfin-lq035q1-spi",
10932043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
10942043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.bus_num = 0,
109546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 2,
10962043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.controller_data = &lq035q1_spi_chip_info,
10972043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
10982043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
10992043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
110085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
110185a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	{
110285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.modalias = "enc28j60",
110385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
110485a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.irq = IRQ_PF6,
110585a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.bus_num = 0,
110685a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.chip_select = 0,	/* GPIO controlled SSEL */
110785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.controller_data = &enc28j60_spi_chip_info,
110885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.mode = SPI_MODE_0,
110985a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	},
111085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
111157af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_SPI) || defined(CONFIG_INPUT_ADXL34X_SPI_MODULE)
111257af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	{
111357af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.modalias	= "adxl34x",
111457af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.platform_data	= &adxl34x_info,
111557af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.irq		= IRQ_PF6,
111657af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.max_speed_hz	= 5000000,    /* max spi clock (SCK) speed in HZ */
111757af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.bus_num	= 0,
111857af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.chip_select	= 2,
111957af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.controller_data = &spi_adxl34x_chip_info,
112057af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich		.mode = SPI_MODE_3,
112157af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich	},
112257af8edf3f0346aa0f942f245acbfe122bb75707Michael Hennerich#endif
1123efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#if defined(CONFIG_ADF702X) || defined(CONFIG_ADF702X_MODULE)
1124efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	{
1125efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.modalias = "adf702x",
1126efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.max_speed_hz = 16000000,     /* max spi clock (SCK) speed in HZ */
1127efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.bus_num = 0,
1128efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.chip_select = 0,	/* GPIO controlled SSEL */
1129efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.controller_data = &adf7021_spi_chip_info,
1130efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.platform_data = &adf7021_platform_data,
1131efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich		.mode = SPI_MODE_0,
1132efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich	},
1133efaf7cd9557712a72b5856af19d701783b654a63Michael Hennerich#endif
1134fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
1135fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	{
1136fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.modalias = "ads7846",
1137fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.max_speed_hz = 2000000,     /* max spi clock (SCK) speed in HZ */
1138fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.bus_num = 0,
1139fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.irq = IRQ_PF6,
1140fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.chip_select = GPIO_PF10 + MAX_CTRL_CS,	/* GPIO controlled SSEL */
1141fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.controller_data = &ad7873_spi_chip_info,
1142fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.platform_data = &ad7873_pdata,
1143fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich		.mode = SPI_MODE_0,
1144fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich	},
1145fe5b25c09873faee44077ee6ff8f23eee61b0fa0Michael Hennerich#endif
11461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11485bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
11491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI controller data */
1150c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct bfin5xx_spi_master bfin_spi0_info = {
11511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_chipselect = 8,
11521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,  /* master has the ability to do dma transfer */
11535d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
11541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1156c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu/* SPI (0) */
1157c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_spi0_resource[] = {
1158c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1159c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = SPI0_REGBASE,
1160c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = SPI0_REGBASE + 0xFF,
1161c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1162c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		},
1163c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1164c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = CH_SPI,
1165c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = CH_SPI,
1166e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.flags = IORESOURCE_DMA,
1167e68d1ebc30e033612bb69f949da654d72beae57dYi Li	},
1168e68d1ebc30e033612bb69f949da654d72beae57dYi Li	[2] = {
1169e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.start = IRQ_SPI,
1170e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.end   = IRQ_SPI,
1171c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1172c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1173c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1174c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1175c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_spi0_device = {
1176c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-spi",
1177c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = 0, /* Bus number */
1178c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
1179c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_spi0_resource,
11801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
1181c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_spi0_info, /* Passed to driver */
11821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
11831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif  /* spi master and devices */
11851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11861e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
11871e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
11881e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai/* SPORT SPI controller data */
11891e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi0_info = {
11901e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
11911e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
11921e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI,
11931e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0},
11941e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
11951e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
11961e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi0_resource[] = {
11971e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
11981e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT0_TCR1,
11991e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT0_TCR1 + 0xFF,
12001e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
12011e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12021e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
12031e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT0_ERROR,
12041e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT0_ERROR,
12051e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
12061e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12071e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12081e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12091e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi0_device = {
12101e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
12111e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 1, /* Bus number */
12121e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi0_resource),
12131e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi0_resource,
12141e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
12151e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi0_info, /* Passed to driver */
12161e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
12171e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12181e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12191e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi1_info = {
12201e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
12211e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
12221e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI,
12231e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0},
12241e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12251e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12261e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi1_resource[] = {
12271e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
12281e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT1_TCR1,
12291e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT1_TCR1 + 0xFF,
12301e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
12311e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12321e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
12331e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT1_ERROR,
12341e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT1_ERROR,
12351e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
12361e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
12371e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12381e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12391e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi1_device = {
12401e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
12411e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 2, /* Bus number */
12421e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi1_resource),
12431e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi1_resource,
12441e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
12451e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi1_info, /* Passed to driver */
12461e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
12471e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
12481e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12491e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif  /* sport spi master and devices */
12501e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
12511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
12521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_fb_device = {
1253c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bf537-lq035",
1254c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1255c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
1256c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
12572043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
12582043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#include <asm/bfin-lq035q1.h>
12592043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12602043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
1261d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
1262d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.ppi_mode = USE_RGB565_16_BIT_PPI,
1263d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.use_bl = 0,	/* let something else control the LCD Blacklight */
1264d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.gpio_bl = GPIO_PF7,
12652043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
12662043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12672043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct resource bfin_lq035q1_resources[] = {
12682043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
12692043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.start = IRQ_PPI_ERROR,
12702043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.end = IRQ_PPI_ERROR,
12712043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.flags = IORESOURCE_IRQ,
12722043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
12732043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
12742043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12752043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct platform_device bfin_lq035q1_device = {
12762043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.name		= "bfin-lq035q1",
12772043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.id		= -1,
1278d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.num_resources	= ARRAY_SIZE(bfin_lq035q1_resources),
1279d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.resource	= bfin_lq035q1_resources,
12802043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.dev		= {
12812043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.platform_data = &bfin_lq035q1_data,
12822043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
12832043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
12842043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
12852043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
12861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
1287233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
12886bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart0_resources[] = {
12891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
12906bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART0_THR,
12916bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART0_GCTL+2,
12921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1293233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	},
12946bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
12956bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_RX,
12966bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_RX+1,
12976bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
12986bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
12996bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13006bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_ERROR,
13016bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_ERROR,
13026bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13036bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13046bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13056bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_TX,
13066bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_TX,
13076bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13086bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13096bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13106bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_RX,
13116bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_RX,
13126bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13136bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13146bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_BFIN_UART0_CTSRTS
13156bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* CTS pin */
13166bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG7,
13176bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG7,
13186bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
13196bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13206bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* RTS pin */
13216bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG6,
13226bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG6,
13236bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
13246bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13256bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
13266bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13276bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13286bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangunsigned short bfin_uart0_peripherals[] = {
13296bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART0_TX, P_UART0_RX, 0
13306bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13316bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13326bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart0_device = {
13336bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.name = "bfin-uart",
13346bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 0,
13356bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
13366bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart0_resources,
13376bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
13386bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
13396bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13406bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
1341233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#endif
1342233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
13436bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart1_resources[] = {
1344233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	{
13456bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART1_THR,
13466bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART1_GCTL+2,
13471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
13481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
13496bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13506bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_RX,
13516bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART1_RX+1,
13526bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13536bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13546bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13556bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_ERROR,
13566bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART1_ERROR,
13576bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
13586bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13596bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13606bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_TX,
13616bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_TX,
13626bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13636bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13646bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
13656bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_RX,
13666bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_RX,
13676bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
13686bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13696bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
13706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
13716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangunsigned short bfin_uart1_peripherals[] = {
13726bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART1_TX, P_UART1_RX, 0
13731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
13741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
13756bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart1_device = {
13761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-uart",
13771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
13786bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart1_resources),
13796bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart1_resources,
13806bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
13816bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart1_peripherals, /* Passed to driver */
13826bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
13831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
13841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
13856bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
13861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
13875be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
13885be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR0
138942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
13905be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
13915be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC00400,
13925be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC004FF,
13935be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
13945be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
139542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
139642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
139742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
139842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
139942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
140042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
140142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
140242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
140342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
140442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
140542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
140642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang
140742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
140842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
140942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 0,
141042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
141142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
141242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
14135be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
14145be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR1
141542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir1_resources[] = {
14165be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
14175be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC02000,
14185be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC020FF,
14195be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
14205be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
142142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
142242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART1_RX,
142342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART1_RX+1,
142442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
142542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
142642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
142742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART1_RX,
142842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART1_RX+1,
142942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
143042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
14315be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
14325be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
143342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir1_device = {
14345be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.name = "bfin_sir",
143542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 1,
143642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir1_resources),
143742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir1_resources,
14385be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
14395be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
144042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
14415be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
14421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
1443c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_twi0_resource[] = {
1444c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1445c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = TWI0_REGBASE,
1446c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = TWI0_REGBASE,
1447c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1448c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1449c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1450c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = IRQ_TWI,
1451c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = IRQ_TWI,
1452c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1453c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1454c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1455c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
14561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device i2c_bfin_twi_device = {
14571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "i2c-bfin-twi",
14581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1459c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_twi0_resource),
1460c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_twi0_resource,
14611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
14621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
14631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
146451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
146551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = {
146651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[0]	 = KEY_GRAVE,
146751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[1]	 = KEY_1,
146851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[2]	 = KEY_2,
146951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[3]	 = KEY_3,
147051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[4]	 = KEY_4,
147151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[5]	 = KEY_5,
147251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[6]	 = KEY_6,
147351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[7]	 = KEY_7,
147451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[8]	 = KEY_8,
147551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[9]	 = KEY_9,
147651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[10]	 = KEY_0,
147751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[11]	 = KEY_MINUS,
147851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[12]	 = KEY_EQUAL,
147951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[13]	 = KEY_BACKSLASH,
148051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[15]	 = KEY_KP0,
148151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[16]	 = KEY_Q,
148251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[17]	 = KEY_W,
148351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[18]	 = KEY_E,
148451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[19]	 = KEY_R,
148551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[20]	 = KEY_T,
148651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[21]	 = KEY_Y,
148751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[22]	 = KEY_U,
148851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[23]	 = KEY_I,
148951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[24]	 = KEY_O,
149051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[25]	 = KEY_P,
149151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[26]	 = KEY_LEFTBRACE,
149251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[27]	 = KEY_RIGHTBRACE,
149351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[29]	 = KEY_KP1,
149451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[30]	 = KEY_KP2,
149551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[31]	 = KEY_KP3,
149651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[32]	 = KEY_A,
149751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[33]	 = KEY_S,
149851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[34]	 = KEY_D,
149951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[35]	 = KEY_F,
150051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[36]	 = KEY_G,
150151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[37]	 = KEY_H,
150251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[38]	 = KEY_J,
150351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[39]	 = KEY_K,
150451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[40]	 = KEY_L,
150551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[41]	 = KEY_SEMICOLON,
150651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[42]	 = KEY_APOSTROPHE,
150751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[43]	 = KEY_BACKSLASH,
150851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[45]	 = KEY_KP4,
150951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[46]	 = KEY_KP5,
151051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[47]	 = KEY_KP6,
151151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[48]	 = KEY_102ND,
151251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[49]	 = KEY_Z,
151351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[50]	 = KEY_X,
151451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[51]	 = KEY_C,
151551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[52]	 = KEY_V,
151651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[53]	 = KEY_B,
151751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[54]	 = KEY_N,
151851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[55]	 = KEY_M,
151951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[56]	 = KEY_COMMA,
152051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[57]	 = KEY_DOT,
152151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[58]	 = KEY_SLASH,
152251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[60]	 = KEY_KPDOT,
152351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[61]	 = KEY_KP7,
152451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[62]	 = KEY_KP8,
152551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[63]	 = KEY_KP9,
152651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[64]	 = KEY_SPACE,
152751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[65]	 = KEY_BACKSPACE,
152851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[66]	 = KEY_TAB,
152951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[67]	 = KEY_KPENTER,
153051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[68]	 = KEY_ENTER,
153151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[69]	 = KEY_ESC,
153251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[70]	 = KEY_DELETE,
153351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[74]	 = KEY_KPMINUS,
153451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[76]	 = KEY_UP,
153551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[77]	 = KEY_DOWN,
153651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[78]	 = KEY_RIGHT,
153751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[79]	 = KEY_LEFT,
153851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
153951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
154051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic struct adp5588_kpad_platform_data adp5588_kpad_data = {
154151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.rows		= 8,
154251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.cols		= 10,
154351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymap		= adp5588_keymap,
154451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5588_keymap),
154551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.repeat		= 0,
154651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
154751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
154851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
15493ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
15503ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#include <linux/mfd/adp5520.h>
15513ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15523ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
15533ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Backlight Data
15543ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
15553ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15561d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_backlight_platform_data adp5520_backlight_data = {
15571d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_in		= ADP5520_FADE_T_1200ms,
15581d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_out		= ADP5520_FADE_T_1200ms,
15591d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_led_law		= ADP5520_BL_LAW_LINEAR,
15601d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.en_ambl_sens		= 1,
15611d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.abml_filt		= ADP5520_BL_AMBL_FILT_640ms,
15621d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l1_daylight_max	= ADP5520_BL_CUR_mA(15),
15631d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l1_daylight_dim	= ADP5520_BL_CUR_mA(0),
15641d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_office_max		= ADP5520_BL_CUR_mA(7),
15651d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_office_dim		= ADP5520_BL_CUR_mA(0),
15661d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_dark_max		= ADP5520_BL_CUR_mA(3),
15671d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_dark_dim		= ADP5520_BL_CUR_mA(0),
15681d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_trip		= ADP5520_L2_COMP_CURR_uA(700),
15691d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l2_hyst		= ADP5520_L2_COMP_CURR_uA(50),
15701d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_trip		= ADP5520_L3_COMP_CURR_uA(80),
15711d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.l3_hyst		= ADP5520_L3_COMP_CURR_uA(20),
15723ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
15733ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15743ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
15753ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 LEDs Data
15763ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
15773ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15783ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct led_info adp5520_leds[] = {
15793ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
15803ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led1",
15813ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
15821d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich		.flags = FLAG_ID_ADP5520_LED1_ADP5501_LED0 | ADP5520_LED_OFFT_600ms,
15833ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
15843ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#ifdef ADP5520_EN_ALL_LEDS
15853ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
15863ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led2",
15873ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
15883ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED2_ADP5501_LED1,
15893ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
15903ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
15913ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led3",
15923ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
15933ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED3_ADP5501_LED2,
15943ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
15953ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
15963ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
15973ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
15981d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_leds_platform_data adp5520_leds_data = {
15993ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.num_leds = ARRAY_SIZE(adp5520_leds),
16003ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.leds = adp5520_leds,
16011d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_in = ADP5520_FADE_T_600ms,
16021d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.fade_out = ADP5520_FADE_T_600ms,
16031d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.led_on_time = ADP5520_LED_ONT_600ms,
16043ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16053ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16063ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16073ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 GPIO Data
16083ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16093ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16101d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_gpio_platform_data adp5520_gpio_data = {
16113ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.gpio_start = 50,
16121d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio_en_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
16131d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio_pullup_mask = ADP5520_GPIO_C1 | ADP5520_GPIO_C2 | ADP5520_GPIO_R2,
16143ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16153ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16163ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16173ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 Keypad Data
16183ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16193ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16203ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic const unsigned short adp5520_keymap[ADP5520_KEYMAPSIZE] = {
16211d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 0)]	= KEY_GRAVE,
16221d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 1)]	= KEY_1,
16231d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 2)]	= KEY_2,
16241d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(0, 3)]	= KEY_3,
16251d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 0)]	= KEY_4,
16261d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 1)]	= KEY_5,
16271d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 2)]	= KEY_6,
16281d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(1, 3)]	= KEY_7,
16291d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 0)]	= KEY_8,
16301d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 1)]	= KEY_9,
16311d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 2)]	= KEY_0,
16321d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(2, 3)]	= KEY_MINUS,
16331d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 0)]	= KEY_EQUAL,
16341d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 1)]	= KEY_BACKSLASH,
16351d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 2)]	= KEY_BACKSPACE,
16361d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	[ADP5520_KEY(3, 3)]	= KEY_ENTER,
16371d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich};
16381d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich
16391d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5520_keys_platform_data adp5520_keys_data = {
16401d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.rows_en_mask	= ADP5520_ROW_R3 | ADP5520_ROW_R2 | ADP5520_ROW_R1 | ADP5520_ROW_R0,
16411d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.cols_en_mask	= ADP5520_COL_C3 | ADP5520_COL_C2 | ADP5520_COL_C1 | ADP5520_COL_C0,
16423ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymap		= adp5520_keymap,
16433ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5520_keymap),
16443ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.repeat		= 0,
16453ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16463ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16473ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
16483ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Multifuction Device Init Data
16493ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
16503ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16513ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_platform_data adp5520_pdev_data = {
16521d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.backlight = &adp5520_backlight_data,
16531d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.leds = &adp5520_leds_data,
16541d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.gpio = &adp5520_gpio_data,
16551d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerich	.keys = &adp5520_keys_data,
16563ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
16573ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
16583ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
16593ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
1660ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
16611d23dc89f29b8ceea87bb6656172c13e4c9549deMichael Hennerichstatic struct adp5588_gpio_platform_data adp5588_gpio_data = {
1662ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	.gpio_start = 50,
1663ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	.pullup_dis_mask = 0,
1664ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich};
1665ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#endif
1666ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich
166778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
166878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#include <linux/i2c/adp8870.h>
166978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerichstatic struct led_info adp8870_leds[] = {
167078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	{
167178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.name = "adp8870-led7",
167278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.default_trigger = "none",
167378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.flags = ADP8870_LED_D7 | ADP8870_LED_OFFT_600ms,
167478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	},
167578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich};
167678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
167778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
167878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerichstatic struct adp8870_backlight_platform_data adp8870_pdata = {
167978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_led_assign = ADP8870_BL_D1 | ADP8870_BL_D2 | ADP8870_BL_D3 |
168078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich			 ADP8870_BL_D4 | ADP8870_BL_D5 | ADP8870_BL_D6,	/* 1 = Backlight 0 = Individual LED */
168178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.pwm_assign = 0,				/* 1 = Enables PWM mode */
168278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
168378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_in = ADP8870_FADE_T_1200ms,		/* Backlight Fade-In Timer */
168478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_out = ADP8870_FADE_T_1200ms,		/* Backlight Fade-Out Timer */
168578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.bl_fade_law = ADP8870_FADE_LAW_CUBIC1,		/* fade-on/fade-off transfer characteristic */
168678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
168778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.en_ambl_sens = 1,				/* 1 = enable ambient light sensor */
168878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.abml_filt = ADP8870_BL_AMBL_FILT_320ms,	/* Light sensor filter time */
168978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
169078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l1_daylight_max = ADP8870_BL_CUR_mA(20),	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
169178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l1_daylight_dim = ADP8870_BL_CUR_mA(0),	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
169278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_bright_max = ADP8870_BL_CUR_mA(14),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
169378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_bright_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
169478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_office_max = ADP8870_BL_CUR_mA(6),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
169578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_office_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
169678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_indoor_max = ADP8870_BL_CUR_mA(3),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
169778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_indor_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
169878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_dark_max = ADP8870_BL_CUR_mA(2),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
169978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_dark_dim = ADP8870_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
170078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
170178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_trip = ADP8870_L2_COMP_CURR_uA(710),	/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
170278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l2_hyst = ADP8870_L2_COMP_CURR_uA(73),		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
170378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_trip = ADP8870_L3_COMP_CURR_uA(389),	/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
170478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l3_hyst = ADP8870_L3_COMP_CURR_uA(54),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
170578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_trip = ADP8870_L4_COMP_CURR_uA(167),	/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
170678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l4_hyst = ADP8870_L4_COMP_CURR_uA(16),		/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
170778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_trip = ADP8870_L5_COMP_CURR_uA(43),		/* use L5_COMP_CURR_uA(I) 0 <= I <= 138 uA */
170878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.l5_hyst = ADP8870_L5_COMP_CURR_uA(11),		/* use L6_COMP_CURR_uA(I) 0 <= I <= 138 uA */
170978756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
171078756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.leds = adp8870_leds,
171178756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.num_leds = ARRAY_SIZE(adp8870_leds),
171278756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_law = ADP8870_FADE_LAW_SQUARE,	/* fade-on/fade-off transfer characteristic */
171378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_in = ADP8870_FADE_T_600ms,
171478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_fade_out = ADP8870_FADE_T_600ms,
171578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	.led_on_time = ADP8870_LED_ONT_200ms,
171678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich};
171778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#endif
171878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich
171972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
172072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#include <linux/i2c/adp8860.h>
172172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerichstatic struct led_info adp8860_leds[] = {
172272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	{
172372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.name = "adp8860-led7",
172472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.default_trigger = "none",
172572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.flags = ADP8860_LED_D7 | ADP8860_LED_OFFT_600ms,
172672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	},
172772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich};
172872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
172972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerichstatic struct adp8860_backlight_platform_data adp8860_pdata = {
173072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_led_assign = ADP8860_BL_D1 | ADP8860_BL_D2 | ADP8860_BL_D3 |
173172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich			 ADP8860_BL_D4 | ADP8860_BL_D5 | ADP8860_BL_D6,	/* 1 = Backlight 0 = Individual LED */
173272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
173372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_in = ADP8860_FADE_T_1200ms,		/* Backlight Fade-In Timer */
173472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_out = ADP8860_FADE_T_1200ms,		/* Backlight Fade-Out Timer */
173572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.bl_fade_law = ADP8860_FADE_LAW_CUBIC1,		/* fade-on/fade-off transfer characteristic */
173672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
173772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.en_ambl_sens = 1,				/* 1 = enable ambient light sensor */
173872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.abml_filt = ADP8860_BL_AMBL_FILT_320ms,	/* Light sensor filter time */
173972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
174072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l1_daylight_max = ADP8860_BL_CUR_mA(20),	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
174172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l1_daylight_dim = ADP8860_BL_CUR_mA(0),	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
174272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_office_max = ADP8860_BL_CUR_mA(6),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
174372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_office_dim = ADP8860_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
174472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_dark_max = ADP8860_BL_CUR_mA(2),		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
174572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_dark_dim = ADP8860_BL_CUR_mA(0),		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
174672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
174772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_trip = ADP8860_L2_COMP_CURR_uA(710),	/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
174872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l2_hyst = ADP8860_L2_COMP_CURR_uA(73),		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
174972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_trip = ADP8860_L3_COMP_CURR_uA(43),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
175072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.l3_hyst = ADP8860_L3_COMP_CURR_uA(11),		/* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
175172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
175272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.leds = adp8860_leds,
175372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.num_leds = ARRAY_SIZE(adp8860_leds),
175472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_law = ADP8860_FADE_LAW_SQUARE,	/* fade-on/fade-off transfer characteristic */
175572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_in = ADP8860_FADE_T_600ms,
175672fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_fade_out = ADP8860_FADE_T_600ms,
175772fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	.led_on_time = ADP8860_LED_ONT_200ms,
175872fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich};
175972fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#endif
176072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich
1761f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1762f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_consumer_supply ad5398_consumer = {
1763f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supply = "current",
1764f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1765f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1766f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_init_data ad5398_regulator_data = {
1767f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.constraints = {
1768f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.name = "current range",
1769f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.max_uA = 120000,
1770f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.valid_ops_mask = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS,
1771f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1772f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.num_consumer_supplies = 1,
1773f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.consumer_supplies     = &ad5398_consumer,
1774f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1775f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1776f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct ad5398_platform_data ad5398_i2c_platform_data = {
1777f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.current_bits = 10,
1778f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.current_offset = 4,
1779f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.regulator_data = &ad5398_regulator_data,
1780f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1781f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1782f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
1783f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
1784f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct platform_device ad5398_virt_consumer_device = {
1785f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "reg-virt-consumer",
1786f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.id = 0,
1787f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.dev = {
1788f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = "current", /* Passed to driver */
1789f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1790f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1791f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1792f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
1793f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
1794f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_bulk_data ad5398_bulk_data = {
1795f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supply = "current",
1796f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1797f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1798f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct regulator_userspace_consumer_data ad5398_userspace_comsumer_data = {
1799f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "ad5398",
1800f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.num_supplies = 1,
1801f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.supplies = &ad5398_bulk_data,
1802f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1803f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
1804f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhangstatic struct platform_device ad5398_userspace_consumer_device = {
1805f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.name = "reg-userspace-consumer",
1806f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.id = 0,
1807f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	.dev = {
1808f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = &ad5398_userspace_comsumer_data,
1809f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1810f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang};
1811f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1812f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
1813f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang
181481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wustatic struct i2c_board_info __initdata bfin_i2c_board_info[] = {
18155b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
181681d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
1817427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		I2C_BOARD_INFO("ad7142_captouch", 0x2C),
18184c94c3e09adba9718218d6e3d35b2dfae81f3911Barry Song		.irq = IRQ_PG5,
18195b7c57751e6dcf3a3063b8e94977972d4cb646c6Mike Frysinger		.platform_data = (void *)&ad7142_i2c_platform_data,
182081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
182181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1822ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1823ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD7150) || defined(CONFIG_AD7150_MODULE)
1824ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1825ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad7150", 0x48),
1826ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		.irq = IRQ_PG5, /* fixme: use real interrupt number */
1827ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1828ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1829ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1830ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD7152) || defined(CONFIG_AD7152_MODULE)
1831ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1832ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad7152", 0x48),
1833ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1834ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1835ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
1836ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#if defined(CONFIG_AD774X) || defined(CONFIG_AD774X_MODULE)
1837ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	{
1838ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song		I2C_BOARD_INFO("ad774x", 0x48),
1839ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song	},
1840ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song#endif
1841ad6720c0b52ae1cde0bc567e57a71acde1a292aaBarry Song
18425f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang#if defined(CONFIG_AD7414) || defined(CONFIG_AD7414_MODULE)
18435f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang	{
18445f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		I2C_BOARD_INFO("ad7414", 0x9),
18455f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		.irq = IRQ_PG5,
18465f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		/*
18475f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * platform_data pointer is borrwoed by the driver to
18485f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * store custimer defined IRQ ALART level mode.
18495f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
18505f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		 */
18515f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang		.platform_data = (void *)IRQF_TRIGGER_LOW,
18525f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang	},
18535f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang#endif
18545f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang
1855ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang#if defined(CONFIG_AD7416) || defined(CONFIG_AD7416_MODULE)
1856ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang	{
1857ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		I2C_BOARD_INFO("ad7417", 0xb),
1858ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		.irq = IRQ_PG5,
1859ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		/*
1860ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * platform_data pointer is borrwoed by the driver to
1861ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * store custimer defined IRQ ALART level mode.
1862ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1863ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		 */
1864ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang		.platform_data = (void *)IRQF_TRIGGER_LOW,
1865ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang	},
1866ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang#endif
1867ef8873e06efdc023ee2e7f708787c79b78df3fcdSonic Zhang
1868ebd5833327e3fb46eb55553d8f5432b5226bf897Michael Hennerich#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
186981d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
187081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_lcd", 0x22),
187181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
187281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1873204844ebd08cfb0c83689e55d6633dcd0230d36dMichael Hennerich#if defined(CONFIG_INPUT_PCF8574) || defined(CONFIG_INPUT_PCF8574_MODULE)
187481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
187581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_keypad", 0x27),
1876f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG6,
1877f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	},
1878f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
1879f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
1880f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	{
1881f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		I2C_BOARD_INFO("ad7879", 0x2F),
1882f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG5,
1883f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.platform_data = (void *)&bfin_ad7879_ts_info,
188481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
188581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
188651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
188751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	{
188851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		I2C_BOARD_INFO("adp5588-keys", 0x34),
188951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.irq = IRQ_PG0,
189051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.platform_data = (void *)&adp5588_kpad_data,
189151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	},
189251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
18933ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
18943ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
18953ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		I2C_BOARD_INFO("pmic-adp5520", 0x32),
18964f84b6e0bb9a7d92c791ba3607674c98f69418cbMike Frysinger		.irq = IRQ_PG0,
18973ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = (void *)&adp5520_pdev_data,
18983ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
18993ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
1900ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_I2C) || defined(CONFIG_INPUT_ADXL34X_I2C_MODULE)
1901ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	{
1902ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		I2C_BOARD_INFO("adxl34x", 0x53),
1903ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.irq = IRQ_PG3,
1904ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.platform_data = (void *)&adxl34x_info,
1905ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	},
1906ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
1907ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
1908ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	{
1909ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich		I2C_BOARD_INFO("adp5588-gpio", 0x34),
1910ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich		.platform_data = (void *)&adp5588_gpio_data,
1911ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich	},
1912ba877d4491a06ae69d53981bc242ef97a8157026Michael Hennerich#endif
191350c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
191450c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich	{
191550c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich		I2C_BOARD_INFO("bfin-adv7393", 0x2B),
191650c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich	},
191750c4c0861a0a60cd4f414457fdbfc8d9a1eb1e31Michael Hennerich#endif
1918ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
1919ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich	{
1920ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich		I2C_BOARD_INFO("bf537-lq035-ad5280", 0x2C),
1921ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich	},
1922ddcd7cb857cdf2a29c30125f71cb5d4d6744c99bMichael Hennerich#endif
192378756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8870) || defined(CONFIG_BACKLIGHT_ADP8870_MODULE)
192478756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	{
192578756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		I2C_BOARD_INFO("adp8870", 0x2B),
192678756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich		.platform_data = (void *)&adp8870_pdata,
192778756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich	},
192878756c62309c0bccf3705dbf448f3a31542e973dMichael Hennerich#endif
1929d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai#if defined(CONFIG_SND_SOC_ADAU1371) || defined(CONFIG_SND_SOC_ADAU1371_MODULE)
1930d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai	{
1931d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai		I2C_BOARD_INFO("adau1371", 0x1A),
1932d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai	},
1933d53127ffd6e19feb5f045da917207f9e6e2ed331Cliff Cai#endif
193404267638e07f4430f902d7a304845634443caf1aCliff Cai#if defined(CONFIG_SND_SOC_ADAU1761) || defined(CONFIG_SND_SOC_ADAU1761_MODULE)
193504267638e07f4430f902d7a304845634443caf1aCliff Cai	{
193604267638e07f4430f902d7a304845634443caf1aCliff Cai		I2C_BOARD_INFO("adau1761", 0x38),
193704267638e07f4430f902d7a304845634443caf1aCliff Cai	},
193804267638e07f4430f902d7a304845634443caf1aCliff Cai#endif
1939c48d767569ec6449277bf4248295b4c165b57159Cliff Cai#if defined(CONFIG_SND_SOC_ADAU1361) || defined(CONFIG_SND_SOC_ADAU1361_MODULE)
1940c48d767569ec6449277bf4248295b4c165b57159Cliff Cai	{
1941c48d767569ec6449277bf4248295b4c165b57159Cliff Cai		I2C_BOARD_INFO("adau1361", 0x38),
1942c48d767569ec6449277bf4248295b4c165b57159Cliff Cai	},
1943c48d767569ec6449277bf4248295b4c165b57159Cliff Cai#endif
19441f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE)
19451f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich	{
19461f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich		I2C_BOARD_INFO("ad5258", 0x18),
19471f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich	},
19481f13f2fdca71408ad211936b85e673b72e91911aMichael Hennerich#endif
194929bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai#if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE)
195029bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai	{
195129bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai		I2C_BOARD_INFO("ssm2602", 0x1b),
195229bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai	},
195329bb3bc0c71d867d50b18a0277bf28cd8dd3fca7Cliff Cai#endif
1954f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1955f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	{
1956f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		I2C_BOARD_INFO("ad5398", 0xC),
1957f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang		.platform_data = (void *)&ad5398_i2c_platform_data,
1958f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	},
1959f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
196072fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
196172fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	{
196272fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		I2C_BOARD_INFO("adp8860", 0x2A),
196372fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich		.platform_data = (void *)&adp8860_pdata,
196472fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich	},
196572fa2e9204d5efe4732346f99465a01c380f5cd3Michael Hennerich#endif
196681d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu};
196781d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu
19681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
1969df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1970df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport0_uart_resources[] = {
1971df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
1972df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT0_TCR1,
1973df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT0_MRCS3+4,
1974df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
1975df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
1976df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
1977df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_RX,
1978df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_RX+1,
1979df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
1980df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
1981df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
1982df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_ERROR,
1983df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_ERROR,
1984df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
1985df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
1986df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
1987df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
1988df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangunsigned short bfin_sport0_peripherals[] = {
1989df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
1990df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
1991df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
1992df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
19931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport0_uart_device = {
19941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
19951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1996df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
1997df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport0_uart_resources,
1998df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
1999df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport0_peripherals, /* Passed to driver */
2000df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2001df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2002df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2003df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2004df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport1_uart_resources[] = {
2005df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2006df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT1_TCR1,
2007df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT1_MRCS3+4,
2008df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
2009df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2010df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2011df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_RX,
2012df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_RX+1,
2013df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2014df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2015df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
2016df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_ERROR,
2017df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_ERROR,
2018df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
2019df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
2020df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
2021df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
2022df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangunsigned short bfin_sport1_peripherals[] = {
2023df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
2024df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
20251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
20261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
20271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport1_uart_device = {
20281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
20291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
2030df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
2031df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport1_uart_resources,
2032df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
2033df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport1_peripherals, /* Passed to driver */
2034df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
20351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
20361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2037df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
20381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2039c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
20402c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define CF_IDE_NAND_CARD_USE_HDD_INTERFACE
20412c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich/* #define CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE */
2042c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
20432c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#ifdef CF_IDE_NAND_CARD_USE_HDD_INTERFACE
20442c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define PATA_INT	IRQ_PF5
2045c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct pata_platform_info bfin_pata_platform_data = {
2046c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.ioport_shift = 1,
204764e5c51291ec760e7fdb7628fe63690d1dc6aaf7Mike Frysinger	.irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
2048c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
2049c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2050c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_pata_resources[] = {
2051c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2052c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x20314020,
2053c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031403F,
2054c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
2055c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2056c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2057c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x2031401C,
2058c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031401F,
2059c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
2060c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2061c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
2062c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = PATA_INT,
2063c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = PATA_INT,
2064c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
2065c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
2066c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
20672c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#elif defined(CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE)
20682c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct pata_platform_info bfin_pata_platform_data = {
20692c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	.ioport_shift = 0,
20702c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
2071648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich/* CompactFlash Storage Card Memory Mapped Adressing
2072648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich * /REG = A11 = 1
2073648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich */
20742c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct resource bfin_pata_resources[] = {
20752c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
2076648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x20211800,
2077648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x20211807,
20782c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
20792c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
20802c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
2081648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x2021180E,	/* Device Ctl */
2082648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x2021180E,
20832c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
20842c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
20852c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
20862c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#endif
2087c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2088c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_pata_device = {
2089c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "pata_platform",
2090c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = -1,
2091c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pata_resources),
2092c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_pata_resources,
2093c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.dev = {
2094c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_pata_platform_data,
2095c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	}
2096c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
2097c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
2098c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
209914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
210014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich{
210114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_085, 250000000),
210214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_090, 376000000),
210314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_095, 426000000),
210414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_100, 426000000),
210514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_105, 476000000),
210614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_110, 476000000),
210714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_115, 476000000),
210814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_120, 500000000),
210914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_125, 533000000),
211014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_130, 600000000),
211114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
211214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
211314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
211414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
211514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
211614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.vr_settling_time = 25 /* us */,
211714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
211814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
211914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct platform_device bfin_dpmc = {
212014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.name = "bfin dpmc",
212114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.dev = {
212214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
212314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	},
212414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
212514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
2126336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2127336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Songstatic struct platform_device bfin_i2s = {
2128336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.name = "bfin-i2s",
2129336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
2130336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	/* TODO: add platform data here */
2131336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song};
2132336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2133336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
21348312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
21358312440e05ea74feabc648ad8f36c823af4ddd8eBarry Songstatic struct platform_device bfin_tdm = {
21368312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	.name = "bfin-tdm",
2137336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
2138336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	/* TODO: add platform data here */
2139336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song};
2140336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2141336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
2142336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2143336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Songstatic struct platform_device bfin_ac97 = {
2144336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.name = "bfin-ac97",
2145336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	.id = CONFIG_SND_BF5XX_SPORT_NUM,
21468312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	/* TODO: add platform data here */
21478312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song};
21488312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#endif
21498312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song
2150f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2151f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#define REGULATOR_ADP122        "adp122"
2152f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#define REGULATOR_ADP150        "adp150"
2153f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2154f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_consumer_supply adp122_consumers = {
2155f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.supply = REGULATOR_ADP122,
2156f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2157f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2158f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_consumer_supply adp150_consumers = {
2159f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.supply = REGULATOR_ADP150,
2160f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2161f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2162f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_init_data adp_switch_regulator_data[] = {
2163f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	{
2164f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.constraints = {
2165f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.name = REGULATOR_ADP122,
2166f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.valid_ops_mask = REGULATOR_CHANGE_STATUS,
21675f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.min_uA = 0,
21685f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.max_uA = 300000,
2169f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		},
2170f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.num_consumer_supplies = 1,	/* only 1 */
2171f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.consumer_supplies     = &adp122_consumers,
2172f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.driver_data	       = (void *)GPIO_PF2, /* gpio port only */
2173f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2174f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	{
2175f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.constraints = {
2176f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.name = REGULATOR_ADP150,
2177f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang			.valid_ops_mask = REGULATOR_CHANGE_STATUS,
21785f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.min_uA = 0,
21795f0225948ecc4bb21cc35839d3d447e22d40a71fSonic Zhang			.max_uA = 150000,
2180f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		},
2181f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.num_consumer_supplies = 1,	/* only 1 */
2182f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.consumer_supplies     = &adp150_consumers,
2183f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.driver_data	       = (void *)GPIO_PF3, /* gpio port only */
2184f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2185f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2186f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2187f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct adp_switch_platform_data adp_switch_pdata = {
2188f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.regulator_num = ARRAY_SIZE(adp_switch_regulator_data),
2189f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.regulator_data = adp_switch_regulator_data,
2190f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2191f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2192f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp_switch_device = {
2193f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "adp_switch",
2194f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 0,
2195f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2196f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp_switch_pdata,
2197f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2198f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2199f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2200f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2201f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2202f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_bulk_data adp122_bulk_data = {
2203f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supply = REGULATOR_ADP122,
2204f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2205f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2206f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_userspace_consumer_data adp122_userspace_comsumer_data = {
2207f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = REGULATOR_ADP122,
2208f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.num_supplies = 1,
2209f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supplies = &adp122_bulk_data,
2210f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2211f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2212f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp122_userspace_consumer_device = {
2213f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "reg-userspace-consumer",
2214f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 0,
2215f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2216f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp122_userspace_comsumer_data,
2217f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2218f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2219f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2220f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_bulk_data adp150_bulk_data = {
2221f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supply = REGULATOR_ADP150,
2222f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2223f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2224f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct regulator_userspace_consumer_data adp150_userspace_comsumer_data = {
2225f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = REGULATOR_ADP150,
2226f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.num_supplies = 1,
2227f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.supplies = &adp150_bulk_data,
2228f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2229f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2230f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhangstatic struct platform_device adp150_userspace_consumer_device = {
2231f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.name = "reg-userspace-consumer",
2232f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.id = 1,
2233f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	.dev = {
2234f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang		.platform_data = &adp150_userspace_comsumer_data,
2235f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	},
2236f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang};
2237f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2238f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2239f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2240f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
22411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device *stamp_devices[] __initdata = {
224214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
224314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	&bfin_dpmc,
224414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
22451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
22461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_pcmcia_cf_device,
22471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
22501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&rtc_device,
22511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
22541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&sl811_hcd_device,
22551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
22581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&isp1362_hcd_device,
22591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22613f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
22623f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	&bfin_isp1760_device,
22633f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#endif
22643f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich
22651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
22661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&smc91x_device,
22671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2269f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
2270f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	&dm9000_device,
2271f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#endif
2272f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
2273706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
2274706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	&bfin_can_device,
2275706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#endif
2276706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
22771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
227865319628db2c7a630daadfeec4d371aaca788482Graf Yang	&bfin_mii_bus,
22791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_mac_device,
22801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
22831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&net2272_bfin_device,
22841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
2287c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_spi0_device,
22881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22901e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
22911e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi0_device,
22921e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi1_device,
22931e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif
22941e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
22951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
22961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_fb_device,
22971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
22981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
22992043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
23002043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	&bfin_lq035q1_device,
23012043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
23022043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
23031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
23046bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
23056bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart0_device,
23066bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
23076bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
23086bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart1_device,
23096bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
23101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23125be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
231342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
231442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
231542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
231642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR1
231742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir1_device,
231842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
23195be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
23205be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
23211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
23221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&i2c_bfin_twi_device,
23231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
23241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2326df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
23271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport0_uart_device,
2328df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2329df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
23301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport1_uart_device,
23311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2332df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
2333c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2334c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
2335c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_pata_device,
2336c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
23372463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
23382463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
23392463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	&bfin_device_gpiokeys,
23402463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#endif
2341cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger
2342fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
2343fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	&bfin_async_nand_device,
2344fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
2345fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
2346793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
2347de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	&stamp_flash_device,
2348793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#endif
23498312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song
2350336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2351336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	&bfin_i2s,
2352336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2353336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
23548312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
23558312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song	&bfin_tdm,
23568312440e05ea74feabc648ad8f36c823af4ddd8eBarry Song#endif
2357336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song
2358336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2359336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song	&bfin_ac97,
2360336746ed8ee8ef503ba79bc4b6f0b5a40e8ab3ceBarry Song#endif
2361f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
2362f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
2363f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
2364f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	&ad5398_virt_consumer_device,
2365f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2366f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2367f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2368f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang	&ad5398_userspace_consumer_device,
2369f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2370f32792d045e1bbd86c0af0a28a46ae87af1ae100Sonic Zhang#endif
2371f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang
2372f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2373f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp_switch_device,
2374f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2375f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2376f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp122_userspace_consumer_device,
2377f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang	&adp150_userspace_consumer_device,
2378f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
2379f8e6dbffa7a6cb3da3bcaf1fde3039896e1ac764Sonic Zhang#endif
23801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
23811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic int __init stamp_init(void)
23831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
2384b85d858b40a28107ee50ca9e89f57c0e35c251c6Harvey Harrison	printk(KERN_INFO "%s(): registering device resources\n", __func__);
2385fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	bfin_plat_nand_init();
23860531c467da6438f278e9420a30f73eea2fdb73bdMike Frysinger	adf702x_mac_init();
23871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
2388df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	i2c_register_board_info(0, bfin_i2c_board_info,
2389df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang				ARRAY_SIZE(bfin_i2c_board_info));
23905bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
2391c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
23921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	return 0;
23931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
23941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
23951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuarch_initcall(stamp_init);
2396c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
2397c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2398c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangstatic struct platform_device *stamp_early_devices[] __initdata = {
2399c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
2400c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
2401c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart0_device,
2402c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2403c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
2404c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart1_device,
2405c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2406c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2407c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2408c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
2409c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2410c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport0_uart_device,
2411c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2412c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2413c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport1_uart_device,
2414c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2415c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
2416c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang};
2417c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2418c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangvoid __init native_machine_early_platform_add_devices(void)
2419c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang{
2420c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	printk(KERN_INFO "register early platform devices\n");
2421c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	early_platform_add_devices(stamp_early_devices,
2422c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang		ARRAY_SIZE(stamp_early_devices));
2423c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang}
2424c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
2425c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wuvoid native_machine_restart(char *cmd)
2426c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu{
2427c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	/* workaround reboot hang when booting from SPI */
2428c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	if ((bfin_read_SYSCR() & 0x7) == 0x3)
2429b52dae3139066765a7d96563e9cd33d9e60efe33Sonic Zhang		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
2430c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu}
2431137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger
2432137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger/*
2433137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger * Currently the MAC address is saved in Flash by U-Boot
2434137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger */
2435137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger#define FLASH_MAC	0x203f0000
24369862cc5278aabd82230369a142c817e37a42caa3Mike Frysingervoid bfin_get_ether_addr(char *addr)
2437137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger{
2438137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
2439137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
2440137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger}
24419862cc5278aabd82230369a142c817e37a42caa3Mike FrysingerEXPORT_SYMBOL(bfin_get_ether_addr);
2442