1dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/*
296f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Copyright 2004-2009 Analog Devices Inc.
396f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                2005 National ICT Australia (NICTA)
496f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                      Aidan Williams <aidan@nicta.com.au>
5dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich *
696f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Licensed under the GPL-2
7dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich */
8dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
9dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/device.h>
10dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/platform_device.h>
11dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/mtd/mtd.h>
12f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#include <linux/mtd/physmap.h>
13dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/mtd/partitions.h>
14dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/spi/spi.h>
15dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/spi/flash.h>
16dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/irq.h>
17dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/interrupt.h>
18dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/bfin5xx_spi.h>
19dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/dma.h>
20dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/gpio.h>
21dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/nand.h>
22dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/portmux.h>
23dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/dpmc.h>
24dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/input.h>
25dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
26dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/*
27dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich * Name the Board for the /proc/cpuinfo
28dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich */
29fe85cad25e56aad5e020ea5cab50a100892f645bMike Frysingerconst char bfin_board_name[] = "ADI BF538-EZKIT";
30dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
31dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/*
32dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich *  Driver needs to know address, irq and flag pin.
33dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich */
34dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
35dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
36dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
37dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device rtc_device = {
38dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "rtc-bfin",
39dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id   = -1,
40dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
41fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_RTC_DRV_BFIN */
42dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
43dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
44dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_SERIAL_BFIN_UART0
456bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart0_resources[] = {
46dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
476bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART0_THR,
486bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART0_GCTL+2,
49dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
50dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
516bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
52edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART0_TX,
53edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_TX,
54edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
55edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
56edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
576bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_RX,
58edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_RX,
596bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
606bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
616bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
626bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_ERROR,
636bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_ERROR,
646bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
656bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
666bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
676bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_TX,
686bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_TX,
696bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
726bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_RX,
736bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_RX,
746bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
756bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
766bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_BFIN_UART0_CTSRTS
776bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* CTS pin */
786bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG7,
796bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG7,
806bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
816bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
826bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{	/* RTS pin */
836bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = GPIO_PG6,
846bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = GPIO_PG6,
856bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IO,
866bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
876bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
886bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
896bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
90a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart0_peripherals[] = {
916bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART0_TX, P_UART0_RX, 0
926bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
936bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
946bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart0_device = {
956bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.name = "bfin-uart",
966bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 0,
976bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
986bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart0_resources,
996bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
1006bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
1016bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1026bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
103fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_UART0 */
104dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_SERIAL_BFIN_UART1
1056bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart1_resources[] = {
106dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
1076bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART1_THR,
1086bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART1_GCTL+2,
109dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
110dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
1116bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
112edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART1_TX,
113edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART1_TX,
114edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
115edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
116edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
1176bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_RX,
118edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART1_RX,
1196bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
1206bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1216bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1226bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART1_ERROR,
1236bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART1_ERROR,
1246bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
1256bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1266bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1276bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_TX,
1286bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_TX,
1296bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
1306bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1316bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1326bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART1_RX,
1336bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART1_RX,
1346bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
1356bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1366bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
1376bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
138a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart1_peripherals[] = {
1396bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART1_TX, P_UART1_RX, 0
1406bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
1416bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
1426bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart1_device = {
1436bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.name = "bfin-uart",
1446bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 1,
1456bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart1_resources),
1466bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart1_resources,
1476bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
1486bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart1_peripherals, /* Passed to driver */
1496bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1506bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
151fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_UART1 */
152dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_SERIAL_BFIN_UART2
1536bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart2_resources[] = {
154dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
1556bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART2_THR,
1566bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART2_GCTL+2,
157dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
158dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
1596bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
160edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART2_TX,
161edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART2_TX,
162edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
163edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
164edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
1656bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART2_RX,
166edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART2_RX,
1676bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
1686bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1696bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART2_ERROR,
1716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART2_ERROR,
1726bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
1736bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1746bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1756bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART2_TX,
1766bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART2_TX,
1776bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
1786bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
1796bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
1806bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART2_RX,
1816bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART2_RX,
1826bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
1836bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
184dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
185dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
186a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart2_peripherals[] = {
1876bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART2_TX, P_UART2_RX, 0
1886bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
1896bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
1906bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart2_device = {
191dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin-uart",
1926bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 2,
1936bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart2_resources),
1946bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart2_resources,
1956bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
1966bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart2_peripherals, /* Passed to driver */
1976bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
198dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
199fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_UART2 */
200fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN */
201dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
202dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
203dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_BFIN_SIR0
20442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
205dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
206dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = 0xFFC00400,
207dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = 0xFFC004FF,
208dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
209dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
21042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
21142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
21242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
21342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
21442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
21542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
21642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
21742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
21842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
21942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
22042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
22142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
22242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
22342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 0,
22442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
22542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
22642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
227fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_BFIN_SIR0 */
228dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_BFIN_SIR1
22942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir1_resources[] = {
230dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
231dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = 0xFFC02000,
232dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = 0xFFC020FF,
233dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
234dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
23542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
23642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART1_RX,
23742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART1_RX+1,
23842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
23942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
24042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
24142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART1_RX,
24242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART1_RX+1,
24342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
24442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
24542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
24642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir1_device = {
24742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
24842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 1,
24942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir1_resources),
25042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir1_resources,
25142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
252fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_BFIN_SIR1 */
253dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#ifdef CONFIG_BFIN_SIR2
25442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir2_resources[] = {
255dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
256dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = 0xFFC02100,
257dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = 0xFFC021FF,
258dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
259dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
26042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
26142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART2_RX,
26242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART2_RX+1,
26342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
26442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
26542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
26642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART2_RX,
26742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART2_RX+1,
26842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
26942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
270dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
27142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir2_device = {
272dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin_sir",
27342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 2,
27442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir2_resources),
27542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir2_resources,
276dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
277fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_BFIN_SIR2 */
278fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_BFIN_SIR */
279dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
280df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
281df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
282df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport0_uart_resources[] = {
283df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
284df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT0_TCR1,
285df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT0_MRCS3+4,
286df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
287df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
288df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
289df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_RX,
290df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_RX+1,
291df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
292df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
293df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
294df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_ERROR,
295df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_ERROR,
296df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
297df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
298df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
299df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
300a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport0_peripherals[] = {
301df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
302e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT0_DRPRI, P_SPORT0_RSCLK, 0
303df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
304df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
305df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct platform_device bfin_sport0_uart_device = {
306df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.name = "bfin-sport-uart",
307df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.id = 0,
308df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
309df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport0_uart_resources,
310df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
311df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport0_peripherals, /* Passed to driver */
312df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
313df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
314fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_SPORT0_UART */
315df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
316df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport1_uart_resources[] = {
317df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
318df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT1_TCR1,
319df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT1_MRCS3+4,
320df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
321df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
322df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
323df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_RX,
324df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_RX+1,
325df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
326df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
327df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
328df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_ERROR,
329df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_ERROR,
330df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
331df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
332df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
333df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
334a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport1_peripherals[] = {
335df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
336e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT1_DRPRI, P_SPORT1_RSCLK, 0
337df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
338df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
339df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct platform_device bfin_sport1_uart_device = {
340df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.name = "bfin-sport-uart",
341df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.id = 1,
342df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
343df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport1_uart_resources,
344df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
345df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport1_peripherals, /* Passed to driver */
346df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
347df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
348fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_SPORT1_UART */
349df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
350df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport2_uart_resources[] = {
351df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
352df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT2_TCR1,
353df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT2_MRCS3+4,
354df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
355df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
356df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
357df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT2_RX,
358df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT2_RX+1,
359df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
360df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
361df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
362df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT2_ERROR,
363df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT2_ERROR,
364df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
365df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
366df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
367df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
368a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport2_peripherals[] = {
369df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS,
370df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0
371df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
372df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
373df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct platform_device bfin_sport2_uart_device = {
374df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.name = "bfin-sport-uart",
375df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.id = 2,
376df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport2_uart_resources),
377df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport2_uart_resources,
378df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
379df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport2_peripherals, /* Passed to driver */
380df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
381df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
382fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_SPORT2_UART */
383df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
384df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport3_uart_resources[] = {
385df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
386df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT3_TCR1,
387df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT3_MRCS3+4,
388df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
389df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
390df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
391df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT3_RX,
392df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT3_RX+1,
393df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
394df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
395df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
396df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT3_ERROR,
397df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT3_ERROR,
398df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
399df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
400df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
401df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
402a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport3_peripherals[] = {
403df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS,
404df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0
405df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
406df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
407df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct platform_device bfin_sport3_uart_device = {
408df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.name = "bfin-sport-uart",
409df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.id = 3,
410df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport3_uart_resources),
411df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport3_uart_resources,
412df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
413df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport3_peripherals, /* Passed to driver */
414df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
415df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
416fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_SPORT3_UART */
417fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SERIAL_BFIN_SPORT */
418df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
419706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
420a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_can_peripherals[] = {
421706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	P_CAN0_RX, P_CAN0_TX, 0
422706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
423706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
424706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Songstatic struct resource bfin_can_resources[] = {
425706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
426706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = 0xFFC02A00,
427706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = 0xFFC02FFF,
428706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_MEM,
429706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
430706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
431706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_RX,
432706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_RX,
433706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
434706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
435706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
436706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_TX,
437706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_TX,
438706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
439706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
440706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	{
441706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.start = IRQ_CAN_ERROR,
442706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.end = IRQ_CAN_ERROR,
443706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.flags = IORESOURCE_IRQ,
444706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
445706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
446706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
447706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Songstatic struct platform_device bfin_can_device = {
448706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.name = "bfin_can",
449706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.num_resources = ARRAY_SIZE(bfin_can_resources),
450706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.resource = bfin_can_resources,
451706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	.dev = {
452706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song		.platform_data = &bfin_can_peripherals, /* Passed to driver */
453706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	},
454706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song};
455fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_CAN_BFIN */
456706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
457dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/*
458dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich *  USB-LAN EzExtender board
459dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich *  Driver needs to know address, irq and flag pin.
460dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich */
461dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
46261f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich#include <linux/smc91x.h>
46361f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
46461f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerichstatic struct smc91x_platdata smc91x_info = {
46561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
46661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.leda = RPC_LED_100_10,
46761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.ledb = RPC_LED_TX_RX,
46861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich};
46961f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
470dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource smc91x_resources[] = {
471dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
472dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.name = "smc91x-regs",
473dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = 0x20310300,
474dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = 0x20310300 + 16,
475dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
476dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}, {
477dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = IRQ_PF0,
478dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = IRQ_PF0,
479dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
480dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
481dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
482dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device smc91x_device = {
483dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "smc91x",
484dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 0,
485dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(smc91x_resources),
486dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = smc91x_resources,
48761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.dev	= {
48861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich		.platform_data	= &smc91x_info,
48961f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	},
490dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
491fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SMC91X */
492dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
4937d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
494dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* all SPI peripherals info goes here */
495dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_MTD_M25P80) \
496dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	|| defined(CONFIG_MTD_M25P80_MODULE)
497dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* SPI flash chip (m25p16) */
498dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct mtd_partition bfin_spi_flash_partitions[] = {
499dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
500dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.name = "bootloader(spi)",
501dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.size = 0x00040000,
502dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.offset = 0,
503dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.mask_flags = MTD_CAP_ROM
504dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}, {
505dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.name = "linux kernel(spi)",
506dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.size = 0x1c0000,
507dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.offset = 0x40000
508dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}
509dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
510dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
511dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct flash_platform_data bfin_spi_flash_data = {
512dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "m25p80",
513dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.parts = bfin_spi_flash_partitions,
514dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
515dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.type = "m25p16",
516dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
517dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
518dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin5xx_spi_chip spi_flash_chip_info = {
519dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.enable_dma = 0,         /* use dma transfer with this chip*/
520dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
521fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_MTD_M25P80 */
522fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SPI_BFIN5XX */
523dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
524dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879) || defined(CONFIG_TOUCHSCREEN_AD7879_MODULE)
525dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/spi/ad7879.h>
526dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic const struct ad7879_platform_data bfin_ad7879_ts_info = {
527dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.model			= 7879,	/* Model = AD7879 */
528dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.x_plate_ohms		= 620,	/* 620 Ohm from the touch datasheet */
529dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pressure_max		= 10000,
530dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pressure_min		= 0,
531dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.first_conversion_delay = 3,	/* wait 512us before do a first conversion */
532dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.acquisition_time 	= 1,	/* 4us acquisition time per sample */
533dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.median			= 2,	/* do 8 measurements */
534dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.averaging 		= 1,	/* take the average of 4 middle samples */
535dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pen_down_acc_interval 	= 255,	/* 9.4 ms */
536244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_export		= 1,	/* Export GPIO to gpiolib */
537244d34230b7447fba95221dbf39b39e94257939cMichael Hennerich	.gpio_base		= -1,	/* Dynamic allocation */
538dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
539fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_TOUCHSCREEN_AD7879 */
540dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
541dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
542dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <asm/bfin-lq035q1.h>
543dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
544dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
545d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
546d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.ppi_mode = USE_RGB565_16_BIT_PPI,
547d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.use_bl = 0,	/* let something else control the LCD Blacklight */
548d94a1aa44ed6bfe8d8ab36c02de652d4fcf0d2c3Michael Hennerich	.gpio_bl = GPIO_PF7,
549dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
550dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
551dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_lq035q1_resources[] = {
552dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
553dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = IRQ_PPI_ERROR,
554dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end = IRQ_PPI_ERROR,
555dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
556dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
557dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
558dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
559dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bfin_lq035q1_device = {
560dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name		= "bfin-lq035q1",
561dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id		= -1,
562dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources 	= ARRAY_SIZE(bfin_lq035q1_resources),
563dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource 	= bfin_lq035q1_resources,
564dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev		= {
565dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bfin_lq035q1_data,
566dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
567dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
568fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_FB_BFIN_LQ035Q1 */
569dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
570dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct spi_board_info bf538_spi_board_info[] __initdata = {
571dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_MTD_M25P80) \
572dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	|| defined(CONFIG_MTD_M25P80_MODULE)
573dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
574dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		/* the modalias must be the same as spi device driver name */
575dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.modalias = "m25p80", /* Name of spi_driver for this device */
576dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
577dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.bus_num = 0, /* Framework bus number */
578dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.chip_select = 1, /* SPI_SSEL1*/
579dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bfin_spi_flash_data,
580dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.controller_data = &spi_flash_chip_info,
581dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.mode = SPI_MODE_3,
582dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
583fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_MTD_M25P80 */
584dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
585dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
586dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.modalias = "ad7879",
587dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bfin_ad7879_ts_info,
588dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.irq = IRQ_PF3,
589dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.max_speed_hz = 5000000,     /* max spi clock (SCK) speed in HZ */
590dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.bus_num = 0,
591dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.chip_select = 1,
592dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
593dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
594fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_TOUCHSCREEN_AD7879_SPI */
595dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
596dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
597dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.modalias = "bfin-lq035q1-spi",
598dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
599dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.bus_num = 0,
600dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.chip_select = 2,
601dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.mode = SPI_CPHA | SPI_CPOL,
602dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
603fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_FB_BFIN_LQ035Q1 */
604dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
605dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{
606dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.modalias = "spidev",
607dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
608dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.bus_num = 0,
609dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.chip_select = 1,
610dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
611fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_SPI_SPIDEV */
612dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
613dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
614dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* SPI (0) */
615dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_spi0_resource[] = {
616dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[0] = {
617dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = SPI0_REGBASE,
618dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = SPI0_REGBASE + 0xFF,
619dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
620dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
621dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[1] = {
622dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = CH_SPI0,
623dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = CH_SPI0,
62453122693c3cef005495279835286c36c58e035e8Yi Li		.flags = IORESOURCE_DMA,
62553122693c3cef005495279835286c36c58e035e8Yi Li	},
62653122693c3cef005495279835286c36c58e035e8Yi Li	[2] = {
62753122693c3cef005495279835286c36c58e035e8Yi Li		.start = IRQ_SPI0,
62853122693c3cef005495279835286c36c58e035e8Yi Li		.end   = IRQ_SPI0,
629dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
630dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}
631dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
632dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
633dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* SPI (1) */
634dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_spi1_resource[] = {
635dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[0] = {
636dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = SPI1_REGBASE,
637dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = SPI1_REGBASE + 0xFF,
638dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
639dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
640dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[1] = {
641dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = CH_SPI1,
642dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = CH_SPI1,
64353122693c3cef005495279835286c36c58e035e8Yi Li		.flags = IORESOURCE_DMA,
64453122693c3cef005495279835286c36c58e035e8Yi Li	},
64553122693c3cef005495279835286c36c58e035e8Yi Li	[2] = {
64653122693c3cef005495279835286c36c58e035e8Yi Li		.start = IRQ_SPI1,
64753122693c3cef005495279835286c36c58e035e8Yi Li		.end   = IRQ_SPI1,
648dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
649dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}
650dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
651dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
652dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* SPI (2) */
653dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_spi2_resource[] = {
654dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[0] = {
655dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = SPI2_REGBASE,
656dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = SPI2_REGBASE + 0xFF,
657dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
658dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
659dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[1] = {
660dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = CH_SPI2,
661dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = CH_SPI2,
662769cfc0d08e796c593b903ec393a2e90aae5f807Barry Song		.flags = IORESOURCE_DMA,
663769cfc0d08e796c593b903ec393a2e90aae5f807Barry Song	},
664769cfc0d08e796c593b903ec393a2e90aae5f807Barry Song	[2] = {
665769cfc0d08e796c593b903ec393a2e90aae5f807Barry Song		.start = IRQ_SPI2,
666769cfc0d08e796c593b903ec393a2e90aae5f807Barry Song		.end   = IRQ_SPI2,
667dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
668dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	}
669dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
670dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
671dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/* SPI controller data */
672dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin5xx_spi_master bf538_spi_master_info0 = {
673dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_chipselect = 8,
674dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.enable_dma = 1,  /* master has the ability to do dma transfer */
675dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
676dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
677dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
678dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bf538_spi_master0 = {
679dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin-spi",
680dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 0, /* Bus number */
681dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
682dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = bfin_spi0_resource,
683dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev = {
684dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bf538_spi_master_info0, /* Passed to driver */
685dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		},
686dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
687dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
688dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin5xx_spi_master bf538_spi_master_info1 = {
689c5af5451fcf97f38f0c79cbb9f929af2779f234dMike Frysinger	.num_chipselect = 2,
690dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.enable_dma = 1,  /* master has the ability to do dma transfer */
691dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0},
692dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
693dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
694dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bf538_spi_master1 = {
695dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin-spi",
696dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 1, /* Bus number */
697dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(bfin_spi1_resource),
698dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = bfin_spi1_resource,
699dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev = {
700dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bf538_spi_master_info1, /* Passed to driver */
701dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		},
702dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
703dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
704dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin5xx_spi_master bf538_spi_master_info2 = {
705c5af5451fcf97f38f0c79cbb9f929af2779f234dMike Frysinger	.num_chipselect = 2,
706dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.enable_dma = 1,  /* master has the ability to do dma transfer */
707dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.pin_req = {P_SPI2_SCK, P_SPI2_MISO, P_SPI2_MOSI, 0},
708dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
709dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
710dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bf538_spi_master2 = {
711dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin-spi",
712dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 2, /* Bus number */
713dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(bfin_spi2_resource),
714dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = bfin_spi2_resource,
715dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev = {
716dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bf538_spi_master_info2, /* Passed to driver */
717dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		},
718dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
719dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
720dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
721dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_twi0_resource[] = {
722dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[0] = {
723dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = TWI0_REGBASE,
724dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = TWI0_REGBASE + 0xFF,
725dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
726dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
727dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[1] = {
728dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = IRQ_TWI0,
729dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = IRQ_TWI0,
730dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
731dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
732dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
733dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
734dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device i2c_bfin_twi0_device = {
735dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "i2c-bfin-twi",
736dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 0,
737dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(bfin_twi0_resource),
738dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = bfin_twi0_resource,
739dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
740dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
741dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if !defined(CONFIG_BF542)	/* The BF542 only has 1 TWI */
742dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct resource bfin_twi1_resource[] = {
743dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[0] = {
744dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = TWI1_REGBASE,
745dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = TWI1_REGBASE + 0xFF,
746dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_MEM,
747dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
748dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	[1] = {
749dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.start = IRQ_TWI1,
750dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.end   = IRQ_TWI1,
751dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.flags = IORESOURCE_IRQ,
752dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
753dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
754dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
755dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device i2c_bfin_twi1_device = {
756dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "i2c-bfin-twi",
757dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.id = 1,
758dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.num_resources = ARRAY_SIZE(bfin_twi1_resource),
759dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.resource = bfin_twi1_resource,
760dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
761fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_BF542 */
762fa83af7e8f2936732459a2399df87a0b648b454dPaul Gortmaker#endif	/* CONFIG_I2C_BLACKFIN_TWI */
763dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
764dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
765dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#include <linux/gpio_keys.h>
766dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
767dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct gpio_keys_button bfin_gpio_keys_table[] = {
768dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	{BTN_0, GPIO_PC7, 1, "gpio-keys: BTN0"},
769dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
770dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
771dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct gpio_keys_platform_data bfin_gpio_keys_data = {
772dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.buttons        = bfin_gpio_keys_table,
773dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.nbuttons       = ARRAY_SIZE(bfin_gpio_keys_table),
774dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
775dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
776dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bfin_device_gpiokeys = {
777dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name      = "gpio-keys",
778dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev = {
779dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bfin_gpio_keys_data,
780dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
781dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
782dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
783dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
784dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
785dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich{
786dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich/*
787dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich * Internal VLEV BF538SBBC1533
788dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich ****temporarily using these values until data sheet is updated
789dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich */
790dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_100, 150000000),
791dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_100, 250000000),
792dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_110, 276000000),
793dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_115, 301000000),
794dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_120, 525000000),
795dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_125, 550000000),
796dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	VRPAIR(VLEV_130, 600000000),
797dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
798dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
799dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
800dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
801dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
802dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.vr_settling_time = 25 /* us */,
803dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
804dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
805dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device bfin_dpmc = {
806dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.name = "bfin dpmc",
807dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	.dev = {
808dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
809dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	},
810dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
811dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
812f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
813f1cb64625c4f5309747b8067a309e0bcc630b303Barry Songstatic struct mtd_partition ezkit_partitions[] = {
814f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	{
815f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.name       = "bootloader(nor)",
816f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.size       = 0x40000,
817f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.offset     = 0,
818f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	}, {
819f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.name       = "linux kernel(nor)",
820f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.size       = 0x180000,
821f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.offset     = MTDPART_OFS_APPEND,
822f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	}, {
823f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.name       = "file system(nor)",
824f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.size       = MTDPART_SIZ_FULL,
825f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.offset     = MTDPART_OFS_APPEND,
826f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	}
827f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song};
828f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song
829f1cb64625c4f5309747b8067a309e0bcc630b303Barry Songstatic struct physmap_flash_data ezkit_flash_data = {
830f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.width      = 2,
831f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.parts      = ezkit_partitions,
832f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.nr_parts   = ARRAY_SIZE(ezkit_partitions),
833f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song};
834f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song
835f1cb64625c4f5309747b8067a309e0bcc630b303Barry Songstatic struct resource ezkit_flash_resource = {
836f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.start = 0x20000000,
837f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
838f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.end   = 0x202fffff,
839f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#else
840f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.end   = 0x203fffff,
841f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#endif
842f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.flags = IORESOURCE_MEM,
843f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song};
844f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song
845f1cb64625c4f5309747b8067a309e0bcc630b303Barry Songstatic struct platform_device ezkit_flash_device = {
846f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.name          = "physmap-flash",
847f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.id            = 0,
848f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.dev = {
849f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song		.platform_data = &ezkit_flash_data,
850f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	},
851f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.num_resources = 1,
852f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	.resource      = &ezkit_flash_resource,
853f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song};
854f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#endif
855f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song
856dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic struct platform_device *cm_bf538_devices[] __initdata = {
857dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
858dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bfin_dpmc,
859dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
860dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
861dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&rtc_device,
862dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
863dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
864dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
8656bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
8666bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart0_device,
8676bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
8686bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
8696bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart1_device,
8706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
8716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART2
8726bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart2_device,
8736bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
874dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
875dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
8767d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
877dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bf538_spi_master0,
878dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bf538_spi_master1,
879dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bf538_spi_master2,
880dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
881dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
882dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
883dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&i2c_bfin_twi0_device,
884dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&i2c_bfin_twi1_device,
885dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
886dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
887dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
88842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
88942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
89042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
89142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR1
89242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir1_device,
89342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
89442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR2
89542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir2_device,
89642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
897dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
898dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
899df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
900df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
901df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	&bfin_sport0_uart_device,
902df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
903df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
904df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	&bfin_sport1_uart_device,
905df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
906df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
907df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	&bfin_sport2_uart_device,
908df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
909df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
910df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	&bfin_sport3_uart_device,
911df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
912df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
913df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
914706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
915706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song	&bfin_can_device,
916706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song#endif
917706a01b1c6d50b0940ca31d2dc21ba54f095f5afBarry Song
918dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
919dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&smc91x_device,
920dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
921dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
922dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
923dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bfin_lq035q1_device,
924dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
925dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
926dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
927dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	&bfin_device_gpiokeys,
928dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
929c97618d3b7b8ef86a966c4b67b54e5ca15814905Mike Frysinger
930f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
931f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song	&ezkit_flash_device,
932f1cb64625c4f5309747b8067a309e0bcc630b303Barry Song#endif
933dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich};
934dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
935dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerichstatic int __init ezkit_init(void)
936dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich{
937dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	printk(KERN_INFO "%s(): registering device resources\n", __func__);
938dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	platform_add_devices(cm_bf538_devices, ARRAY_SIZE(cm_bf538_devices));
939dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
9407d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
941dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	spi_register_board_info(bf538_spi_board_info,
942dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich			ARRAY_SIZE(bf538_spi_board_info));
943dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
944dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
945dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	return 0;
946dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich}
947dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
948dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennericharch_initcall(ezkit_init);
949c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
950c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangstatic struct platform_device *ezkit_early_devices[] __initdata = {
951c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
952c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
953c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart0_device,
954c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
955c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
956c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart1_device,
957c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
958c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART2
959c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart2_device,
960c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
961c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
962c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
963c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
964c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
965c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport0_uart_device,
966c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
967c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
968c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport1_uart_device,
969c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
970c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
971c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport2_uart_device,
972c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
973c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
974c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport3_uart_device,
975c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
976c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
977c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang};
978c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
979c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangvoid __init native_machine_early_platform_add_devices(void)
980c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang{
981c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	printk(KERN_INFO "register early platform devices\n");
982c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	early_platform_add_devices(ezkit_early_devices,
983c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang		ARRAY_SIZE(ezkit_early_devices));
984c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang}
985