From 03359b287a8ccc96ba546b38db4efb5d1b3b08d4 Mon Sep 17 00:00:00 2001 From: Arun KS Date: Mon, 30 Jun 2008 20:39:25 +0530 Subject: [PATCH] OMAP2EVM: Adding ethernet support OMAP2EVM: Add ethernet support (smc911x) Signed-off-by: Arun KS Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/board-omap2evm.c | 41 ++++++++++++++++++++++ include/asm-arm/arch-omap/board-omap2evm.h | 5 +-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/board-omap2evm.c b/arch/arm/mach-omap2/board-omap2evm.c index d00e502c77f..bcdf4a6a2e7 100644 --- a/arch/arm/mach-omap2/board-omap2evm.c +++ b/arch/arm/mach-omap2/board-omap2evm.c @@ -27,11 +27,47 @@ #include #include +static struct resource omap2evm_smc911x_resources[] = { + [0] = { + .start = OMAP2EVM_ETHR_START, + .end = (OMAP2EVM_ETHR_START + OMAP2EVM_ETHR_SIZE - 1), + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = OMAP_GPIO_IRQ(OMAP2EVM_ETHR_GPIO_IRQ), + .end = OMAP_GPIO_IRQ(OMAP2EVM_ETHR_GPIO_IRQ), + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device omap2evm_smc911x_device = { + .name = "smc911x", + .id = -1, + .num_resources = ARRAY_SIZE(omap2evm_smc911x_resources), + .resource = &omap2evm_smc911x_resources [0], +}; + +static inline void __init omap2evm_init_smc911x(void) +{ + int gpio = OMAP2EVM_ETHR_GPIO_IRQ; + int ret; + + ret = gpio_request(gpio, "smc911x IRQ"); + if (ret < 0) { + printk(KERN_ERR "Failed to request GPIO %d for smc911x IRQ\n", + gpio); + return; + } + gpio_direction_input(gpio); + +} + static void __init omap2_evm_init_irq(void) { omap2_init_common_hw(); omap_init_irq(); omap_gpio_init(); + omap2evm_init_smc911x(); } static struct omap_uart_config omap2_evm_uart_config __initdata = { @@ -53,8 +89,13 @@ static int __init omap2_evm_i2c_init(void) return 0; } +static struct platform_device *omap2_evm_devices[] __initdata = { + &omap2evm_smc911x_device, +}; + static void __init omap2_evm_init(void) { + platform_add_devices(omap2_evm_devices, ARRAY_SIZE(omap2_evm_devices)); omap_board_config = omap2_evm_config; omap_board_config_size = ARRAY_SIZE(omap2_evm_config); omap_serial_init(); diff --git a/include/asm-arm/arch-omap/board-omap2evm.h b/include/asm-arm/arch-omap/board-omap2evm.h index 98273a91d3b..d770c5824c1 100644 --- a/include/asm-arm/arch-omap/board-omap2evm.h +++ b/include/asm-arm/arch-omap/board-omap2evm.h @@ -30,7 +30,8 @@ #define __ASM_ARCH_OMAP2_EVM_H /* Placeholder for OMAP2EVM specific defines */ -#define OMAP24XX_ETHR_START 0x08000300 -#define OMAP24XX_ETHR_GPIO_IRQ 149 +#define OMAP2EVM_ETHR_START 0x2c000000 +#define OMAP2EVM_ETHR_SIZE 1024 +#define OMAP2EVM_ETHR_GPIO_IRQ 149 #endif /* __ASM_ARCH_OMAP2_EVM_H */ -- 2.41.1