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