stamp.c revision b3dec4a4ff495248170358cb3b8254a814e5b096
11394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
21394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * File:         arch/blackfin/mach-bf537/boards/stamp.c
31394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Based on:     arch/blackfin/mach-bf533/boards/ezkit.c
41394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Author:       Aidan Williams <aidan@nicta.com.au>
51394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
61394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Created:
71394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Description:
81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Modified:
101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *               Copyright 2005 National ICT Australia (NICTA)
111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *               Copyright 2004-2006 Analog Devices Inc.
121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Bugs:         Enter bugs at http://blackfin.uclinux.org/
141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * This program is free software; you can redistribute it and/or modify
161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * it under the terms of the GNU General Public License as published by
171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * the Free Software Foundation; either version 2 of the License, or
181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * (at your option) any later version.
191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * This program is distributed in the hope that it will be useful,
211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * but WITHOUT ANY WARRANTY; without even the implied warranty of
221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * GNU General Public License for more details.
241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * You should have received a copy of the GNU General Public License
261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * along with this program; if not, see the file COPYING, or write
271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * to the Free Software Foundation, Inc.,
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/device.h>
32fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/kernel.h>
331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/platform_device.h>
341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/mtd.h>
35fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/mtd/nand.h>
361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/partitions.h>
37fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#include <linux/mtd/plat-ram.h>
38de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger#include <linux/mtd/physmap.h>
391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/spi.h>
401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/flash.h>
411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
42f02bcec5986870b3ddae26f6be1cde0703abfd8aMike Frysinger#include <linux/usb/isp1362.h>
431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
440a87e3e92b299e0f1a69b36664ecde2fc296c40aJeff Garzik#include <linux/ata_platform.h>
451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/irq.h>
461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/interrupt.h>
4781d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#include <linux/i2c.h>
4827f5d75afaa1b65e4cc1e4ac8a2a5095d24f1576David Brownell#include <linux/usb/sl811.h>
49f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#include <linux/spi/mmc_spi.h>
50c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/dma.h>
511f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger#include <asm/bfin5xx_spi.h>
52c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/reboot.h>
535d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu#include <asm/portmux.h>
5414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich#include <asm/dpmc.h>
551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Name the Board for the /proc/cpuinfo
581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
59fe85cad25e56aad5e020ea5cab50a100892f645bMike Frysingerconst char bfin_board_name[] = "ADI BF537-STAMP";
601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *  Driver needs to know address, irq and flag pin.
631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
663f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#include <linux/usb/isp1760.h>
673f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct resource bfin_isp1760_resources[] = {
681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	[0] = {
693f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.start  = 0x203C0000,
703f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.end    = 0x203C0000 + 0x000fffff,
711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags  = IORESOURCE_MEM,
721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	[1] = {
743f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.start  = IRQ_PF7,
753f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.end    = IRQ_PF7,
766a6be3d1882743a382f18da9821a410bb29964a2Michael Hennerich		.flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
803f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct isp1760_platform_data isp1760_priv = {
813f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.is_isp1761 = 0,
823f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.bus_width_16 = 1,
833f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.port1_otg = 0,
843f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.analog_oc = 0,
853f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dack_polarity_high = 0,
863f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dreq_polarity_high = 0,
871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
893f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerichstatic struct platform_device bfin_isp1760_device = {
903f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.name           = "isp1760-hcd",
913f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.id             = 0,
923f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.dev = {
933f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich		.platform_data = &isp1760_priv,
943f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	},
953f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.num_resources  = ARRAY_SIZE(bfin_isp1760_resources),
963f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	.resource       = bfin_isp1760_resources,
971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1002463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
1012463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#include <linux/input.h>
1022463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#include <linux/gpio_keys.h>
1032463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1042463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct gpio_keys_button bfin_gpio_keys_table[] = {
1052463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_0, GPIO_PF2, 1, "gpio-keys: BTN0"},
1062463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_1, GPIO_PF3, 1, "gpio-keys: BTN1"},
1072463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_2, GPIO_PF4, 1, "gpio-keys: BTN2"},
1082463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	{BTN_3, GPIO_PF5, 1, "gpio-keys: BTN3"},
1092463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1102463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1112463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct gpio_keys_platform_data bfin_gpio_keys_data = {
1122463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.buttons        = bfin_gpio_keys_table,
1132463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.nbuttons       = ARRAY_SIZE(bfin_gpio_keys_table),
1142463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1152463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
1162463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerichstatic struct platform_device bfin_device_gpiokeys = {
1172463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.name      = "gpio-keys",
1182463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	.dev = {
1192463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich		.platform_data = &bfin_gpio_keys_data,
1202463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	},
1212463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich};
1222463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#endif
1232463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
124cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysingerstatic struct resource bfin_gpios_resources = {
125cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.start = 0,
126cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.end   = MAX_BLACKFIN_GPIOS - 1,
127cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.flags = IORESOURCE_IRQ,
128cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger};
129cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger
130cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysingerstatic struct platform_device bfin_gpios_device = {
131cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.name = "simple-gpio",
132cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.id = -1,
133cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.num_resources = 1,
134cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	.resource = &bfin_gpios_resources,
135cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger};
136cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger
1371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
1381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource bfin_pcmcia_cf_resources[] = {
1391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20310000, /* IO PORT */
1411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20312000,
1421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1431f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
144d2d50aa97d695d83ccb2341488d977e8cfe36555Simon Arlott		.start = 0x20311000, /* Attribute Memory */
1451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20311FFF,
1461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1471f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF4,
1491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF4,
1501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
1511f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 6, /* Card Detect PF6 */
1531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 6,
1541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ,
1551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_pcmcia_cf_device = {
1591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin_cf_pcmcia",
1601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = -1,
1611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
1621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = bfin_pcmcia_cf_resources,
1631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
1671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device rtc_device = {
1681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "rtc-bfin",
1691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id   = -1,
1701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
17461f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich#include <linux/smc91x.h>
17561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
17661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerichstatic struct smc91x_platdata smc91x_info = {
17761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
17861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.leda = RPC_LED_100_10,
17961f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.ledb = RPC_LED_TX_RX,
18061f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich};
18161f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
1821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource smc91x_resources[] = {
1831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.name = "smc91x-regs",
1851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20300300,
1861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20300300 + 16,
1871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1881f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF7,
1911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF7,
1921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
1931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device smc91x_device = {
1961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "smc91x",
1971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(smc91x_resources),
1991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = smc91x_resources,
20061f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.dev	= {
20161f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich		.platform_data	= &smc91x_info,
20261f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	},
2031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
206f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
207f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landaustatic struct resource dm9000_resources[] = {
208f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	[0] = {
209f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.start	= 0x203FB800,
210b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.end	= 0x203FB800 + 1,
211f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.flags	= IORESOURCE_MEM,
212f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	},
213f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	[1] = {
214b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.start	= 0x203FB804,
215b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.end	= 0x203FB804 + 1,
216b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song		.flags	= IORESOURCE_MEM,
217b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song	},
218b3dec4a4ff495248170358cb3b8254a814e5b096Barry Song	[2] = {
219f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.start	= IRQ_PF9,
220f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.end	= IRQ_PF9,
221f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau		.flags	= (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
222f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	},
223f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau};
224f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
225f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landaustatic struct platform_device dm9000_device = {
226f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.name		= "dm9000",
227f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.id		= -1,
228f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.num_resources	= ARRAY_SIZE(dm9000_resources),
229f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	.resource	= dm9000_resources,
230f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau};
231f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#endif
232f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
233561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
234561cc18b8696fd41367544f45542c096fa08d878Michael Hennerichstatic struct resource ax88180_resources[] = {
235561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	[0] = {
236561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.start	= 0x20300000,
237561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.end	= 0x20300000 + 0x8000,
238561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.flags	= IORESOURCE_MEM,
239561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	},
240561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	[1] = {
241561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.start	= IRQ_PF7,
242561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.end	= IRQ_PF7,
243561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich		.flags	= (IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL),
244561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	},
245561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich};
246561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich
247561cc18b8696fd41367544f45542c096fa08d878Michael Hennerichstatic struct platform_device ax88180_device = {
248561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	.name		= "ax88180",
249561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	.id		= -1,
250561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	.num_resources	= ARRAY_SIZE(ax88180_resources),
251561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	.resource	= ax88180_resources,
252561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich};
253561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich#endif
254561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich
2551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
2561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource sl811_hcd_resources[] = {
2571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
2581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20340000,
2591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20340000,
2601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2611f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20340004,
2631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20340004,
2641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2651f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = CONFIG_USB_SL811_BFIN_IRQ,
2671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = CONFIG_USB_SL811_BFIN_IRQ,
2681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
2691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
2731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuvoid sl811_port_power(struct device *dev, int is_on)
2741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
275c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
276acbcd2631975cf6f0be5cd294cbfd12226cd9958Michael Hennerich	gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
2771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
2781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct sl811_platform_data sl811_priv = {
2811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.potpg = 10,
2821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power = 250,       /* == 500mA */
2831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
2841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.port_power = &sl811_port_power,
2851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device sl811_hcd_device = {
2891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "sl811-hcd",
2901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
2911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
2921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &sl811_priv,
2931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(sl811_hcd_resources),
2951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = sl811_hcd_resources,
2961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
3001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource isp1362_hcd_resources[] = {
3011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
3021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20360000,
3031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20360000,
3041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3051f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20360004,
3071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20360004,
3081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3091f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
3111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
3121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
3131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct isp1362_platform_data isp1362_priv = {
3171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.sel15Kres = 1,
3181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.clknotstop = 0,
3191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.oc_enable = 0,
3201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_act_high = 0,
3211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_edge_triggered = 0,
3221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.remote_wakeup_connected = 0,
3231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.no_power_switching = 1,
3241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power_switching_mode = 0,
3251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device isp1362_hcd_device = {
3281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "isp1362-hcd",
3291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
3301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
3311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &isp1362_priv,
3321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(isp1362_hcd_resources),
3341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = isp1362_hcd_resources,
3351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
33965319628db2c7a630daadfeec4d371aaca788482Graf Yangstatic struct platform_device bfin_mii_bus = {
34065319628db2c7a630daadfeec4d371aaca788482Graf Yang	.name = "bfin_mii_bus",
34165319628db2c7a630daadfeec4d371aaca788482Graf Yang};
34265319628db2c7a630daadfeec4d371aaca788482Graf Yang
3431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_mac_device = {
3441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin_mac",
34565319628db2c7a630daadfeec4d371aaca788482Graf Yang	.dev.platform_data = &bfin_mii_bus,
3461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
3501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource net2272_bfin_resources[] = {
3511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
3521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20300000,
3531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20300000 + 0x100,
3541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3551f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF7,
3571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF7,
3581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
3591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device net2272_bfin_device = {
3631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "net2272",
3641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = -1,
3651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(net2272_bfin_resources),
3661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = net2272_bfin_resources,
3671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
370fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
371fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#ifdef CONFIG_MTD_PARTITIONS
372fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerconst char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
373fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
374fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct mtd_partition bfin_plat_nand_partitions[] = {
375fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	{
376aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name   = "linux kernel(nand)",
377fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.size   = 0x400000,
378fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.offset = 0,
379fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	}, {
380aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name   = "file system(nand)",
381fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.size   = MTDPART_SIZ_FULL,
382fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.offset = MTDPART_OFS_APPEND,
383fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
384fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
385fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
386fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
387fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_CLE 2
388fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_ALE 1
389fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
390fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
391fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	struct nand_chip *this = mtd->priv;
392fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
393fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	if (cmd == NAND_CMD_NONE)
394fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		return;
395fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
396fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	if (ctrl & NAND_CLE)
397fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_CLE));
398fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	else
399fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		writeb(cmd, this->IO_ADDR_W + (1 << BFIN_NAND_PLAT_ALE));
400fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
401fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
402fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define BFIN_NAND_PLAT_READY GPIO_PF3
403fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic int bfin_plat_nand_dev_ready(struct mtd_info *mtd)
404fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
405fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	return gpio_get_value(BFIN_NAND_PLAT_READY);
406fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
407fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
408fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct platform_nand_data bfin_plat_nand_data = {
409fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.chip = {
410fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.chip_delay = 30,
411fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#ifdef CONFIG_MTD_PARTITIONS
412fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.part_probe_types = part_probes,
413fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.partitions = bfin_plat_nand_partitions,
414fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.nr_partitions = ARRAY_SIZE(bfin_plat_nand_partitions),
415fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
416fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
417fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.ctrl = {
418fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.cmd_ctrl  = bfin_plat_nand_cmd_ctrl,
419fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.dev_ready = bfin_plat_nand_dev_ready,
420fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
421fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
422fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
423fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#define MAX(x, y) (x > y ? x : y)
424fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct resource bfin_plat_nand_resources = {
425fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.start = 0x20212000,
426fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.end   = 0x20212000 + (1 << MAX(BFIN_NAND_PLAT_CLE, BFIN_NAND_PLAT_ALE)),
427fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.flags = IORESOURCE_IO,
428fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
429fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
430fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic struct platform_device bfin_async_nand_device = {
431fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.name = "gen_nand",
432fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.id = -1,
433fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.num_resources = 1,
434fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.resource = &bfin_plat_nand_resources,
435fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	.dev = {
436fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger		.platform_data = &bfin_plat_nand_data,
437fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	},
438fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger};
439fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
440fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_init(void)
441fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger{
442fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	gpio_request(BFIN_NAND_PLAT_READY, "bfin_nand_plat");
443fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger}
444fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#else
445fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysingerstatic void bfin_plat_nand_init(void) {}
446fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
447fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
448793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
449de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct mtd_partition stamp_partitions[] = {
450de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	{
451aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "bootloader(nor)",
452edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size       = 0x40000,
453de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = 0,
454de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
455aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "linux kernel(nor)",
4566ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size       = 0x180000,
457de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = MTDPART_OFS_APPEND,
458de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
459aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "file system(nor)",
4606ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size       = 0x400000 - 0x40000 - 0x180000 - 0x10000,
461de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = MTDPART_OFS_APPEND,
462de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}, {
463aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name       = "MAC Address(nor)",
464de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.size       = MTDPART_SIZ_FULL,
465de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.offset     = 0x3F0000,
466de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.mask_flags = MTD_WRITEABLE,
467de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	}
468de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
469de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
470de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct physmap_flash_data stamp_flash_data = {
471de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.width      = 2,
472de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.parts      = stamp_partitions,
473de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.nr_parts   = ARRAY_SIZE(stamp_partitions),
474de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
475de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
476de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct resource stamp_flash_resource = {
477de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.start = 0x20000000,
478de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.end   = 0x203fffff,
479de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.flags = IORESOURCE_MEM,
480de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
481de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
482de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysingerstatic struct platform_device stamp_flash_device = {
483de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.name          = "physmap-flash",
484de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.id            = 0,
485de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.dev = {
486de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger		.platform_data = &stamp_flash_data,
487de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	},
488de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.num_resources = 1,
489de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	.resource      = &stamp_flash_resource,
490de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger};
491793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#endif
492de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger
4931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) \
4941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_MTD_M25P80_MODULE)
4951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct mtd_partition bfin_spi_flash_partitions[] = {
4961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
497aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "bootloader(spi)",
498edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size = 0x00040000,
4991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0,
5001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mask_flags = MTD_CAP_ROM
5011f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
502aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "linux kernel(spi)",
5036ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size = 0x180000,
504edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.offset = MTDPART_OFS_APPEND,
5051f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
506aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "file system(spi)",
507edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.size = MTDPART_SIZ_FULL,
508edf056417d11fe9321ec15a55bd128e4f4c73796Mike Frysinger		.offset = MTDPART_OFS_APPEND,
5091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	}
5101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct flash_platform_data bfin_spi_flash_data = {
5131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "m25p80",
5141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.parts = bfin_spi_flash_partitions,
5151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
51688a8078b3b31349e9cbf09215eab6891fb1aed0fMichael Hennerich	/* .type = "m25p64", */
5171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI flash chip (m25p64) */
5201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_flash_chip_info = {
5211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,         /* use dma transfer with this chip*/
5221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 8,
5231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
526a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger#if defined(CONFIG_BFIN_SPI_ADC) \
527a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger	|| defined(CONFIG_BFIN_SPI_ADC_MODULE)
5281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI ADC chip */
5291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_adc_chip_info = {
5301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,         /* use dma transfer with this chip*/
5311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
5321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SND_BLACKFIN_AD1836) \
5361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
5371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip ad1836_spi_chip_info = {
5381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
5391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
5401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
543d4b834c13940b5433d16ae3605794b3d74804348Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD1938) \
544d4b834c13940b5433d16ae3605794b3d74804348Barry Song	|| defined(CONFIG_SND_BF5XX_SOC_AD1938_MODULE)
545d4b834c13940b5433d16ae3605794b3d74804348Barry Songstatic struct bfin5xx_spi_chip ad1938_spi_chip_info = {
546d4b834c13940b5433d16ae3605794b3d74804348Barry Song	.enable_dma = 0,
547d4b834c13940b5433d16ae3605794b3d74804348Barry Song	.bits_per_word = 8,
548d4b834c13940b5433d16ae3605794b3d74804348Barry Song	.cs_gpio = GPIO_PF5,
549d4b834c13940b5433d16ae3605794b3d74804348Barry Song};
550d4b834c13940b5433d16ae3605794b3d74804348Barry Song#endif
551d4b834c13940b5433d16ae3605794b3d74804348Barry Song
5521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
5531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip ad9960_spi_chip_info = {
5541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
5551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
5561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
559427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#if defined(CONFIG_INPUT_EVAL_AD7147EBZ)
560427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input.h>
561427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
562427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct bfin5xx_spi_chip ad7147_spi_chip_info = {
563427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.enable_dma = 0,
564427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.bits_per_word = 16,
565427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
566427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
567427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct ad714x_slider_plat slider_plat[] = {
568427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
569427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.start_stage = 0,
570427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.end_stage = 7,
571427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_coord = 128,
572427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
573427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
574427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
575427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct ad714x_button_plat button_plat[] = {
576427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
577427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_FORWARD,
578427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
579427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x600,
580427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
581427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
582427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_LEFT,
583427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
584427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x500,
585427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
586427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
587427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_MIDDLE,
588427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
589427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x800,
590427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
591427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
592427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_RIGHT,
593427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x100,
594427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
595427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
596427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
597427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_BACK,
598427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x200,
599427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x400,
600427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
601427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
602427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct ad714x_platform_data ad7147_platfrom_data = {
603427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.slider_num = 1,
604427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 5,
605427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.slider = slider_plat,
606427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button = button_plat,
607427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
608427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFBFF, 0x1FFF, 0, 0x2626, 1600, 1600, 1600, 1600},
609427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xEFFF, 0x1FFF, 0, 0x2626, 1650, 1650, 1650, 1650},
610427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFE, 0, 0x2626, 1650, 1650, 1650, 1650},
611427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FFB, 0, 0x2626, 1650, 1650, 1650, 1650},
612427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FEF, 0, 0x2626, 1650, 1650, 1650, 1650},
613427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1FBF, 0, 0x2626, 1650, 1650, 1650, 1650},
614427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1EFF, 0, 0x2626, 1650, 1650, 1650, 1650},
615427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x1BFF, 0, 0x2626, 1600, 1600, 1600, 1600},
616427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFF7B, 0x3FFF, 0x506,  0x2626, 1100, 1100, 1150, 1150},
617427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDFE, 0x3FFF, 0x606,  0x2626, 1100, 1100, 1150, 1150},
618427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFEBA, 0x1FFF, 0x1400, 0x2626, 1200, 1200, 1300, 1300},
619427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFEF, 0x1FFF, 0x0,    0x2626, 1100, 1100, 1150, 1150},
620427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
621427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x2B2, 0x0, 0x3233, 0x819, 0x832, 0xCFF, 0xCFF, 0x0},
622427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
623427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
624427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
625427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#if defined(CONFIG_INPUT_EVAL_AD7142EB)
626427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input.h>
627427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#include <linux/input/ad714x.h>
628427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct ad714x_button_plat button_plat[] = {
629427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
630427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_1,
631427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
632427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x1,
633427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
634427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
635427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_2,
636427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
637427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x2,
638427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
639427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
640427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_3,
641427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0,
642427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x4,
643427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
644427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
645427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.keycode = BTN_4,
646427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.l_mask = 0x0,
647427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.h_mask = 0x8,
648427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
649427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
650427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Songstatic struct ad714x_platform_data ad7142_platfrom_data = {
651427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button_num = 4,
652427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.button = button_plat,
653427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.stage_cfg_reg =  {
654427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		/* fixme: figure out right setting for all comoponent according
655427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		 * to hardware feature of EVAL-AD7142EB board */
656427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xE7FF, 0x3FFF, 0x0005, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
657427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFDBF, 0x3FFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
658427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x2DFF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
659427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x37BF, 0x0001, 0x2626, 0x01F4, 0x01F4, 0x028A, 0x028A},
660427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
661427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
662427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
663427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
664427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
665427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
666427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
667427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		{0xFFFF, 0x3FFF, 0x0000, 0x0606, 0x01F4, 0x01F4, 0x0320, 0x0320},
668427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
669427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	.sys_cfg_reg = {0x0B2, 0x0, 0x690, 0x664, 0x290F, 0xF, 0xF, 0x0},
670427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song};
671427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
672427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
673f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
674f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#define MMC_SPI_CARD_DETECT_INT IRQ_PF5
675f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
676f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic int bfin_mmc_spi_init(struct device *dev,
677f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	irqreturn_t (*detect_int)(int, void *), void *data)
678f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
679f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	return request_irq(MMC_SPI_CARD_DETECT_INT, detect_int,
680f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		IRQF_TRIGGER_FALLING, "mmc-spi-detect", data);
681f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
682f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
683f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic void bfin_mmc_spi_exit(struct device *dev, void *data)
684f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li{
685f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	free_irq(MMC_SPI_CARD_DETECT_INT, data);
686f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li}
687f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
688f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct mmc_spi_platform_data bfin_mmc_spi_pdata = {
689f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.init = bfin_mmc_spi_init,
690f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.exit = bfin_mmc_spi_exit,
691f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.detect_delay = 100, /* msecs */
692f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
693f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
694f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Listatic struct bfin5xx_spi_chip  mmc_spi_chip_info = {
695f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.enable_dma = 0,
696f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	.bits_per_word = 8,
697e68d1ebc30e033612bb69f949da654d72beae57dYi Li	.pio_interrupt = 0,
698f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li};
699f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
700f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li
7011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_PBX)
7021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
7031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.ctl_reg	= 0x4, /* send zero */
7041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma	= 0,
7051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word	= 8,
7061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.cs_change_per_word = 1,
7071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
71146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7877.h>
7121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_ad7877_chip_info = {
7131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,
7141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.bits_per_word = 16,
7151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic const struct ad7877_platform_data bfin_ad7877_ts_info = {
7181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.model			= 7877,
7191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.vref_delay_usecs	= 50,	/* internal, no capacitor */
7201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.x_plate_ohms		= 419,
7211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.y_plate_ohms		= 486,
7221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_max		= 1000,
7231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pressure_min		= 0,
7241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.stopacq_polarity 	= 1,
7251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.first_conversion_delay = 3,
7261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.acquisition_time 	= 1,
7271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.averaging 		= 1,
7281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.pen_down_acc_interval 	= 1,
7291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
73246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
73346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#include <linux/spi/ad7879.h>
73446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerichstatic const struct ad7879_platform_data bfin_ad7879_ts_info = {
73546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.model			= 7879,	/* Model = AD7879 */
73646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.x_plate_ohms		= 620,	/* 620 Ohm from the touch datasheet */
73746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_max		= 10000,
73846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pressure_min		= 0,
73946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.first_conversion_delay = 3,	/* wait 512us before do a first conversion */
74046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.acquisition_time 	= 1,	/* 4us acquisition time per sample */
74146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.median			= 2,	/* do 8 measurements */
74246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.averaging 		= 1,	/* take the average of 4 middle samples */
74346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.pen_down_acc_interval 	= 255,	/* 9.4 ms */
74446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.gpio_output		= 1,	/* configure AUX/VBAT/GPIO as GPIO output */
74546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.gpio_default 		= 1,	/* During initialization set GPIO = HIGH */
74646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich};
74746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
74846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich
749ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X) || defined(CONFIG_INPUT_ADXL34X_MODULE)
750ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#include <linux/input.h>
751ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#include <linux/spi/adxl34x.h>
752ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerichstatic const struct adxl34x_platform_data adxl34x_info = {
753ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.x_axis_offset = 0,
754ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.y_axis_offset = 0,
755ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.z_axis_offset = 0,
756ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_threshold = 0x31,
757ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_duration = 0x10,
758ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_latency = 0x60,
759ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_window = 0xF0,
760ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.tap_axis_control = ADXL_TAP_X_EN | ADXL_TAP_Y_EN | ADXL_TAP_Z_EN,
761ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.act_axis_control = 0xFF,
762ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.activity_threshold = 5,
763ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_threshold = 3,
764ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.inactivity_time = 4,
765ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_threshold = 0x7,
766ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.free_fall_time = 0x20,
767ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_rate = 0x8,
768ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.data_range = ADXL_FULL_RES,
769ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
770ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_type = EV_ABS,
771ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_x = ABS_X,		/* EV_REL */
772ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_y = ABS_Y,		/* EV_REL */
773ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_z = ABS_Z,		/* EV_REL */
774ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
775ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_tap_x = BTN_TOUCH,		/* EV_KEY */
776ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_tap_y = BTN_TOUCH,		/* EV_KEY */
777ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.ev_code_tap_z = BTN_TOUCH,		/* EV_KEY */
778ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
779ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_ff = KEY_F,*/		/* EV_KEY */
780ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich/*	.ev_code_act_inactivity = KEY_A,*/	/* EV_KEY */
781ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
782ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	.fifo_mode = ADXL_FIFO_STREAM,
783ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich};
784ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
785ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich
786f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
787f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerichstatic struct bfin5xx_spi_chip spi_ad7879_chip_info = {
788f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.enable_dma = 0,
789f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	.bits_per_word = 16,
790f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich};
791f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
792f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich
7936e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
7946e668936db12550ab5a6a758f236140101e5a644Michael Hennerichstatic struct bfin5xx_spi_chip spidev_chip_info = {
7956e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.enable_dma = 0,
7966e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	.bits_per_word = 8,
7976e668936db12550ab5a6a758f236140101e5a644Michael Hennerich};
7986e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
7996e668936db12550ab5a6a758f236140101e5a644Michael Hennerich
8002043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
8012043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin5xx_spi_chip lq035q1_spi_chip_info = {
8022043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.enable_dma	= 0,
8032043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.bits_per_word	= 8,
8042043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
8052043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
8062043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
80785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
80885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerichstatic struct bfin5xx_spi_chip enc28j60_spi_chip_info = {
80985a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.enable_dma	= 1,
81085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.bits_per_word	= 8,
81185a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	.cs_gpio = GPIO_PF10,
81285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich};
81385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
81485a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich
8158e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
8168e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
817ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
818ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct mtd_partition bfin_spi_dataflash_partitions[] = {
819ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	{
820ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "bootloader(spi)",
821ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = 0x00040000,
822ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = 0,
823ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.mask_flags = MTD_CAP_ROM
824ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
825ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "linux kernel(spi)",
8266ecb5b6dbc01b958fdce7008f297a5c7ba2d8105Grace Pan		.size = 0x180000,
827ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
828ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}, {
829ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.name = "file system(spi)",
830ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.size = MTDPART_SIZ_FULL,
831ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.offset = MTDPART_OFS_APPEND,
832ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	}
833ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
834ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
835ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerichstatic struct flash_platform_data bfin_spi_dataflash_data = {
836ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.name = "SPI Dataflash",
837ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.parts = bfin_spi_dataflash_partitions,
838ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich	.nr_parts = ARRAY_SIZE(bfin_spi_dataflash_partitions),
839ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich};
840ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich
8418e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich/* DataFlash chip */
8428e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerichstatic struct bfin5xx_spi_chip data_flash_chip_info = {
8438e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
8448e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	.bits_per_word = 8,
8458e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich};
8468e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
8478e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich
8481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct spi_board_info bfin_spi_board_info[] __initdata = {
8491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) \
8501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_MTD_M25P80_MODULE)
8511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
8521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		/* the modalias must be the same as spi device driver name */
8531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "m25p80", /* Name of spi_driver for this device */
8541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
855c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
8561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
8571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &bfin_spi_flash_data,
8581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_flash_chip_info,
8591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
8601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
8611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
8628e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#if defined(CONFIG_MTD_DATAFLASH) \
8638e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	|| defined(CONFIG_MTD_DATAFLASH_MODULE)
8648e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	{	/* DataFlash chip */
8658e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.modalias = "mtd_dataflash",
866ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.max_speed_hz = 33250000,     /* max spi clock (SCK) speed in HZ */
8678e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.bus_num = 0, /* Framework bus number */
8688e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
869ceac2651e9b7b77734d1c2b6f5d7d218d22f5427Michael Hennerich		.platform_data = &bfin_spi_dataflash_data,
8708e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.controller_data = &data_flash_chip_info,
8718e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich		.mode = SPI_MODE_3,
8728e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich	},
8738e9d5c7daff8b74bf3be62cfe0ba48b5af1fa12fMichael Hennerich#endif
874a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger#if defined(CONFIG_BFIN_SPI_ADC) \
875a261eec0009b6093727fb7a59b12a10c6c981714Mike Frysinger	|| defined(CONFIG_BFIN_SPI_ADC_MODULE)
8761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
8771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
8781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 6250000,     /* max spi clock (SCK) speed in HZ */
879c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
8801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. */
8811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = NULL, /* No spi_driver specific config */
8821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_adc_chip_info,
8831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
8841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
8851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
8861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SND_BLACKFIN_AD1836) \
8871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	|| defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
8881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
8891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "ad1836-spi",
8901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
891c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
8921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
8931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &ad1836_spi_chip_info,
8941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
8951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
896d4b834c13940b5433d16ae3605794b3d74804348Barry Song
897d4b834c13940b5433d16ae3605794b3d74804348Barry Song#if defined(CONFIG_SND_BF5XX_SOC_AD1938) || defined(CONFIG_SND_BF5XX_SOC_AD1938_MODULE)
898d4b834c13940b5433d16ae3605794b3d74804348Barry Song	{
899d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.modalias = "ad1938-spi",
900d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
901d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.bus_num = 0,
902d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.chip_select = 0,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */
903d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.controller_data = &ad1938_spi_chip_info,
904d4b834c13940b5433d16ae3605794b3d74804348Barry Song		.mode = SPI_MODE_3,
905d4b834c13940b5433d16ae3605794b3d74804348Barry Song	},
906d4b834c13940b5433d16ae3605794b3d74804348Barry Song#endif
907d4b834c13940b5433d16ae3605794b3d74804348Barry Song
9081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
9091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "ad9960-spi",
9111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 10000000,     /* max spi clock (SCK) speed in HZ */
912c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
9131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1,
9141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &ad9960_spi_chip_info,
9151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
917427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
918427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#if defined(CONFIG_INPUT_EVAL_AD7147EBZ)
919427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	{
920427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.modalias = "ad714x_captouch",
921427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.max_speed_hz = 1000000,     /* max spi clock (SCK) speed in HZ */
922427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.irq = IRQ_PF4,
923427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.bus_num = 0,
924427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.chip_select = 5,
925427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.mode = SPI_MODE_3,
926427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.platform_data = &ad7147_platfrom_data,
927427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.controller_data = &ad7147_spi_chip_info,
928427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song	},
929427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#endif
930427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song
931f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
932f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	{
933f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.modalias = "mmc_spi",
934f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
935f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.bus_num = 0,
936f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.chip_select = 4,
937f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.platform_data = &bfin_mmc_spi_pdata,
938f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.controller_data = &mmc_spi_chip_info,
939f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li		.mode = SPI_MODE_3,
940f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li	},
941f79ea4cba00e2c2f5ffde9007e7ba0fe992b2e18Yi Li#endif
9421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_PBX)
9431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9441f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.modalias = "fxs-spi",
9451f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.max_speed_hz = 12500000,     /* max spi clock (SCK) speed in HZ */
946c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
947c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.chip_select = 8 - CONFIG_J11_JUMPER,
9481f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.controller_data = &spi_si3xxx_chip_info,
9491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
9501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9521f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.modalias = "fxo-spi",
9531f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.max_speed_hz = 12500000,     /* max spi clock (SCK) speed in HZ */
954c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
955c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.chip_select = 8 - CONFIG_J19_JUMPER,
9561f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger		.controller_data = &spi_si3xxx_chip_info,
9571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
9581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
9601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
9611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
9621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias		= "ad7877",
9631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data		= &bfin_ad7877_ts_info,
9641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.irq			= IRQ_PF6,
9651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz	= 12500000,     /* max spi clock (SCK) speed in HZ */
966c7d4896621d42c84956911afd5f10a5d317c781aMichael Hennerich		.bus_num	= 0,
9671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select  = 1,
9681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_ad7877_chip_info,
9691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
9701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
971f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
97246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	{
97346aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.modalias = "ad7879",
97446aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.platform_data = &bfin_ad7879_ts_info,
97546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.irq = IRQ_PF7,
97646aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
97746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.bus_num = 0,
97846aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 1,
97946aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.controller_data = &spi_ad7879_chip_info,
98046aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
98146aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	},
98246aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich#endif
9836e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
9846e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	{
9856e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.modalias = "spidev",
9866e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
9876e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.bus_num = 0,
9886e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.chip_select = 1,
9896e668936db12550ab5a6a758f236140101e5a644Michael Hennerich		.controller_data = &spidev_chip_info,
9906e668936db12550ab5a6a758f236140101e5a644Michael Hennerich	},
9916e668936db12550ab5a6a758f236140101e5a644Michael Hennerich#endif
9922043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
9932043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
9942043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.modalias = "bfin-lq035q1-spi",
9952043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
9962043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.bus_num = 0,
99746aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich		.chip_select = 2,
9982043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.controller_data = &lq035q1_spi_chip_info,
9992043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
10002043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
10012043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
100285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
100385a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	{
100485a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.modalias = "enc28j60",
100585a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
100685a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.irq = IRQ_PF6,
100785a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.bus_num = 0,
100885a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.chip_select = 0,	/* GPIO controlled SSEL */
100985a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.controller_data = &enc28j60_spi_chip_info,
101085a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich		.mode = SPI_MODE_0,
101185a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich	},
101285a192e92dcb67552ee3fcdf2e36c11688b61955Michael Hennerich#endif
10131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
10141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
10155bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
10161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI controller data */
1017c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct bfin5xx_spi_master bfin_spi0_info = {
10181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_chipselect = 8,
10191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,  /* master has the ability to do dma transfer */
10205d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
10211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
10221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1023c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu/* SPI (0) */
1024c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_spi0_resource[] = {
1025c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1026c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = SPI0_REGBASE,
1027c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = SPI0_REGBASE + 0xFF,
1028c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1029c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		},
1030c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1031c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = CH_SPI,
1032c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = CH_SPI,
1033e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.flags = IORESOURCE_DMA,
1034e68d1ebc30e033612bb69f949da654d72beae57dYi Li	},
1035e68d1ebc30e033612bb69f949da654d72beae57dYi Li	[2] = {
1036e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.start = IRQ_SPI,
1037e68d1ebc30e033612bb69f949da654d72beae57dYi Li		.end   = IRQ_SPI,
1038c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1039c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1040c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1041c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1042c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_spi0_device = {
1043c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-spi",
1044c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = 0, /* Bus number */
1045c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
1046c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_spi0_resource,
10471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
1048c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_spi0_info, /* Passed to driver */
10491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
10501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
10511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif  /* spi master and devices */
10521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
10531e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
10541e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
10551e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai/* SPORT SPI controller data */
10561e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi0_info = {
10571e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
10581e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
10591e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_DRPRI,
10601e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT0_RSCLK, P_SPORT0_TFS, P_SPORT0_RFS, 0},
10611e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
10621e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
10631e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi0_resource[] = {
10641e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
10651e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT0_TCR1,
10661e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT0_TCR1 + 0xFF,
10671e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
10681e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
10691e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
10701e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT0_ERROR,
10711e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT0_ERROR,
10721e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
10731e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
10741e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
10751e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
10761e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi0_device = {
10771e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
10781e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 1, /* Bus number */
10791e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi0_resource),
10801e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi0_resource,
10811e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
10821e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi0_info, /* Passed to driver */
10831e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
10841e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
10851e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
10861e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct bfin5xx_spi_master bfin_sport_spi1_info = {
10871e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_chipselect = 1, /* master only supports one device */
10881e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.enable_dma = 0,  /* master don't support DMA */
10891e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.pin_req = {P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_DRPRI,
10901e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		P_SPORT1_RSCLK, P_SPORT1_TFS, P_SPORT1_RFS, 0},
10911e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
10921e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
10931e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct resource bfin_sport_spi1_resource[] = {
10941e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[0] = {
10951e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = SPORT1_TCR1,
10961e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = SPORT1_TCR1 + 0xFF,
10971e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_MEM,
10981e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
10991e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	[1] = {
11001e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.start = IRQ_SPORT1_ERROR,
11011e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.end   = IRQ_SPORT1_ERROR,
11021e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.flags = IORESOURCE_IRQ,
11031e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		},
11041e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
11051e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
11061e9aa95526c3dfc50e55665c7129469a12593bebCliff Caistatic struct platform_device bfin_sport_spi1_device = {
11071e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.name = "bfin-sport-spi",
11081e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.id = 2, /* Bus number */
11091e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.num_resources = ARRAY_SIZE(bfin_sport_spi1_resource),
11101e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.resource = bfin_sport_spi1_resource,
11111e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	.dev = {
11121e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai		.platform_data = &bfin_sport_spi1_info, /* Passed to driver */
11131e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	},
11141e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai};
11151e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
11161e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif  /* sport spi master and devices */
11171e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
11181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
11191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_fb_device = {
1120c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bf537-lq035",
1121c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1122c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
1123c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1124c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
1125c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_fb_adv7393_device = {
1126c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-adv7393",
11271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
11291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11302043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
11312043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#include <asm/bfin-lq035q1.h>
11322043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
11332043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
11342043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.mode = 	LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
113546aa04f9b678d1d6f3558429109326775ca87715Michael Hennerich	.use_bl = 	0,	/* let something else control the LCD Blacklight */
11362043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.gpio_bl =	GPIO_PF7,
11372043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
11382043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
11392043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct resource bfin_lq035q1_resources[] = {
11402043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	{
11412043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.start = IRQ_PPI_ERROR,
11422043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.end = IRQ_PPI_ERROR,
11432043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.flags = IORESOURCE_IRQ,
11442043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
11452043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
11462043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
11472043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerichstatic struct platform_device bfin_lq035q1_device = {
11482043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.name		= "bfin-lq035q1",
11492043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.id		= -1,
11502043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.num_resources 	= ARRAY_SIZE(bfin_lq035q1_resources),
11512043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.resource 	= bfin_lq035q1_resources,
11522043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	.dev		= {
11532043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich		.platform_data = &bfin_lq035q1_data,
11542043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	},
11552043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich};
11562043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
11572043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
11581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
11591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource bfin_uart_resources[] = {
1160233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
11611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
11621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0xFFC00400,
11631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0xFFC004FF,
11641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1165233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	},
1166233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#endif
1167233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
1168233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang	{
11691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0xFFC02000,
11701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0xFFC020FF,
11711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
11721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1173233b28a91caf7cff326e604c437a364eaf794106Sonic Zhang#endif
11741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_uart_device = {
11771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-uart",
11781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
11791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(bfin_uart_resources),
11801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = bfin_uart_resources,
11811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
11821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
11831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
11845be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
11855be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR0
118642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
11875be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
11885be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC00400,
11895be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC004FF,
11905be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
11915be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
119242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
119342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
119442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
119542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
119642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
119742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
119842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
119942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
120042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
120142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
120242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
120342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang
120442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
120542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
120642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 0,
120742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
120842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
120942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
12105be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
12115be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR1
121242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir1_resources[] = {
12135be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
12145be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC02000,
12155be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC020FF,
12165be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
12175be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
121842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
121942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART1_RX,
122042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART1_RX+1,
122142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
122242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
122342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
122442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART1_RX,
122542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART1_RX+1,
122642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
122742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
12285be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
12295be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
123042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir1_device = {
12315be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.name = "bfin_sir",
123242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 1,
123342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir1_resources),
123442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir1_resources,
12355be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
12365be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
123742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
12385be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
12391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
1240c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_twi0_resource[] = {
1241c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
1242c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = TWI0_REGBASE,
1243c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = TWI0_REGBASE,
1244c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1245c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1246c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
1247c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = IRQ_TWI,
1248c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = IRQ_TWI,
1249c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1250c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1251c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1252c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
12531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device i2c_bfin_twi_device = {
12541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "i2c-bfin-twi",
12551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1256c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_twi0_resource),
1257c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_twi0_resource,
12581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
12591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
12601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
126151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
126251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#include <linux/input.h>
1263f39d56ec469a9ade221ceeb85a37b051374f616bMichael Hennerich#include <linux/i2c/adp5588.h>
126451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = {
126551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[0]	 = KEY_GRAVE,
126651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[1]	 = KEY_1,
126751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[2]	 = KEY_2,
126851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[3]	 = KEY_3,
126951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[4]	 = KEY_4,
127051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[5]	 = KEY_5,
127151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[6]	 = KEY_6,
127251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[7]	 = KEY_7,
127351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[8]	 = KEY_8,
127451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[9]	 = KEY_9,
127551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[10]	 = KEY_0,
127651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[11]	 = KEY_MINUS,
127751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[12]	 = KEY_EQUAL,
127851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[13]	 = KEY_BACKSLASH,
127951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[15]	 = KEY_KP0,
128051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[16]	 = KEY_Q,
128151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[17]	 = KEY_W,
128251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[18]	 = KEY_E,
128351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[19]	 = KEY_R,
128451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[20]	 = KEY_T,
128551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[21]	 = KEY_Y,
128651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[22]	 = KEY_U,
128751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[23]	 = KEY_I,
128851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[24]	 = KEY_O,
128951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[25]	 = KEY_P,
129051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[26]	 = KEY_LEFTBRACE,
129151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[27]	 = KEY_RIGHTBRACE,
129251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[29]	 = KEY_KP1,
129351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[30]	 = KEY_KP2,
129451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[31]	 = KEY_KP3,
129551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[32]	 = KEY_A,
129651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[33]	 = KEY_S,
129751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[34]	 = KEY_D,
129851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[35]	 = KEY_F,
129951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[36]	 = KEY_G,
130051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[37]	 = KEY_H,
130151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[38]	 = KEY_J,
130251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[39]	 = KEY_K,
130351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[40]	 = KEY_L,
130451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[41]	 = KEY_SEMICOLON,
130551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[42]	 = KEY_APOSTROPHE,
130651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[43]	 = KEY_BACKSLASH,
130751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[45]	 = KEY_KP4,
130851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[46]	 = KEY_KP5,
130951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[47]	 = KEY_KP6,
131051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[48]	 = KEY_102ND,
131151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[49]	 = KEY_Z,
131251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[50]	 = KEY_X,
131351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[51]	 = KEY_C,
131451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[52]	 = KEY_V,
131551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[53]	 = KEY_B,
131651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[54]	 = KEY_N,
131751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[55]	 = KEY_M,
131851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[56]	 = KEY_COMMA,
131951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[57]	 = KEY_DOT,
132051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[58]	 = KEY_SLASH,
132151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[60]	 = KEY_KPDOT,
132251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[61]	 = KEY_KP7,
132351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[62]	 = KEY_KP8,
132451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[63]	 = KEY_KP9,
132551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[64]	 = KEY_SPACE,
132651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[65]	 = KEY_BACKSPACE,
132751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[66]	 = KEY_TAB,
132851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[67]	 = KEY_KPENTER,
132951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[68]	 = KEY_ENTER,
133051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[69]	 = KEY_ESC,
133151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[70]	 = KEY_DELETE,
133251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[74]	 = KEY_KPMINUS,
133351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[76]	 = KEY_UP,
133451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[77]	 = KEY_DOWN,
133551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[78]	 = KEY_RIGHT,
133651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	[79]	 = KEY_LEFT,
133751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
133851ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
133951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerichstatic struct adp5588_kpad_platform_data adp5588_kpad_data = {
134051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.rows		= 8,
134151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.cols		= 10,
134251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymap		= adp5588_keymap,
134351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5588_keymap),
134451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	.repeat		= 0,
134551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich};
134651ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
134751ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich
13483ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
13493ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#include <linux/mfd/adp5520.h>
13503ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13513ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
13523ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Backlight Data
13533ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
13543ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13553ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_backlight_platfrom_data adp5520_backlight_data = {
13563ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.fade_in 		= FADE_T_1200ms,
13573ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.fade_out 		= FADE_T_1200ms,
13583ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.fade_led_law 		= BL_LAW_LINEAR,
13593ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.en_ambl_sens 		= 1,
13603ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.abml_filt 		= BL_AMBL_FILT_640ms,
13613ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l1_daylight_max 	= BL_CUR_mA(15),
13623ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l1_daylight_dim 	= BL_CUR_mA(0),
13633ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l2_office_max 		= BL_CUR_mA(7),
13643ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l2_office_dim 		= BL_CUR_mA(0),
13653ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l3_dark_max 		= BL_CUR_mA(3),
13663ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l3_dark_dim 		= BL_CUR_mA(0),
13673ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l2_trip 		= L2_COMP_CURR_uA(700),
13683ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l2_hyst 		= L2_COMP_CURR_uA(50),
13693ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l3_trip 		= L3_COMP_CURR_uA(80),
13703ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.l3_hyst 		= L3_COMP_CURR_uA(20),
13713ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
13723ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13733ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
13743ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 LEDs Data
13753ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
13763ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13773ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#include <linux/leds.h>
13783ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13793ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct led_info adp5520_leds[] = {
13803ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
13813ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led1",
13823ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
13833ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED1_ADP5501_LED0 | LED_OFFT_600ms,
13843ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
13853ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#ifdef ADP5520_EN_ALL_LEDS
13863ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
13873ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led2",
13883ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
13893ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED2_ADP5501_LED1,
13903ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
13913ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
13923ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led3",
13933ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.default_trigger = "none",
13943ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.flags = FLAG_ID_ADP5520_LED3_ADP5501_LED2,
13953ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
13963ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
13973ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
13983ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
13993ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_leds_platfrom_data adp5520_leds_data = {
14003ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.num_leds = ARRAY_SIZE(adp5520_leds),
14013ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.leds = adp5520_leds,
14023ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.fade_in = FADE_T_600ms,
14033ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.fade_out = FADE_T_600ms,
14043ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.led_on_time = LED_ONT_600ms,
14053ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14063ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14073ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
14083ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 GPIO Data
14093ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
14103ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14113ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_gpio_platfrom_data adp5520_gpio_data = {
14123ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.gpio_start = 50,
14133ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.gpio_en_mask = GPIO_C1 | GPIO_C2 | GPIO_R2,
14143ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.gpio_pullup_mask = GPIO_C1 | GPIO_C2 | GPIO_R2,
14153ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14163ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14173ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
14183ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520 Keypad Data
14193ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
14203ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14213ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#include <linux/input.h>
14223ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic const unsigned short adp5520_keymap[ADP5520_KEYMAPSIZE] = {
14233ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(0, 0)]	= KEY_GRAVE,
14243ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(0, 1)]	= KEY_1,
14253ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(0, 2)]	= KEY_2,
14263ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(0, 3)]	= KEY_3,
14273ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(1, 0)]	= KEY_4,
14283ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(1, 1)]	= KEY_5,
14293ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(1, 2)]	= KEY_6,
14303ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(1, 3)]	= KEY_7,
14313ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(2, 0)]	= KEY_8,
14323ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(2, 1)]	= KEY_9,
14333ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(2, 2)]	= KEY_0,
14343ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(2, 3)]	= KEY_MINUS,
14353ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(3, 0)]	= KEY_EQUAL,
14363ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(3, 1)]	= KEY_BACKSLASH,
14373ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(3, 2)]	= KEY_BACKSPACE,
14383ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	[KEY(3, 3)]	= KEY_ENTER,
14393ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14403ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14413ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_keys_platfrom_data adp5520_keys_data = {
14423ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.rows_en_mask	= ROW_R3 | ROW_R2 | ROW_R1 | ROW_R0,
14433ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.cols_en_mask	= COL_C3 | COL_C2 | COL_C1 | COL_C0,
14443ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymap		= adp5520_keymap,
14453ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.keymapsize	= ARRAY_SIZE(adp5520_keymap),
14463ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.repeat		= 0,
14473ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14483ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14493ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	/*
14503ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 *  ADP5520/5501 Multifuction Device Init Data
14513ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	 */
14523ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14533ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_subdev_info adp5520_subdevs[] = {
14543ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
14553ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-backlight",
14563ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.id = ID_ADP5520,
14573ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = &adp5520_backlight_data,
14583ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
14593ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
14603ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-led",
14613ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.id = ID_ADP5520,
14623ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = &adp5520_leds_data,
14633ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
14643ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
14653ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-gpio",
14663ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.id = ID_ADP5520,
14673ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = &adp5520_gpio_data,
14683ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
14693ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
14703ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.name = "adp5520-keys",
14713ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.id = ID_ADP5520,
14723ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = &adp5520_keys_data,
14733ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
14743ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14753ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14763ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerichstatic struct adp5520_platform_data adp5520_pdev_data = {
14773ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.num_subdevs = ARRAY_SIZE(adp5520_subdevs),
14783ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	.subdevs = adp5520_subdevs,
14793ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich};
14803ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
14813ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
14823ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich
148381d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wustatic struct i2c_board_info __initdata bfin_i2c_board_info[] = {
1484427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song#if defined(CONFIG_INPUT_EVAL_AD7142EB)
148581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
1486427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		I2C_BOARD_INFO("ad7142_captouch", 0x2C),
14874c94c3e09adba9718218d6e3d35b2dfae81f3911Barry Song		.irq = IRQ_PG5,
1488427f277e5f472b6c1bc444ef5f7d30ebe280420eBarry Song		.platform_data = (void *)&ad7142_platfrom_data,
148981d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
149081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1491ebd5833327e3fb46eb55553d8f5432b5226bf897Michael Hennerich#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
149281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
149381d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_lcd", 0x22),
149481d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
149581d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
1496204844ebd08cfb0c83689e55d6633dcd0230d36dMichael Hennerich#if defined(CONFIG_INPUT_PCF8574) || defined(CONFIG_INPUT_PCF8574_MODULE)
149781d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	{
149881d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu		I2C_BOARD_INFO("pcf8574_keypad", 0x27),
1499f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG6,
1500f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	},
1501f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#endif
1502f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
1503f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich	{
1504f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		I2C_BOARD_INFO("ad7879", 0x2F),
1505f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.irq = IRQ_PG5,
1506f51501551ef5c3f3d3911fbd736664d614014344Michael Hennerich		.platform_data = (void *)&bfin_ad7879_ts_info,
150781d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	},
150881d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu#endif
150951ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
151051ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	{
151151ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		I2C_BOARD_INFO("adp5588-keys", 0x34),
151251ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.irq = IRQ_PG0,
151351ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich		.platform_data = (void *)&adp5588_kpad_data,
151451ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich	},
151551ed9ad7d239c7c10af088d1b7c5f3ee8d022f94Michael Hennerich#endif
15163ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
15173ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	{
15183ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		I2C_BOARD_INFO("pmic-adp5520", 0x32),
15194f84b6e0bb9a7d92c791ba3607674c98f69418cbMike Frysinger		.irq = IRQ_PG0,
15203ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich		.platform_data = (void *)&adp5520_pdev_data,
15213ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich	},
15223ea57218fde5fe6c2ff449d4c30fc69ac6976096Michael Hennerich#endif
1523ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#if defined(CONFIG_INPUT_ADXL34X_I2C) || defined(CONFIG_INPUT_ADXL34X_I2C_MODULE)
1524ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	{
1525ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		I2C_BOARD_INFO("adxl34x", 0x53),
1526ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.irq = IRQ_PG3,
1527ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich		.platform_data = (void *)&adxl34x_info,
1528ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich	},
1529ffc4d8bc4435918d2fd1e840b0bf985e7b56f0d3Michael Hennerich#endif
153081d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu};
153181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu
15321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
15331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport0_uart_device = {
15341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
15351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
15361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
15371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
15381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport1_uart_device = {
15391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
15401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
15411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
15421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
15431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1544c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
15452c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define CF_IDE_NAND_CARD_USE_HDD_INTERFACE
15462c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich/* #define CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE */
1547c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
15482c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#ifdef CF_IDE_NAND_CARD_USE_HDD_INTERFACE
15492c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#define PATA_INT	IRQ_PF5
1550c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct pata_platform_info bfin_pata_platform_data = {
1551c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.ioport_shift = 1,
155264e5c51291ec760e7fdb7628fe63690d1dc6aaf7Mike Frysinger	.irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
1553c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1554c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1555c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_pata_resources[] = {
1556c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
1557c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x20314020,
1558c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031403F,
1559c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1560c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1561c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
1562c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x2031401C,
1563c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2031401F,
1564c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
1565c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1566c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
1567c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = PATA_INT,
1568c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = PATA_INT,
1569c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
1570c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
1571c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
15722c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#elif defined(CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE)
15732c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct pata_platform_info bfin_pata_platform_data = {
15742c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	.ioport_shift = 0,
15752c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
1576648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich/* CompactFlash Storage Card Memory Mapped Adressing
1577648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich * /REG = A11 = 1
1578648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich */
15792c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerichstatic struct resource bfin_pata_resources[] = {
15802c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
1581648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x20211800,
1582648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x20211807,
15832c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
15842c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
15852c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	{
1586648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.start = 0x2021180E,	/* Device Ctl */
1587648882d940a1f84cbf11418ae6e405ef42a66855Michael Hennerich		.end = 0x2021180E,
15882c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich		.flags = IORESOURCE_MEM,
15892c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich	},
15902c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich};
15912c8beb2cbef632a3683950aab8bcd9735a0a0270Michael Hennerich#endif
1592c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1593c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_pata_device = {
1594c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "pata_platform",
1595c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = -1,
1596c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pata_resources),
1597c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_pata_resources,
1598c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.dev = {
1599c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_pata_platform_data,
1600c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	}
1601c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
1602c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
1603c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
160414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
160514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich{
160614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_085, 250000000),
160714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_090, 376000000),
160814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_095, 426000000),
160914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_100, 426000000),
161014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_105, 476000000),
161114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_110, 476000000),
161214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_115, 476000000),
161314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_120, 500000000),
161414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_125, 533000000),
161514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_130, 600000000),
161614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
161714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
161814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
161914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
162014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
162114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.vr_settling_time = 25 /* us */,
162214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
162314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
162414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct platform_device bfin_dpmc = {
162514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.name = "bfin dpmc",
162614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.dev = {
162714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
162814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	},
162914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
163014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
16311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device *stamp_devices[] __initdata = {
163214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
163314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	&bfin_dpmc,
163414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
16351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
16361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_pcmcia_cf_device,
16371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
16401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&rtc_device,
16411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
16441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&sl811_hcd_device,
16451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
16481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&isp1362_hcd_device,
16491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16513f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
16523f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich	&bfin_isp1760_device,
16533f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich#endif
16543f37569044cb3d9ba4722710b84d018f573d4b0eMichael Hennerich
16551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
16561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&smc91x_device,
16571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1659f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
1660f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau	&dm9000_device,
1661f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau#endif
1662f40d24d909ad99c802a6813ff32b6feb20ab8c71Alex Landau
1663561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
1664561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich	&ax88180_device,
1665561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich#endif
1666561cc18b8696fd41367544f45542c096fa08d878Michael Hennerich
16671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
166865319628db2c7a630daadfeec4d371aaca788482Graf Yang	&bfin_mii_bus,
16691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_mac_device,
16701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
16731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&net2272_bfin_device,
16741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
1677c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_spi0_device,
16781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16801e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#if defined(CONFIG_SPI_BFIN_SPORT) || defined(CONFIG_SPI_BFIN_SPORT_MODULE)
16811e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi0_device,
16821e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai	&bfin_sport_spi1_device,
16831e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai#endif
16841e9aa95526c3dfc50e55665c7129469a12593bebCliff Cai
16851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
16861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_fb_device,
16871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
16881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
16892043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
16902043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich	&bfin_lq035q1_device,
16912043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich#endif
16922043f3f7312cc7fbbc2acffb9d87265b0ad9a529Michael Hennerich
1693c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
1694c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_fb_adv7393_device,
1695c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
1696c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
16971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
16981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_uart_device,
16991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
17001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
17015be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
170242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
170342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
170442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
170542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR1
170642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir1_device,
170742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
17085be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
17095be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
17101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
17111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&i2c_bfin_twi_device,
17121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
17131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
17141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
17151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport0_uart_device,
17161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport1_uart_device,
17171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1718c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1719c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
1720c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_pata_device,
1721c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
17222463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich
17232463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
17242463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich	&bfin_device_gpiokeys,
17252463ef22bf8b6e22048bd26f940c014f7e1f0998Michael Hennerich#endif
1726cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger
1727cad2ab65dd1c7d65153ffccd71c90db028fd62f0Mike Frysinger	&bfin_gpios_device,
1728793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger
1729fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#if defined(CONFIG_MTD_NAND_PLATFORM) || defined(CONFIG_MTD_NAND_PLATFORM_MODULE)
1730fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	&bfin_async_nand_device,
1731fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger#endif
1732fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger
1733793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
1734de8c43f2fca9bb06f3ee87b38a61d5d9966ce221Mike Frysinger	&stamp_flash_device,
1735793dc27b51b2ffff95b72408e2ef44e0995c185bMike Frysinger#endif
17361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
17371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
17381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic int __init stamp_init(void)
17391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
1740b85d858b40a28107ee50ca9e89f57c0e35c251c6Harvey Harrison	printk(KERN_INFO "%s(): registering device resources\n", __func__);
174181d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu	i2c_register_board_info(0, bfin_i2c_board_info,
174281d9c7f27dd679df6d03df53eba4fd12caafdb47Bryan Wu				ARRAY_SIZE(bfin_i2c_board_info));
1743fc68911ee379bff429c2f8dfc0a4d3277eb193ecMike Frysinger	bfin_plat_nand_init();
17441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
17455bda27235b24146cf870de663141ee4fbfa8a70bMike Frysinger	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
1746c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
17471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	return 0;
17481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
17491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
17501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuarch_initcall(stamp_init);
1751c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1752c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wuvoid native_machine_restart(char *cmd)
1753c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu{
1754c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	/* workaround reboot hang when booting from SPI */
1755c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	if ((bfin_read_SYSCR() & 0x7) == 0x3)
1756b52dae3139066765a7d96563e9cd33d9e60efe33Sonic Zhang		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
1757c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu}
1758137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger
1759137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger/*
1760137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger * Currently the MAC address is saved in Flash by U-Boot
1761137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger */
1762137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger#define FLASH_MAC	0x203f0000
17639862cc5278aabd82230369a142c817e37a42caa3Mike Frysingervoid bfin_get_ether_addr(char *addr)
1764137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger{
1765137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
1766137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger	*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
1767137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger}
17689862cc5278aabd82230369a142c817e37a42caa3Mike FrysingerEXPORT_SYMBOL(bfin_get_ether_addr);
1769