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 = ¶_flash_data, 4599c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer }, 4609c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer .num_resources = 1, 4619c21453e376c03bcba9c6d89dc5735b40a35b098Harald Krapfenbauer .resource = ¶_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 ¶_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