From ccbfcba859bf77ffa569ba01e1a946a6e5eac806 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Fri, 19 Feb 2010 11:52:36 +0000 Subject: [PATCH] ar71xx: move AP91 specific ethernet initialization into a separate file SVN-Revision: 19750 --- target/linux/ar71xx/config-2.6.32 | 1 + .../ar71xx/files/arch/mips/ar71xx/Kconfig | 5 +++ .../ar71xx/files/arch/mips/ar71xx/Makefile | 1 + .../files/arch/mips/ar71xx/dev-ap91-eth.c | 39 +++++++++++++++++++ .../files/arch/mips/ar71xx/dev-ap91-eth.h | 21 ++++++++++ .../files/arch/mips/ar71xx/mach-dir-600-a1.c | 26 +------------ .../files/arch/mips/ar71xx/mach-tl-wr741nd.c | 28 ++----------- 7 files changed, 72 insertions(+), 49 deletions(-) create mode 100644 target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.c create mode 100644 target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.h diff --git a/target/linux/ar71xx/config-2.6.32 b/target/linux/ar71xx/config-2.6.32 index b4c3d1f3ac..1b7277c9d8 100644 --- a/target/linux/ar71xx/config-2.6.32 +++ b/target/linux/ar71xx/config-2.6.32 @@ -6,6 +6,7 @@ CONFIG_AG71XX_AR8216_SUPPORT=y # CONFIG_AG71XX_DEBUG_FS is not set # CONFIG_ALCHEMY_GPIO_INDIRECT is not set # CONFIG_AR7 is not set +CONFIG_AR71XX_DEV_AP91_ETH=y CONFIG_AR71XX_DEV_AP91_PCI=y CONFIG_AR71XX_DEV_AP94_PCI=y CONFIG_AR71XX_DEV_AR913X_WMAC=y diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig index 50ae98faea..5a6e4a3bca 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig @@ -21,6 +21,7 @@ config AR71XX_MACH_AP83 config AR71XX_MACH_DIR_600_A1 bool "D-Link DIR-600 rev. A1 support" + select AR71XX_DEV_AP91_ETH select AR71XX_DEV_AP91_PCI if PCI select AR71XX_DEV_M25P80 select AR71XX_DEV_GPIO_BUTTONS @@ -148,6 +149,7 @@ config AR71XX_MACH_MZK_W300NH config AR71XX_MACH_TL_WR741ND bool "TP-LINK TL-WR741ND support" select AR71XX_DEV_M25P80 + select AR71XX_DEV_AP91_ETH select AR71XX_DEV_AP91_PCI if PCI select AR71XX_DEV_GPIO_BUTTONS select AR71XX_DEV_LEDS_GPIO @@ -207,6 +209,9 @@ config AR71XX_DEV_M25P80 config AR71XX_DEV_AP91_PCI def_bool n +config AR71XX_DEV_AP91_ETH + def_bool n + config AR71XX_DEV_AP94_PCI def_bool n diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile index 13b5c41fe1..d8449f921b 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Makefile @@ -13,6 +13,7 @@ obj-y := prom.o irq.o setup.o devices.o gpio.o ar71xx.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_PCI) += pci.o +obj-$(CONFIG_AR71XX_DEV_AP91_ETH) += dev-ap91-eth.o obj-$(CONFIG_AR71XX_DEV_AP91_PCI) += dev-ap91-pci.o obj-$(CONFIG_AR71XX_DEV_AP94_PCI) += dev-ap94-pci.o obj-$(CONFIG_AR71XX_DEV_AR913X_WMAC) += dev-ar913x-wmac.o diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.c new file mode 100644 index 0000000000..d8dca10058 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.c @@ -0,0 +1,39 @@ +/* + * Atheros AP91 reference board ethernet initialization + * + * Copyright (C) 2010 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include "devices.h" + +void __init ap91_eth_init(u8 *mac_addr) +{ + if (mac_addr) + ar71xx_set_mac_base(mac_addr); + + /* WAN port */ + ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth0_data.phy_mask = 0x0; + ar71xx_eth0_data.speed = SPEED_100; + ar71xx_eth0_data.duplex = DUPLEX_FULL; + ar71xx_eth0_data.fifo_cfg1 = 0x0fff0000; + ar71xx_eth0_data.fifo_cfg2 = 0x00001fff; + ar71xx_eth0_data.fifo_cfg3 = 0x008001ff; + + /* LAN ports */ + ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; + ar71xx_eth1_data.phy_mask = 0x0; + ar71xx_eth1_data.speed = SPEED_1000; + ar71xx_eth1_data.duplex = DUPLEX_FULL; + ar71xx_eth1_data.fifo_cfg1 = 0x0fff0000; + ar71xx_eth1_data.fifo_cfg2 = 0x00001fff; + ar71xx_eth1_data.fifo_cfg3 = 0x008001ff; + + ar71xx_add_device_mdio(0x0); + ar71xx_add_device_eth(1); + ar71xx_add_device_eth(0); +} diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.h b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.h new file mode 100644 index 0000000000..424e2ae468 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.h @@ -0,0 +1,21 @@ +/* + * Atheros AP91 reference board ethernet initialization + * + * Copyright (C) 2010 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#ifndef _AR71XX_DEV_AP91_ETH_H +#define _AR71XX_DEV_AP91_ETH_H + +#if defined(CONFIG_AR71XX_DEV_AP91_ETH) +void ap91_eth_init(u8 *mac_addr) __init; +#else +static inline void ap91_eth_init(u8 *mac_addr) { } +#endif + +#endif /* _AR71XX_DEV_AP91_ETH_H */ + diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c index 68f1822680..f3fbadab1d 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-600-a1.c @@ -16,6 +16,7 @@ #include "machtype.h" #include "devices.h" #include "dev-m25p80.h" +#include "dev-ap91-eth.h" #include "dev-ap91-pci.h" #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" @@ -110,30 +111,6 @@ static void __init dir_600_a1_setup(void) u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000); u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); - ar71xx_set_mac_base(mac); - ar71xx_add_device_mdio(0x0); - - /* WAN port */ - ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; - ar71xx_eth0_data.phy_mask = 0x0; - ar71xx_eth0_data.speed = SPEED_100; - ar71xx_eth0_data.duplex = DUPLEX_FULL; - ar71xx_eth0_data.fifo_cfg1 = 0x0fff0000; - ar71xx_eth0_data.fifo_cfg2 = 0x00001fff; - ar71xx_eth0_data.fifo_cfg3 = 0x008001ff; - - /* LAN ports */ - ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; - ar71xx_eth1_data.phy_mask = 0x0; - ar71xx_eth1_data.speed = SPEED_1000; - ar71xx_eth1_data.duplex = DUPLEX_FULL; - ar71xx_eth1_data.fifo_cfg1 = 0x0fff0000; - ar71xx_eth1_data.fifo_cfg2 = 0x00001fff; - ar71xx_eth1_data.fifo_cfg3 = 0x008001ff; - - ar71xx_add_device_eth(1); - ar71xx_add_device_eth(0); - ar71xx_add_device_m25p80(&dir_600_a1_flash_data); ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(dir_600_a1_leds_gpio), @@ -143,6 +120,7 @@ static void __init dir_600_a1_setup(void) ARRAY_SIZE(dir_600_a1_gpio_buttons), dir_600_a1_gpio_buttons); + ap91_eth_init(mac); ap91_pci_init(ee, NULL); } diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c index e5d9776392..5ba654b08c 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c @@ -1,7 +1,7 @@ /* * TP-LINK TL-WR741ND board support * - * Copyright (C) 2009 Gabor Juhos + * Copyright (C) 2009-2010 Gabor Juhos * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published @@ -16,6 +16,7 @@ #include "machtype.h" #include "devices.h" #include "dev-m25p80.h" +#include "dev-ap91-eth.h" #include "dev-ap91-pci.h" #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" @@ -98,30 +99,6 @@ static void __init tl_wr741nd_setup(void) u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); - ar71xx_set_mac_base(mac); - ar71xx_add_device_mdio(0x0); - - /* WAN port */ - ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; - ar71xx_eth0_data.phy_mask = 0x0; - ar71xx_eth0_data.speed = SPEED_100; - ar71xx_eth0_data.duplex = DUPLEX_FULL; - ar71xx_eth0_data.fifo_cfg1 = 0x0fff0000; - ar71xx_eth0_data.fifo_cfg2 = 0x00001fff; - ar71xx_eth0_data.fifo_cfg3 = 0x008001ff; - - /* LAN ports */ - ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; - ar71xx_eth1_data.phy_mask = 0x0; - ar71xx_eth1_data.speed = SPEED_1000; - ar71xx_eth1_data.duplex = DUPLEX_FULL; - ar71xx_eth1_data.fifo_cfg1 = 0x0fff0000; - ar71xx_eth1_data.fifo_cfg2 = 0x00001fff; - ar71xx_eth1_data.fifo_cfg3 = 0x008001ff; - - ar71xx_add_device_eth(1); - ar71xx_add_device_eth(0); - ar71xx_add_device_m25p80(&tl_wr741nd_flash_data); ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr741nd_leds_gpio), @@ -131,6 +108,7 @@ static void __init tl_wr741nd_setup(void) ARRAY_SIZE(tl_wr741nd_gpio_buttons), tl_wr741nd_gpio_buttons); + ap91_eth_init(mac); ap91_pci_init(ee, NULL); } MIPS_MACHINE(AR71XX_MACH_TL_WR741ND, "TL-WR741ND", "TP-LINK TL-WR741ND", -- 2.30.2