| From 449c76dabd617e3f6c4f852dae7562dcf63e4c6d Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Fri, 6 Apr 2012 01:32:02 -0700 |
| Subject: ARM: mach-shmobile: armadillo800eva: add support sh_eth |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| (cherry picked from commit 8d6c8699cce91d5e221a4869e263ee0f7afcdca4) |
| |
| N.B: This patch is not present in mainline yet |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/board-armadillo800eva.c | 58 ++++++++++++++++++++++++ |
| 1 file changed, 58 insertions(+) |
| |
| diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c |
| index 8bb4d27..c2affc4 100644 |
| --- a/arch/arm/mach-shmobile/board-armadillo800eva.c |
| +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c |
| @@ -26,6 +26,7 @@ |
| #include <linux/platform_device.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio_keys.h> |
| +#include <linux/sh_eth.h> |
| #include <linux/videodev2.h> |
| #include <mach/common.h> |
| #include <mach/irqs.h> |
| @@ -96,6 +97,38 @@ |
| *-----------+---------------+---------------------------- |
| */ |
| |
| +/* Ether */ |
| +static struct sh_eth_plat_data sh_eth_platdata = { |
| + .phy = 0x00, /* LAN8710A */ |
| + .edmac_endian = EDMAC_LITTLE_ENDIAN, |
| + .register_type = SH_ETH_REG_GIGABIT, |
| + .phy_interface = PHY_INTERFACE_MODE_MII, |
| +}; |
| + |
| +static struct resource sh_eth_resources[] = { |
| + { |
| + .start = 0xe9a00000, |
| + .end = 0xe9a00800 - 1, |
| + .flags = IORESOURCE_MEM, |
| + }, { |
| + .start = 0xe9a01800, |
| + .end = 0xe9a02000 - 1, |
| + .flags = IORESOURCE_MEM, |
| + }, { |
| + .start = evt2irq(0x0500), |
| + .flags = IORESOURCE_IRQ, |
| + }, |
| +}; |
| + |
| +static struct platform_device sh_eth_device = { |
| + .name = "sh-eth", |
| + .dev = { |
| + .platform_data = &sh_eth_platdata, |
| + }, |
| + .resource = sh_eth_resources, |
| + .num_resources = ARRAY_SIZE(sh_eth_resources), |
| +}; |
| + |
| /* LCDC */ |
| static struct fb_videomode lcdc0_mode = { |
| .name = "AMPIER/AM-800480", |
| @@ -188,6 +221,7 @@ static struct platform_device gpio_keys_device = { |
| static struct platform_device *eva_devices[] __initdata = { |
| &lcdc0_device, |
| &gpio_keys_device, |
| + &sh_eth_device, |
| }; |
| |
| /* |
| @@ -244,6 +278,30 @@ static void __init eva_init(void) |
| gpio_request(GPIO_PORT166, NULL); /* TP_RST_B */ |
| gpio_direction_output(GPIO_PORT166, 1); |
| |
| + /* GETHER */ |
| + gpio_request(GPIO_FN_ET_CRS, NULL); |
| + gpio_request(GPIO_FN_ET_MDC, NULL); |
| + gpio_request(GPIO_FN_ET_MDIO, NULL); |
| + gpio_request(GPIO_FN_ET_TX_ER, NULL); |
| + gpio_request(GPIO_FN_ET_RX_ER, NULL); |
| + gpio_request(GPIO_FN_ET_ERXD0, NULL); |
| + gpio_request(GPIO_FN_ET_ERXD1, NULL); |
| + gpio_request(GPIO_FN_ET_ERXD2, NULL); |
| + gpio_request(GPIO_FN_ET_ERXD3, NULL); |
| + gpio_request(GPIO_FN_ET_TX_CLK, NULL); |
| + gpio_request(GPIO_FN_ET_TX_EN, NULL); |
| + gpio_request(GPIO_FN_ET_ETXD0, NULL); |
| + gpio_request(GPIO_FN_ET_ETXD1, NULL); |
| + gpio_request(GPIO_FN_ET_ETXD2, NULL); |
| + gpio_request(GPIO_FN_ET_ETXD3, NULL); |
| + gpio_request(GPIO_FN_ET_PHY_INT, NULL); |
| + gpio_request(GPIO_FN_ET_COL, NULL); |
| + gpio_request(GPIO_FN_ET_RX_DV, NULL); |
| + gpio_request(GPIO_FN_ET_RX_CLK, NULL); |
| + |
| + gpio_request(GPIO_PORT18, NULL); /* PHY_RST */ |
| + gpio_direction_output(GPIO_PORT18, 1); |
| + |
| /* |
| * CAUTION |
| * |
| -- |
| 1.7.10 |
| |