mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-17 06:48:07 +00:00
07e8c30da9
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
111 lines
3.3 KiB
Diff
111 lines
3.3 KiB
Diff
From 1fc84dc95abaf51294efa10fe111d65bc0b08483 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/45] 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
|
|
|