summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch')
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch110
1 files changed, 110 insertions, 0 deletions
diff --git a/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch b/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch
new file mode 100644
index 0000000000..ea032e2985
--- /dev/null
+++ b/recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch
@@ -0,0 +1,110 @@
+From 0f494c3545ebbc375a7241ede3aa0db33295bebe Mon Sep 17 00:00:00 2001
+From: Steve Sakoman <sakoman@gmail.com>
+Date: Tue, 15 Dec 2009 14:59:42 -0800
+Subject: [PATCH 16/43] ARM: OMAP: Overo: Add support for second ethernet port
+
+Signed-off-by: Steve Sakoman <sakoman@gmail.com>
+---
+ arch/arm/mach-omap2/board-overo.c | 56 +++++++++++++++++++++++++++++++++++--
+ 1 files changed, 53 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
+index e0aebc3..6204b8c 100644
+--- a/arch/arm/mach-omap2/board-overo.c
++++ b/arch/arm/mach-omap2/board-overo.c
+@@ -63,6 +63,8 @@
+
+ #define OVERO_SMSC911X_CS 5
+ #define OVERO_SMSC911X_GPIO 176
++#define OVERO_SMSC911X2_CS 4
++#define OVERO_SMSC911X2_GPIO 65
+
+ #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
+ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
+@@ -137,6 +139,16 @@ static struct resource overo_smsc911x_resources[] = {
+ },
+ };
+
++static struct resource overo_smsc911x2_resources[] = {
++ {
++ .name = "smsc911x2-memory",
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
++ },
++};
++
+ static struct smsc911x_platform_config overo_smsc911x_config = {
+ .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
+ .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
+@@ -146,7 +158,7 @@ static struct smsc911x_platform_config overo_smsc911x_config = {
+
+ static struct platform_device overo_smsc911x_device = {
+ .name = "smsc911x",
+- .id = -1,
++ .id = 0,
+ .num_resources = ARRAY_SIZE(overo_smsc911x_resources),
+ .resource = overo_smsc911x_resources,
+ .dev = {
+@@ -154,9 +166,26 @@ static struct platform_device overo_smsc911x_device = {
+ },
+ };
+
++static struct platform_device overo_smsc911x2_device = {
++ .name = "smsc911x",
++ .id = 1,
++ .num_resources = ARRAY_SIZE(overo_smsc911x2_resources),
++ .resource = overo_smsc911x2_resources,
++ .dev = {
++ .platform_data = &overo_smsc911x_config,
++ },
++};
++
++static struct platform_device *smsc911x_devices[] = {
++ &overo_smsc911x_device,
++ &overo_smsc911x2_device,
++};
++
+ static inline void __init overo_init_smsc911x(void)
+ {
+- unsigned long cs_mem_base;
++ unsigned long cs_mem_base, cs_mem_base2;
++
++ /* set up first smsc911x chip */
+
+ if (gpmc_cs_request(OVERO_SMSC911X_CS, SZ_16M, &cs_mem_base) < 0) {
+ printk(KERN_ERR "Failed request for GPMC mem for smsc911x\n");
+@@ -177,7 +206,28 @@ static inline void __init overo_init_smsc911x(void)
+ overo_smsc911x_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X_GPIO);
+ overo_smsc911x_resources[1].end = 0;
+
+- platform_device_register(&overo_smsc911x_device);
++ /* set up second smsc911x chip */
++
++ if (gpmc_cs_request(OVERO_SMSC911X2_CS, SZ_16M, &cs_mem_base2) < 0) {
++ printk(KERN_ERR "Failed request for GPMC mem for smsc911x2\n");
++ return;
++ }
++
++ overo_smsc911x2_resources[0].start = cs_mem_base2 + 0x0;
++ overo_smsc911x2_resources[0].end = cs_mem_base2 + 0xff;
++
++ if ((gpio_request(OVERO_SMSC911X2_GPIO, "SMSC911X2 IRQ") == 0) &&
++ (gpio_direction_input(OVERO_SMSC911X2_GPIO) == 0)) {
++ gpio_export(OVERO_SMSC911X2_GPIO, 0);
++ } else {
++ printk(KERN_ERR "could not obtain gpio for SMSC911X2 IRQ\n");
++ return;
++ }
++
++ overo_smsc911x2_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X2_GPIO);
++ overo_smsc911x2_resources[1].end = 0;
++
++ platform_add_devices(smsc911x_devices, ARRAY_SIZE(smsc911x_devices));
+ }
+
+ #else
+--
+1.6.6.1
+