11394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
296f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Copyright 2004-2009 Analog Devices Inc.
396f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *           2008-2009 Bluetechnix
496f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                2005 National ICT Australia (NICTA)
596f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz *                      Aidan Williams <aidan@nicta.com.au>
61394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
796f1050d3df105c9ae6c6ac224f370199ea82fcdRobin Getz * Licensed under the GPL-2 or later.
81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/device.h>
11905905432868fa513f0f783fb9e5724536f4ee1fLars-Peter Clausen#include <linux/export.h>
1243f73fef07eb70be7d508b34eeddf5985e300bb1Mike Frysinger#include <linux/etherdevice.h>
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/platform_device.h>
141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/mtd.h>
151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/partitions.h>
168ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger#include <linux/mtd/physmap.h>
171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/spi.h>
181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/flash.h>
19b964c592d42a7146a0b157147432da882abd3404Mike Frysinger#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
20f02bcec5986870b3ddae26f6be1cde0703abfd8aMike Frysinger#include <linux/usb/isp1362.h>
21b964c592d42a7146a0b157147432da882abd3404Mike Frysinger#endif
220a87e3e92b299e0f1a69b36664ecde2fc296c40aJeff Garzik#include <linux/ata_platform.h>
231f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger#include <linux/irq.h>
24c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/dma.h>
251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <asm/bfin5xx_spi.h>
265d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu#include <asm/portmux.h>
2714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich#include <asm/dpmc.h>
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Name the Board for the /proc/cpuinfo
311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
326058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerconst char bfin_board_name[] = "Bluetechnix CM BF537E";
331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
347d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* all SPI peripherals info goes here */
361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct mtd_partition bfin_spi_flash_partitions[] = {
391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
40aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "bootloader(spi)",
411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0x00020000,
421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0,
431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mask_flags = MTD_CAP_ROM
441f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
45aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "linux kernel(spi)",
461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0xe0000,
471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0x20000
481f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
49aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "file system(spi)",
501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0x700000,
511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0x00100000,
521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	}
531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct flash_platform_data bfin_spi_flash_data = {
561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "m25p80",
571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.parts = bfin_spi_flash_partitions,
581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.type = "m25p64",
601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI flash chip (m25p64) */
631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_flash_chip_info = {
641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,         /* use dma transfer with this chip*/
651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
68f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
69f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerichstatic struct bfin5xx_spi_chip  mmc_spi_chip_info = {
70f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich	.enable_dma = 0,
711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct spi_board_info bfin_spi_board_info[] __initdata = {
751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		/* the modalias must be the same as spi device driver name */
781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "m25p80", /* Name of spi_driver for this device */
791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
80c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0, /* Framework bus number */
811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &bfin_spi_flash_data,
831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_flash_chip_info,
841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
887ba80063e90302287625a105c546c2fc318fcfbfBarry Song#if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
907ba80063e90302287625a105c546c2fc318fcfbfBarry Song		.modalias = "ad183x",
911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
92c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
937ba80063e90302287625a105c546c2fc318fcfbfBarry Song		.chip_select = 4,
941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
97f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
99f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.modalias = "mmc_spi",
100f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
101c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
102f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.chip_select = 1,
103f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.controller_data = &mmc_spi_chip_info,
1041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
1051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
109c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu/* SPI (0) */
110c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_spi0_resource[] = {
111c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
112c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = SPI0_REGBASE,
113c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = SPI0_REGBASE + 0xFF,
114c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
115c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		},
116c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
117c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = CH_SPI,
118c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = CH_SPI,
11953122693c3cef005495279835286c36c58e035e8Yi Li		.flags = IORESOURCE_DMA,
12053122693c3cef005495279835286c36c58e035e8Yi Li	},
12153122693c3cef005495279835286c36c58e035e8Yi Li	[2] = {
12253122693c3cef005495279835286c36c58e035e8Yi Li		.start = IRQ_SPI,
12353122693c3cef005495279835286c36c58e035e8Yi Li		.end   = IRQ_SPI,
124c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
12553122693c3cef005495279835286c36c58e035e8Yi Li	},
126c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
127c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI controller data */
129c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct bfin5xx_spi_master bfin_spi0_info = {
1301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_chipselect = 8,
1311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,  /* master has the ability to do dma transfer */
1325d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
1331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
135c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_spi0_device = {
136c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-spi",
137c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = 0, /* Bus number */
138c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
139c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_spi0_resource,
1401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
141c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_spi0_info, /* Passed to driver */
1421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif  /* spi master and devices */
1451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
1471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device rtc_device = {
1481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "rtc-bfin",
1491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id   = -1,
1501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1530d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich#if defined(CONFIG_FB_HITACHI_TX09) || defined(CONFIG_FB_HITACHI_TX09_MODULE)
1540d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerichstatic struct platform_device hitachi_fb_device = {
1550d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich	.name = "hitachi-tx09",
1560d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich};
1570d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich#endif
1580d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich
1591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
16061f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich#include <linux/smc91x.h>
16161f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
16261f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerichstatic struct smc91x_platdata smc91x_info = {
16361f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
16461f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.leda = RPC_LED_100_10,
16561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.ledb = RPC_LED_TX_RX,
16661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich};
16761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
1681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource smc91x_resources[] = {
1691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20200300,
1711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20200300 + 16,
1721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1731f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF14,
1751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF14,
1761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
1771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		},
1781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device smc91x_device = {
1811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "smc91x",
1821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(smc91x_resources),
1841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = smc91x_resources,
18561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.dev	= {
18661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich		.platform_data	= &smc91x_info,
18761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	},
1881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
1921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource isp1362_hcd_resources[] = {
1931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20308000,
1951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20308000,
1961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1971f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20308004,
1991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20308004,
2001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2011f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PG15,
2031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PG15,
2049e75894c50d126bf3c8efb0efc91d5a93d6163ddMichael Hennerich		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
2051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct isp1362_platform_data isp1362_priv = {
2091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.sel15Kres = 1,
2101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.clknotstop = 0,
2111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.oc_enable = 0,
2121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_act_high = 0,
2131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_edge_triggered = 0,
2141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.remote_wakeup_connected = 0,
2151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.no_power_switching = 1,
2161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power_switching_mode = 0,
2171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device isp1362_hcd_device = {
2201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "isp1362-hcd",
2211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
2221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
2231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &isp1362_priv,
2241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(isp1362_hcd_resources),
2261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = isp1362_hcd_resources,
2271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
2311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource net2272_bfin_resources[] = {
2321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
2336058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = 0x20300000,
2346058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = 0x20300000 + 0x100,
2351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2361f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
2376058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = IRQ_PG13,
2386058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = IRQ_PG13,
2391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
2401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device net2272_bfin_device = {
2441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "net2272",
2451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = -1,
2461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(net2272_bfin_resources),
2471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = net2272_bfin_resources,
2481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2518ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger#if defined(CONFIG_MTD_GPIO_ADDR) || defined(CONFIG_MTD_GPIO_ADDR_MODULE)
2528ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysingerstatic struct mtd_partition cm_partitions[] = {
2538ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	{
2548ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.name   = "bootloader(nor)",
2558ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.size   = 0x40000,
2568ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.offset = 0,
2578ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	}, {
2588ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.name   = "linux kernel(nor)",
2596058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.size   = 0x100000,
2608ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.offset = MTDPART_OFS_APPEND,
2618ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	}, {
2628ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.name   = "file system(nor)",
2638ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.size   = MTDPART_SIZ_FULL,
2648ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.offset = MTDPART_OFS_APPEND,
2658ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	}
2668ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger};
2678ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
2688ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysingerstatic struct physmap_flash_data cm_flash_data = {
2698ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.width    = 2,
2708ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.parts    = cm_partitions,
2718ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.nr_parts = ARRAY_SIZE(cm_partitions),
2728ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger};
2738ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
2748ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysingerstatic unsigned cm_flash_gpios[] = { GPIO_PF4 };
2758ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
2768ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysingerstatic struct resource cm_flash_resource[] = {
2778ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	{
2788ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.name  = "cfi_probe",
2798ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.start = 0x20000000,
2808ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.end   = 0x201fffff,
2818ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.flags = IORESOURCE_MEM,
2828ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	}, {
2838ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.start = (unsigned long)cm_flash_gpios,
2848ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.end   = ARRAY_SIZE(cm_flash_gpios),
2858ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.flags = IORESOURCE_IRQ,
2868ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	}
2878ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger};
2888ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
2898ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysingerstatic struct platform_device cm_flash_device = {
2908ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.name          = "gpio-addr-flash",
2918ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.id            = 0,
2928ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.dev = {
2938ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger		.platform_data = &cm_flash_data,
2948ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	},
2958ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.num_resources = ARRAY_SIZE(cm_flash_resource),
2968ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	.resource      = cm_flash_resource,
2978ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger};
2988ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger#endif
2998ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
3001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
3016058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_SERIAL_BFIN_UART0
3026058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic struct resource bfin_uart0_resources[] = {
3031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
3046bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART0_THR,
3056bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART0_GCTL+2,
3061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3076058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3086058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
309edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART0_TX,
310edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_TX,
311edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
312edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
313edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
3146058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = IRQ_UART0_RX,
315edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_RX,
3166058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IRQ,
3176058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3186058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3196058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = IRQ_UART0_ERROR,
3206058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = IRQ_UART0_ERROR,
3216058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IRQ,
3226058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3236058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3246058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = CH_UART0_TX,
3256058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = CH_UART0_TX,
3266058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_DMA,
3276058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3286058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3296058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = CH_UART0_RX,
3306058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = CH_UART0_RX,
3316058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_DMA,
3326058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3336058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_BFIN_UART0_CTSRTS
3346058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3356058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		/*
3366058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 * Refer to arch/blackfin/mach-xxx/include/mach/gpio.h for the GPIO map.
3376058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 */
3386058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = -1,
3396058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = -1,
3406058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IO,
3416058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3426058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3436058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		/*
3446058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 * Refer to arch/blackfin/mach-xxx/include/mach/gpio.h for the GPIO map.
3456058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 */
3466058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = -1,
3476058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = -1,
3486058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IO,
3496058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3506058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
3516058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer};
3526058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer
353a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart0_peripherals[] = {
3546bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART0_TX, P_UART0_RX, 0
3556bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
3566bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
3576058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic struct platform_device bfin_uart0_device = {
3586058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.name = "bfin-uart",
3596058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.id = 0,
3606058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
3616058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.resource = bfin_uart0_resources,
3626bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
3636bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
3646bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
3656058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer};
3666058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
3676058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_SERIAL_BFIN_UART1
3686058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic struct resource bfin_uart1_resources[] = {
3696058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3706bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = UART1_THR,
3716bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = UART1_GCTL+2,
3721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3746058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
375edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART1_TX,
376edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART1_TX,
377edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
378edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
379edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
3806058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = IRQ_UART1_RX,
381edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART1_RX,
3826058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IRQ,
3836058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3846058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3856058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = IRQ_UART1_ERROR,
3866058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = IRQ_UART1_ERROR,
3876058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IRQ,
3886058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3896058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3906058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = CH_UART1_TX,
3916058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = CH_UART1_TX,
3926058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_DMA,
3936058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3946058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
3956058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = CH_UART1_RX,
3966058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = CH_UART1_RX,
3976058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_DMA,
3986058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
3996058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_BFIN_UART1_CTSRTS
4006058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
4016058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		/*
4026058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 * Refer to arch/blackfin/mach-xxx/include/mach/gpio.h for the GPIO map.
4036058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 */
4046058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = -1,
4056058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = -1,
4066058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IO,
4076058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
4086058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	{
4096058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		/*
4106058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 * Refer to arch/blackfin/mach-xxx/include/mach/gpio.h for the GPIO map.
4116058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		 */
4126058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.start = -1,
4136058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.end = -1,
4146058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer		.flags = IORESOURCE_IO,
4156058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	},
4166058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
4171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
4181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
419a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart1_peripherals[] = {
4206bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART1_TX, P_UART1_RX, 0
4216bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
4226bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
4236058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic struct platform_device bfin_uart1_device = {
4241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-uart",
4251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
4266058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.num_resources = ARRAY_SIZE(bfin_uart1_resources),
4276058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	.resource = bfin_uart1_resources,
4286bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
4296bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart1_peripherals, /* Passed to driver */
4306bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
4311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
4321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
4336058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
4341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4355be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
4365be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR0
43742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
4385be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
4395be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC00400,
4405be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC004FF,
4415be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
4425be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
44342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
44442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
44542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
44642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
44742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
44842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
44942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
45042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
45142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
45242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
45342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
45442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
45542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.name = "bfin_sir",
45642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 0,
45742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
45842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
45942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang};
4605be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
4615be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR1
46242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir1_resources[] = {
4635be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
4645be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC02000,
4655be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC020FF,
4665be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
4675be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
46842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
46942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART1_RX,
47042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART1_RX+1,
47142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
47242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
47342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
47442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART1_RX,
47542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART1_RX+1,
47642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
47742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
4785be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
47942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir1_device = {
4805be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.name = "bfin_sir",
48142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.id = 1,
48242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir1_resources),
48342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir1_resources,
4845be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
4855be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
48642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
4875be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
48856ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
48956ce835b608343b22e1e46e5bb913b87c162486eMike Frysingerstatic struct resource bfin_twi0_resource[] = {
49056ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	[0] = {
49156ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.start = TWI0_REGBASE,
49256ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.end   = TWI0_REGBASE,
49356ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.flags = IORESOURCE_MEM,
49456ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	},
49556ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	[1] = {
49656ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.start = IRQ_TWI,
49756ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.end   = IRQ_TWI,
49856ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger		.flags = IORESOURCE_IRQ,
49956ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	},
50056ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger};
50156ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger
50256ce835b608343b22e1e46e5bb913b87c162486eMike Frysingerstatic struct platform_device i2c_bfin_twi_device = {
50356ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	.name = "i2c-bfin-twi",
50456ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	.id = 0,
50556ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	.num_resources = ARRAY_SIZE(bfin_twi0_resource),
50656ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	.resource = bfin_twi0_resource,
50756ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger};
50856ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger#endif
50956ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger
5101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
511df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
512df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport0_uart_resources[] = {
513df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
514df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT0_TCR1,
515df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT0_MRCS3+4,
516df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
517df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
518df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
519df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_RX,
520df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_RX+1,
521df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
522df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
523df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
524df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_ERROR,
525df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_ERROR,
526df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
527df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
528df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
529df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
530a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport0_peripherals[] = {
531df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
532e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT0_DRPRI, P_SPORT0_RSCLK, 0
533df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
534df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
5351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport0_uart_device = {
5361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
5371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
538df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
539df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport0_uart_resources,
540df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
541df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport0_peripherals, /* Passed to driver */
542df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
543df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
544df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
545df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
546df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport1_uart_resources[] = {
547df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
548df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT1_TCR1,
549df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT1_MRCS3+4,
550df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
551df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
552df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
553df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_RX,
554df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_RX+1,
555df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
556df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
557df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
558df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_ERROR,
559df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_ERROR,
560df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
561df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
562df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
563df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
564a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport1_peripherals[] = {
565df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
566e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT1_DRPRI, P_SPORT1_RSCLK, 0
5671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport1_uart_device = {
5701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
5711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
572df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
573df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport1_uart_resources,
574df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
575df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport1_peripherals, /* Passed to driver */
576df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
5771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
579df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
5801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
58202460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang#include <linux/bfin_mac.h>
58302460d08930656b3a50381cfb119864efcd4eef9Sonic Zhangstatic const unsigned short bfin_mac_peripherals[] = P_MII0;
58402460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang
58502460d08930656b3a50381cfb119864efcd4eef9Sonic Zhangstatic struct bfin_phydev_platform_data bfin_phydev_data[] = {
58602460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	{
58702460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang		.addr = 1,
58802460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang		.irq = IRQ_MAC_PHYINT,
58902460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	},
59002460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang};
59102460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang
59202460d08930656b3a50381cfb119864efcd4eef9Sonic Zhangstatic struct bfin_mii_bus_platform_data bfin_mii_bus_data = {
59302460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.phydev_number = 1,
59402460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.phydev_data = bfin_phydev_data,
59502460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.phy_mode = PHY_INTERFACE_MODE_MII,
59602460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.mac_peripherals = bfin_mac_peripherals,
59702460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang};
59802460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang
59965319628db2c7a630daadfeec4d371aaca788482Graf Yangstatic struct platform_device bfin_mii_bus = {
60065319628db2c7a630daadfeec4d371aaca788482Graf Yang	.name = "bfin_mii_bus",
60102460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.dev = {
60202460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang		.platform_data = &bfin_mii_bus_data,
60302460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	}
60465319628db2c7a630daadfeec4d371aaca788482Graf Yang};
60565319628db2c7a630daadfeec4d371aaca788482Graf Yang
6061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_mac_device = {
6071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin_mac",
60802460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	.dev = {
60902460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang		.platform_data = &bfin_mii_bus,
61002460d08930656b3a50381cfb119864efcd4eef9Sonic Zhang	}
6111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
6121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
6131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
614c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
615fe5aeb93024791a5aa69741015db33093198ff47Mike Frysinger#define PATA_INT	IRQ_PF14
616c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
617c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct pata_platform_info bfin_pata_platform_data = {
618c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.ioport_shift = 2,
6197832bb5d450aefa45b6dac3b3140eade66bb12adYong Zhang	.irq_type = IRQF_TRIGGER_HIGH,
620c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
621c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
622c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_pata_resources[] = {
623c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
624c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x2030C000,
625c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2030C01F,
626c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
627c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
628c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
629c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = 0x2030D018,
630c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = 0x2030D01B,
631c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
632c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
633c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	{
634c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = PATA_INT,
635c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end = PATA_INT,
636c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
637c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
638c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
639c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
640c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_pata_device = {
641c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "pata_platform",
642c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = -1,
643c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_pata_resources),
644c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_pata_resources,
645c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.dev = {
646c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_pata_platform_data,
647c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	}
648c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
649c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
650c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
65114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
65214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich{
65314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_085, 250000000),
65414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_090, 376000000),
65514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_095, 426000000),
65614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_100, 426000000),
65714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_105, 476000000),
65814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_110, 476000000),
65914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_115, 476000000),
66014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_120, 500000000),
66114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_125, 533000000),
66214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_130, 600000000),
66314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
66414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
66514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
66614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
66714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
66814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.vr_settling_time = 25 /* us */,
66914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
67014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
67114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct platform_device bfin_dpmc = {
67214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.name = "bfin dpmc",
67314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.dev = {
67414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
67514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	},
67614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
67714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
6786058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic struct platform_device *cm_bf537e_devices[] __initdata = {
67914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
68014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	&bfin_dpmc,
68114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
6820d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich#if defined(CONFIG_FB_HITACHI_TX09) || defined(CONFIG_FB_HITACHI_TX09_MODULE)
6830d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich	&hitachi_fb_device,
6840d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich#endif
6850d4a89bb3eb58f39831186fa6b1542893dbfdc9fMichael Hennerich
6861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
6871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&rtc_device,
6881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
6891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
6901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
6916058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_SERIAL_BFIN_UART0
6926058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	&bfin_uart0_device,
6936058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
6946058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#ifdef CONFIG_SERIAL_BFIN_UART1
6956058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	&bfin_uart1_device,
6966058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer#endif
6971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
6981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
6995be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
70042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
70142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
70242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
70342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR1
70442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir1_device,
70542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
7065be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
7075be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
70856ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
70956ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger	&i2c_bfin_twi_device,
71056ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger#endif
71156ce835b608343b22e1e46e5bb913b87c162486eMike Frysinger
7121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
713df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
7141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport0_uart_device,
715df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
716df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
7171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport1_uart_device,
7181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
719df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
7201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
7221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&isp1362_hcd_device,
7231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
7261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&smc91x_device,
7271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
73065319628db2c7a630daadfeec4d371aaca788482Graf Yang	&bfin_mii_bus,
7311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_mac_device,
7321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
7351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&net2272_bfin_device,
7361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7387d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
739c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_spi0_device,
740c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
741c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
742c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
743c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_pata_device,
7441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
7458ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger
7468ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger#if defined(CONFIG_MTD_GPIO_ADDR) || defined(CONFIG_MTD_GPIO_ADDR_MODULE)
7478ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger	&cm_flash_device,
7488ea8949733e35597efa45e71c0d3d65cafd7687aMike Frysinger#endif
7491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
7501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7519be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysingerstatic int __init net2272_init(void)
7529be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger{
7539be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
7549be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	int ret;
7559be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7569be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	ret = gpio_request(GPIO_PG14, "net2272");
7579be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	if (ret)
7589be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger		return ret;
7599be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7609be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	/* Reset USB Chip, PG14 */
7619be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	gpio_direction_output(GPIO_PG14, 0);
7629be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	mdelay(2);
7639be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	gpio_set_value(GPIO_PG14, 1);
7649be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger#endif
7659be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7669be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	return 0;
7679be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger}
7689be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7696058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerstatic int __init cm_bf537e_init(void)
7701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
771b85d858b40a28107ee50ca9e89f57c0e35c251c6Harvey Harrison	printk(KERN_INFO "%s(): registering device resources\n", __func__);
7726058434468daa16580a77922661b31b880d60db5Harald Krapfenbauer	platform_add_devices(cm_bf537e_devices, ARRAY_SIZE(cm_bf537e_devices));
7737d157fb02bc3f4dc74e6830725864ba501d92da7Sonic Zhang#if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
7741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
7751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
776c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
777c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
778bc2f6bd8027a88da69102a8aed65dcbd1e895119Thomas Gleixner	irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
779c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
7809be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7819be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger	if (net2272_init())
7829be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger		pr_warning("unable to configure net2272; it probably won't work\n");
7839be8631b8a7d11fa6d206fcf0a7a2005ed39f41bMike Frysinger
7841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	return 0;
7851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
7861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
7876058434468daa16580a77922661b31b880d60db5Harald Krapfenbauerarch_initcall(cm_bf537e_init);
788137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger
789c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangstatic struct platform_device *cm_bf537e_early_devices[] __initdata = {
790c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
791c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
792c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart0_device,
793c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
794c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART1
795c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart1_device,
796c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
797c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
798c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
799c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
800c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
801c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport0_uart_device,
802c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
803c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
804c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport1_uart_device,
805c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
806c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
807c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang};
808c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
809c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangvoid __init native_machine_early_platform_add_devices(void)
810c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang{
811c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	printk(KERN_INFO "register early platform devices\n");
812c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	early_platform_add_devices(cm_bf537e_early_devices,
813c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang		ARRAY_SIZE(cm_bf537e_early_devices));
814c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang}
815c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
816fa63c6da22b4a6ea6e7d04e3dc9178dd72304903Danny Kukawkaint bfin_get_ether_addr(char *addr)
817137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger{
818fa63c6da22b4a6ea6e7d04e3dc9178dd72304903Danny Kukawka	return 1;
819137b1529da492baa654c702ecb60bb950eccb98dMike Frysinger}
8209862cc5278aabd82230369a142c817e37a42caa3Mike FrysingerEXPORT_SYMBOL(bfin_get_ether_addr);
821