summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory Bean <gbean@codeaurora.org>2010-09-29 22:46:45 +0200
committerDaniel Walker <dwalker@codeaurora.org>2010-10-06 18:01:20 +0200
commit5d73c53b786665f991f70be01a51a23233aeb44f (patch)
treeaf6bf910e20d9dac1e94d6f584c388c9d7a8699d
parentmsm: gpio: Add gpiomux calls to request and free. (diff)
downloadlinux-5d73c53b786665f991f70be01a51a23233aeb44f.tar.xz
linux-5d73c53b786665f991f70be01a51a23233aeb44f.zip
msm: qsd8x50: enable ethernet.
Configure the smc91x ethernet chip on the qsd8x50 SURF. Signed-off-by: Gregory Bean <gbean@codeaurora.org> Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
-rw-r--r--arch/arm/mach-msm/board-qsd8x50.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c
index fb0fe6771e56..9e4cf2441122 100644
--- a/arch/arm/mach-msm/board-qsd8x50.c
+++ b/arch/arm/mach-msm/board-qsd8x50.c
@@ -35,6 +35,45 @@
extern struct sys_timer msm_timer;
+static const resource_size_t qsd8x50_surf_smc91x_base __initdata = 0x70000300;
+static const unsigned qsd8x50_surf_smc91x_gpio __initdata = 156;
+
+/* Leave smc91x resources empty here, as we'll fill them in
+ * at run-time: they vary from board to board, and the true
+ * configuration won't be known until boot.
+ */
+static struct resource smc91x_resources[] __initdata = {
+ [0] = {
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device smc91x_device __initdata = {
+ .name = "smc91x",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(smc91x_resources),
+ .resource = smc91x_resources,
+};
+
+static int __init msm_init_smc91x(void)
+{
+ if (machine_is_qsd8x50_surf()) {
+ smc91x_resources[0].start = qsd8x50_surf_smc91x_base;
+ smc91x_resources[0].end = qsd8x50_surf_smc91x_base + 0xff;
+ smc91x_resources[1].start =
+ gpio_to_irq(qsd8x50_surf_smc91x_gpio);
+ smc91x_resources[1].end =
+ gpio_to_irq(qsd8x50_surf_smc91x_gpio);
+ platform_device_register(&smc91x_device);
+ }
+
+ return 0;
+}
+module_init(msm_init_smc91x);
+
static struct platform_device *devices[] __initdata = {
&msm_device_uart3,
};