diff options
author | Magnus Lilja <lilja.magnus@gmail.com> | 2009-04-14 22:00:07 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-05-07 16:18:36 +0200 |
commit | 3211705f76cccd52cd3f3c2744aef798bf705702 (patch) | |
tree | 211039200927c8d13ba1c55c440c5daae736cfcd /arch/arm/mach-mx3 | |
parent | c1332616315584d45776a5e664382888513c0fa0 (diff) | |
download | op-kernel-dev-3211705f76cccd52cd3f3c2744aef798bf705702.zip op-kernel-dev-3211705f76cccd52cd3f3c2744aef798bf705702.tar.gz |
i.MX31: Add ethernet support to i.MX31 Litekit board.
This patch adds the SMSC platform device to the Litekit board.
Signed-off-by: Magnus Lilja <lilja.magnus@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx3')
-rw-r--r-- | arch/arm/mach-mx3/mx31lite.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/arm/mach-mx3/mx31lite.c b/arch/arm/mach-mx3/mx31lite.c index abe6ca3..74734e5 100644 --- a/arch/arm/mach-mx3/mx31lite.c +++ b/arch/arm/mach-mx3/mx31lite.c @@ -22,6 +22,9 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/memory.h> +#include <linux/platform_device.h> +#include <linux/gpio.h> +#include <linux/smsc911x.h> #include <mach/hardware.h> #include <asm/mach-types.h> @@ -34,6 +37,7 @@ #include <mach/board-mx31lite.h> #include <mach/imx-uart.h> #include <mach/iomux-mx3.h> +#include <mach/irqs.h> #include "devices.h" /* @@ -46,12 +50,43 @@ static unsigned int mx31lite_pins[] = { MX31_PIN_RTS1__RTS1, MX31_PIN_TXD1__TXD1, MX31_PIN_RXD1__RXD1, + /* LAN9117 IRQ pin */ + IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO), }; static struct imxuart_platform_data uart_pdata = { .flags = IMXUART_HAVE_RTSCTS, }; +static struct smsc911x_platform_config smsc911x_config = { + .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, + .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, + .flags = SMSC911X_USE_16BIT, +}; + +static struct resource smsc911x_resources[] = { + [0] = { + .start = CS4_BASE_ADDR, + .end = CS4_BASE_ADDR + 0x100, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IOMUX_TO_IRQ(MX31_PIN_SFS6), + .end = IOMUX_TO_IRQ(MX31_PIN_SFS6), + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device smsc911x_device = { + .name = "smsc911x", + .id = -1, + .num_resources = ARRAY_SIZE(smsc911x_resources), + .resource = smsc911x_resources, + .dev = { + .platform_data = &smsc911x_config, + }, +}; + /* * This structure defines the MX31 memory map. */ @@ -87,6 +122,10 @@ static void __init mxc_board_init(void) "mx31lite"); mxc_register_device(&mxc_uart_device0, &uart_pdata); + + /* SMSC9117 IRQ pin */ + gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_SFS6)); + platform_device_register(&smsc911x_device); } static void __init mx31lite_timer_init(void) |