1/* 2 * File: arch/blackfin/mach-bf533/generic_board.c 3 * Based on: arch/blackfin/mach-bf533/ezkit.c 4 * Author: Aidan Williams <aidan@nicta.com.au> 5 * 6 * Created: 2005 7 * Description: 8 * 9 * Modified: 10 * Copyright 2005 National ICT Australia (NICTA) 11 * Copyright 2004-2006 Analog Devices Inc. 12 * 13 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 14 * 15 * This program is free software; you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation; either version 2 of the License, or 18 * (at your option) any later version. 19 * 20 * This program is distributed in the hope that it will be useful, 21 * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 * GNU General Public License for more details. 24 * 25 * You should have received a copy of the GNU General Public License 26 * along with this program; if not, see the file COPYING, or write 27 * to the Free Software Foundation, Inc., 28 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 29 */ 30 31#include <linux/device.h> 32#include <linux/platform_device.h> 33#include <asm/irq.h> 34 35/* 36 * Name the Board for the /proc/cpuinfo 37 */ 38char *bfin_board_name = "UNKNOWN BOARD"; 39 40#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 41static struct platform_device rtc_device = { 42 .name = "rtc-bfin", 43 .id = -1, 44}; 45#endif 46 47/* 48 * Driver needs to know address, irq and flag pin. 49 */ 50#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) 51static struct resource smc91x_resources[] = { 52 { 53 .start = 0x20300300, 54 .end = 0x20300300 + 16, 55 .flags = IORESOURCE_MEM, 56 },{ 57 .start = IRQ_PROG_INTB, 58 .end = IRQ_PROG_INTB, 59 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, 60 },{ 61 /* 62 * denotes the flag pin and is used directly if 63 * CONFIG_IRQCHIP_DEMUX_GPIO is defined. 64 */ 65 .start = IRQ_PF7, 66 .end = IRQ_PF7, 67 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, 68 }, 69}; 70 71static struct platform_device smc91x_device = { 72 .name = "smc91x", 73 .id = 0, 74 .num_resources = ARRAY_SIZE(smc91x_resources), 75 .resource = smc91x_resources, 76}; 77#endif 78 79static struct platform_device *generic_board_devices[] __initdata = { 80#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 81 &rtc_device, 82#endif 83 84#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) 85 &smc91x_device, 86#endif 87}; 88 89static int __init generic_board_init(void) 90{ 91 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 92 return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices)); 93} 94 95arch_initcall(generic_board_init); 96