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>
111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/platform_device.h>
121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/mtd.h>
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/mtd/partitions.h>
149c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#include <linux/mtd/physmap.h>
151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/spi.h>
161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <linux/spi/flash.h>
179c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#include <linux/spi/mmc_spi.h>
18c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_USB_ISP1362_HCD)
19f02bcec5986870b3ddae26f6be1cde0703abfd8aMike Frysinger#include <linux/usb/isp1362.h>
20b964c592d42a7146a0b157147432da882abd3404Mike Frysinger#endif
211f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger#include <linux/irq.h>
22c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#include <asm/dma.h>
231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#include <asm/bfin5xx_spi.h>
245d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu#include <asm/portmux.h>
2514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich#include <asm/dpmc.h>
261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Name the Board for the /proc/cpuinfo
291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
30066954a3891d32198edad3b319792d8db6a6a575Mike Frysingerconst char bfin_board_name[] = "Bluetechnix CM BF533";
311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
32c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SPI_BFIN5XX)
331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* all SPI peripherals info goes here */
34c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MTD_M25P80)
351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct mtd_partition bfin_spi_flash_partitions[] = {
361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
37aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "bootloader(spi)",
381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0x00020000,
391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0,
401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mask_flags = MTD_CAP_ROM
411f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
42aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "linux kernel(spi)",
431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0xe0000,
441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0x20000
451f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
46aa5829776347dbd9eeb461f650c1d085cf463a83Robin Getz		.name = "file system(spi)",
471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.size = 0x700000,
481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.offset = 0x00100000,
491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	}
501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct flash_platform_data bfin_spi_flash_data = {
531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "m25p80",
541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.parts = bfin_spi_flash_partitions,
551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.type = "m25p64",
571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI flash chip (m25p64) */
601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct bfin5xx_spi_chip spi_flash_chip_info = {
611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 0,         /* use dma transfer with this chip*/
621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
65c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MMC_SPI)
66f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerichstatic struct bfin5xx_spi_chip mmc_spi_chip_info = {
67f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich	.enable_dma = 0,
68a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich};
69a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich#endif
70a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich
711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct spi_board_info bfin_spi_board_info[] __initdata = {
72c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MTD_M25P80)
731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		/* the modalias must be the same as spi device driver name */
751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.modalias = "m25p80",       /* Name of spi_driver for this device */
761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
77c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,               /* Framework bus number */
781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.chip_select = 1,           /* Framework chip select. On STAMP537 it is SPISSEL1*/
791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &bfin_spi_flash_data,
801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.controller_data = &spi_flash_chip_info,
811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.mode = SPI_MODE_3,
82a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich	},
83a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich#endif
84a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich
85c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SND_BF5XX_SOC_AD183X)
861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
877ba80063e90302287625a105c546c2fc318fcfbfBarry Song		.modalias = "ad183x",
881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
89c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.bus_num = 0,
907ba80063e90302287625a105c546c2fc318fcfbfBarry Song		.chip_select = 4,
911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
93a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich
94c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MMC_SPI)
95a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich	{
96f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.modalias = "mmc_spi",
979c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
98a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich		.bus_num = 0,
999c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.chip_select = 1,
100f3f704d375fcc92950f688ccb3dd0f650acace92Michael Hennerich		.controller_data = &mmc_spi_chip_info,
101a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich		.mode = SPI_MODE_3,
102a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich	},
103a15c2dcff2766edb92d9433e3de8ae7d7c081be5Michael Hennerich#endif
1041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
106c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu/* SPI (0) */
107c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct resource bfin_spi0_resource[] = {
108c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[0] = {
109c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = SPI0_REGBASE,
110c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = SPI0_REGBASE + 0xFF,
111c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_MEM,
112c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	},
113c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	[1] = {
114c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.start = CH_SPI,
115c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.end   = CH_SPI,
11653122693c3cef005495279835286c36c58e035e8Yi Li		.flags = IORESOURCE_DMA,
11753122693c3cef005495279835286c36c58e035e8Yi Li	},
11853122693c3cef005495279835286c36c58e035e8Yi Li	[2] = {
11953122693c3cef005495279835286c36c58e035e8Yi Li		.start = IRQ_SPI,
12053122693c3cef005495279835286c36c58e035e8Yi Li		.end   = IRQ_SPI,
121c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.flags = IORESOURCE_IRQ,
122c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	}
123c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu};
124c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu
1251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/* SPI controller data */
126c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct bfin5xx_spi_master bfin_spi0_info = {
1271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_chipselect = 8,
1281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.enable_dma = 1,  /* master has the ability to do dma transfer */
1295d448dd50712ae42f8176b5bb8db4703bef6f0f5Bryan Wu	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
1301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
132c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wustatic struct platform_device bfin_spi0_device = {
133c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.name = "bfin-spi",
134c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.id = 0, /* Bus number */
135c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
136c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	.resource = bfin_spi0_resource,
1371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
138c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu		.platform_data = &bfin_spi0_info, /* Passed to driver */
1391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif  /* spi master and devices */
1421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
143c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_RTC_DRV_BFIN)
1441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device rtc_device = {
1451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "rtc-bfin",
1461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id   = -1,
1471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
150c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SMC91X)
15161f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich#include <linux/smc91x.h>
15261f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
15361f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerichstatic struct smc91x_platdata smc91x_info = {
15461f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
15561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.leda = RPC_LED_100_10,
15661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.ledb = RPC_LED_TX_RX,
15761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich};
15861f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich
1591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource smc91x_resources[] = {
1601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
1611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20200300,
1621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20200300 + 16,
1631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
1641f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
1651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF0,
1661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF0,
1671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
1681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
1691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device smc91x_device = {
1711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "smc91x",
1721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
1731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(smc91x_resources),
1741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = smc91x_resources,
17561f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	.dev	= {
17661f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich		.platform_data	= &smc91x_info,
17761f09b5a09fb3962bbd3990a9a5a8470197955bbMichael Hennerich	},
1781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
1791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
1801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
181c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SMSC911X)
1829c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#include <linux/smsc911x.h>
1839c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
1849c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct resource smsc911x_resources[] = {
1859c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	{
1869c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.name = "smsc911x-memory",
1879c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.start = 0x20308000,
1889c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.end = 0x20308000 + 0xFF,
1899c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.flags = IORESOURCE_MEM,
1909c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	}, {
1919c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.start = IRQ_PF8,
1929c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.end = IRQ_PF8,
1939c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
1949c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	},
1959c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
1969c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
1979c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct smsc911x_platform_config smsc911x_config = {
1989c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.flags = SMSC911X_USE_16BIT,
1999c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
2009c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
2019c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.phy_interface = PHY_INTERFACE_MODE_MII,
2029c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
2039c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
2049c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct platform_device smsc911x_device = {
2059c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.name = "smsc911x",
2069c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.id = 0,
2079c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.num_resources = ARRAY_SIZE(smsc911x_resources),
2089c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.resource = smsc911x_resources,
2099c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.dev = {
2109c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.platform_data = &smsc911x_config,
2119c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	},
2129c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
2139c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
2149c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
215c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SERIAL_BFIN)
2166bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
2176bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct resource bfin_uart0_resources[] = {
2181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
2196bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = BFIN_UART_THR,
2206bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = BFIN_UART_GCTL+2,
2211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
2221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
2236bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
224edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.start = IRQ_UART0_TX,
225edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_TX,
226edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.flags = IORESOURCE_IRQ,
227edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	},
228edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang	{
2296bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_RX,
230edb0a6408a84b4f14647770d8a6796afff3e93a9Sonic Zhang		.end = IRQ_UART0_RX,
2316bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
2326bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
2336bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
2346bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = IRQ_UART0_ERROR,
2356bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = IRQ_UART0_ERROR,
2366bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_IRQ,
2376bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
2386bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
2396bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_TX,
2406bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_TX,
2416bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
2426bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
2436bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	{
2446bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.start = CH_UART0_RX,
2456bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.end = CH_UART0_RX,
2466bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.flags = IORESOURCE_DMA,
2476bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
2486bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang};
2496bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang
250a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_uart0_peripherals[] = {
2516bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	P_UART0_TX, P_UART0_RX, 0
2521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2546bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhangstatic struct platform_device bfin_uart0_device = {
2551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-uart",
2566bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.id = 0,
2576bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
2586bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.resource = bfin_uart0_resources,
2596bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	.dev = {
2606bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
2616bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	},
2621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
2631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2646bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
2651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
266c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_BFIN_SIR)
2675be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#ifdef CONFIG_BFIN_SIR0
26842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct resource bfin_sir0_resources[] = {
2695be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	{
2705be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.start = 0xFFC00400,
2715be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.end = 0xFFC004FF,
2725be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang		.flags = IORESOURCE_MEM,
2735be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	},
27442bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
27542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = IRQ_UART0_RX,
27642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = IRQ_UART0_RX+1,
27742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_IRQ,
27842bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
27942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	{
28042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.start = CH_UART0_RX,
28142bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.end = CH_UART0_RX+1,
28242bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang		.flags = IORESOURCE_DMA,
28342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	},
2845be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
2855be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
28642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yangstatic struct platform_device bfin_sir0_device = {
2875be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.name = "bfin_sir",
2885be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang	.id = 0,
28942bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
29042bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	.resource = bfin_sir0_resources,
2915be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang};
2925be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
29342bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
2945be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
295c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SERIAL_BFIN_SPORT)
296df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
297df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport0_uart_resources[] = {
298df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
299df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT0_TCR1,
300df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT0_MRCS3+4,
301df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
302df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
303df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
304df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_RX,
305df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_RX+1,
306df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
307df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
308df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
309df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT0_ERROR,
310df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT0_ERROR,
311df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
312df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
313df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
314df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
315a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport0_peripherals[] = {
316df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
317e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT0_DRPRI, P_SPORT0_RSCLK, 0
318df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
319df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
3201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport0_uart_device = {
3211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
3221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
323df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
324df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport0_uart_resources,
325df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
326df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport0_peripherals, /* Passed to driver */
327df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
328df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
329df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
330df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
331df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhangstatic struct resource bfin_sport1_uart_resources[] = {
332df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
333df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = SPORT1_TCR1,
334df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = SPORT1_MRCS3+4,
335df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_MEM,
336df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
337df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
338df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_RX,
339df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_RX+1,
340df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
341df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
342df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	{
343df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.start = IRQ_SPORT1_ERROR,
344df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.end = IRQ_SPORT1_ERROR,
345df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.flags = IORESOURCE_IRQ,
346df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
347df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang};
348df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang
349a8b19886097032df38bd521cece4bc538fee2266Mike Frysingerstatic unsigned short bfin_sport1_peripherals[] = {
350df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
351e54b673081d12c46b47fdfe1772656cb2b43721dSonic Zhang	P_SPORT1_DRPRI, P_SPORT1_RSCLK, 0
3521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device bfin_sport1_uart_device = {
3551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "bfin-sport-uart",
3561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 1,
357df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
358df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.resource = bfin_sport1_uart_resources,
359df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	.dev = {
360df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang		.platform_data = &bfin_sport1_peripherals, /* Passed to driver */
361df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang	},
3621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
364df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
3651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
366c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_USB_ISP1362_HCD)
3671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct resource isp1362_hcd_resources[] = {
3681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	{
3691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20308000,
3701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20308000,
3711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3721f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = 0x20308004,
3741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = 0x20308004,
3751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.flags = IORESOURCE_MEM,
3761f83b8f148a1eb967d2a628cbb741cd56fb54572Mike Frysinger	}, {
3771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.start = IRQ_PF4,
3781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.end = IRQ_PF4,
3799e75894c50d126bf3c8efb0efc91d5a93d6163ddMichael Hennerich		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
3801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
3811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct isp1362_platform_data isp1362_priv = {
3841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.sel15Kres = 1,
3851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.clknotstop = 0,
3861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.oc_enable = 0,
3871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_act_high = 0,
3881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.int_edge_triggered = 0,
3891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.remote_wakeup_connected = 0,
3901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.no_power_switching = 1,
3911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.power_switching_mode = 0,
3921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
3931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
3941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device isp1362_hcd_device = {
3951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.name = "isp1362-hcd",
3961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.id = 0,
3971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.dev = {
3981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu		.platform_data = &isp1362_priv,
3991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	},
4001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.num_resources = ARRAY_SIZE(isp1362_hcd_resources),
4011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	.resource = isp1362_hcd_resources,
4021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
4031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
4041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4059c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
406c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_USB_NET2272)
4079c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct resource net2272_bfin_resources[] = {
4089c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	{
4099c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.start = 0x20300000,
4109c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.end = 0x20300000 + 0x100,
4119c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.flags = IORESOURCE_MEM,
4129c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	}, {
4139c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.start = IRQ_PF6,
4149c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.end = IRQ_PF6,
4159c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
4169c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	},
4179c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4189c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4199c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct platform_device net2272_bfin_device = {
4209c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.name = "net2272",
4219c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.id = -1,
4229c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.num_resources = ARRAY_SIZE(net2272_bfin_resources),
4239c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.resource = net2272_bfin_resources,
4249c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4259c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
4269c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4279c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4289c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
429c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MTD_PHYSMAP)
4309c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct mtd_partition para_partitions[] = {
4319c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	{
4329c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.name       = "bootloader(nor)",
4339c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.size       = 0x40000,
4349c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.offset     = 0,
4359c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	}, {
4369c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.name       = "linux+rootfs(nor)",
4379c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.size       = MTDPART_SIZ_FULL,
4389c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.offset     = MTDPART_OFS_APPEND,
4399c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	},
4409c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4419c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4429c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct physmap_flash_data para_flash_data = {
4439c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.width      = 2,
4449c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.parts      = para_partitions,
4459c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.nr_parts   = ARRAY_SIZE(para_partitions),
4469c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4479c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4489c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct resource para_flash_resource = {
4499c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.start = 0x20000000,
4509c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.end   = 0x201fffff,
4519c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.flags = IORESOURCE_MEM,
4529c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4539c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4549c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauerstatic struct platform_device para_flash_device = {
4559c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.name          = "physmap-flash",
4569c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.id            = 0,
4579c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.dev = {
4589c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer		.platform_data = &para_flash_data,
4599c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	},
4609c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.num_resources = 1,
4619c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	.resource      = &para_flash_resource,
4629c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer};
4639c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
4649c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4659c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
4669c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
46714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic const unsigned int cclk_vlev_datasheet[] =
46814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich{
46914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_085, 250000000),
47014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_090, 376000000),
47114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_095, 426000000),
47214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_100, 426000000),
47314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_105, 476000000),
47414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_110, 476000000),
47514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_115, 476000000),
47614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_120, 600000000),
47714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_125, 600000000),
47814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	VRPAIR(VLEV_130, 600000000),
47914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
48014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
48114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
48214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tuple_tab = cclk_vlev_datasheet,
48314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
48414b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.vr_settling_time = 25 /* us */,
48514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
48614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
48714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerichstatic struct platform_device bfin_dpmc = {
48814b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.name = "bfin dpmc",
48914b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	.dev = {
49014b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich		.platform_data = &bfin_dmpc_vreg_data,
49114b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	},
49214b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich};
49314b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
4941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic struct platform_device *cm_bf533_devices[] __initdata = {
49514b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
49614b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich	&bfin_dpmc,
49714b03204c8060d036b04cbb18bbd6f6f311f4fedMichael Hennerich
498c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SERIAL_BFIN)
4996bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
5006bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang	&bfin_uart0_device,
5016bd1fbea2e8bff9346a5afb44ca948b4e4ed74a5Sonic Zhang#endif
5021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
504c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_BFIN_SIR)
50542bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#ifdef CONFIG_BFIN_SIR0
50642bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang	&bfin_sir0_device,
50742bd8bcb2fa1853fda9c51d956f70bbe2329bdfbGraf Yang#endif
5085be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang#endif
5095be36d22b28f01e5074f78b29aa6128da0a53641Graf Yang
510c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SERIAL_BFIN_SPORT)
511df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
5121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport0_uart_device,
513df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
514df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
5151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&bfin_sport1_uart_device,
5161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
517df5de261306d9bfc1ed9121595593b10a7626b95Sonic Zhang#endif
5181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
519c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_RTC_DRV_BFIN)
5201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&rtc_device,
5211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
523c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_USB_ISP1362_HCD)
5241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&isp1362_hcd_device,
5251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
527c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SMC91X)
5281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	&smc91x_device,
5291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
531c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SMSC911X)
5329c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	&smsc911x_device,
5339c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
5349c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
535c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_USB_NET2272)
5369c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	&net2272_bfin_device,
5379c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
5389c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer
539c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SPI_BFIN5XX)
540c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu	&bfin_spi0_device,
541c6c4d7bbbb498c38afa05688dfc2784948a0c4e2Bryan Wu#endif
542c97618d3b7b8ef86a966c4b67b54e5ca15814905Mike Frysinger
543c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_MTD_PHYSMAP)
5449c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer	&para_flash_device,
5459c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer#endif
5461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
5471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustatic int __init cm_bf533_init(void)
5491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu{
550b85d858b40a28107ee50ca9e89f57c0e35c251c6Harvey Harrison	printk(KERN_INFO "%s(): registering device resources\n", __func__);
5511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	platform_add_devices(cm_bf533_devices, ARRAY_SIZE(cm_bf533_devices));
552c4a2c58d20953ff1080f50f705cdd952f6d301b2Steven Miao#if IS_ENABLED(CONFIG_SPI_BFIN5XX)
5531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
5541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
5551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	return 0;
5561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu}
5571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wuarch_initcall(cm_bf533_init);
559c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
560c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangstatic struct platform_device *cm_bf533_early_devices[] __initdata = {
561c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
562c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_UART0
563c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_uart0_device,
564c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
565c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
566c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
567c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
568c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
569c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport0_uart_device,
570c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
571c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
572c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	&bfin_sport1_uart_device,
573c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
574c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang#endif
575c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang};
576c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang
577c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhangvoid __init native_machine_early_platform_add_devices(void)
578c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang{
579c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	printk(KERN_INFO "register early platform devices\n");
580c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang	early_platform_add_devices(cm_bf533_early_devices,
581c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang		ARRAY_SIZE(cm_bf533_early_devices));
582c13ce9fd26c3a0e32b3bf0b00929181e66114ed2Sonic Zhang}
583