ARRAY_SIZE(ar71xx_generic_spi_info));
ar71xx_add_device_mdio(0xffe0ffff);
ARRAY_SIZE(ar71xx_generic_spi_info));
ar71xx_add_device_mdio(0xffe0ffff);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x000f0000);
- ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00100000);
+
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0x000f0000;
+
+ ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth1_data.phy_mask = 0x00100000;
+
+ ar71xx_add_device_eth(0);
+ ar71xx_add_device_eth(1);
rb4xx_add_device_spi();
ar71xx_add_device_mdio(0xfffffffe);
rb4xx_add_device_spi();
ar71xx_add_device_mdio(0xfffffffe);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000001);
+
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0x00000001;
+
+ ar71xx_add_device_eth(0);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
rb433_add_device_spi();
ar71xx_add_device_mdio(0xffffffec);
rb433_add_device_spi();
ar71xx_add_device_mdio(0xffffffec);
- ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000010);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000003);
+
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0x00000003;
+
+ ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth1_data.phy_mask = 0x00000010;
+
+ ar71xx_add_device_eth(1);
+ ar71xx_add_device_eth(0);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
rb4xx_add_device_spi();
ar71xx_add_device_mdio(0xffffffe0);
rb4xx_add_device_spi();
ar71xx_add_device_mdio(0xffffffe0);
- ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000010);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x0000000f);
+
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0x0000000f;
+
+ ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth1_data.phy_mask = 0x00000010;
+
+ ar71xx_add_device_eth(1);
+ ar71xx_add_device_eth(0);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
rb4xx_leds_gpio);
{
rb4xx_add_device_spi();
{
rb4xx_add_device_spi();
ar71xx_add_device_mdio(0x3fffff00);
ar71xx_add_device_mdio(0x3fffff00);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000000);
- ar71xx_add_device_eth(1, PHY_INTERFACE_MODE_RMII, 0x00000001);
+
+#if 0
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0;
+ ar71xx_eth0_data.speed = SPEED_100;
+ ar71xx_eth0_data.duplex = DUPLEX_FULL;
+
+ ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
+ ar71xx_eth1_data.phy_mask = 0x00000001;
+
+ ar71xx_add_device_eth(0);
+ ar71xx_add_device_eth(1);
#endif
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
#endif
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
ar71xx_add_device_spi(NULL, wp543_spi_info, ARRAY_SIZE(wp543_spi_info));
ar71xx_add_device_mdio(0xfffffff7);
ar71xx_add_device_spi(NULL, wp543_spi_info, ARRAY_SIZE(wp543_spi_info));
ar71xx_add_device_mdio(0xfffffff7);
- ar71xx_add_device_eth(0, PHY_INTERFACE_MODE_MII, 0x00000008);
+
+ ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ar71xx_eth0_data.phy_mask = 0x00000008;
+ ar71xx_add_device_eth(0);
-static struct ag71xx_platform_data ar71xx_eth0_data = {
+struct ag71xx_platform_data ar71xx_eth0_data = {
.reset_bit = RESET_MODULE_GE0_MAC,
.flush_reg = DDR_REG_FLUSH_GE0,
};
.reset_bit = RESET_MODULE_GE0_MAC,
.flush_reg = DDR_REG_FLUSH_GE0,
};
-static struct ag71xx_platform_data ar71xx_eth1_data = {
+struct ag71xx_platform_data ar71xx_eth1_data = {
.reset_bit = RESET_MODULE_GE1_MAC,
.flush_reg = DDR_REG_FLUSH_GE1,
};
.reset_bit = RESET_MODULE_GE1_MAC,
.flush_reg = DDR_REG_FLUSH_GE1,
};
};
static int ar71xx_eth_instance __initdata;
};
static int ar71xx_eth_instance __initdata;
-void __init ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
- u32 phy_mask)
+void __init ar71xx_add_device_eth(unsigned int id)
{
struct platform_device *pdev;
switch (id) {
case 0:
{
struct platform_device *pdev;
switch (id) {
case 0:
+ switch (ar71xx_eth0_data.phy_if_mode) {
case PHY_INTERFACE_MODE_MII:
ar71xx_eth0_data.mii_if = MII0_CTRL_IF_MII;
break;
case PHY_INTERFACE_MODE_MII:
ar71xx_eth0_data.mii_if = MII0_CTRL_IF_MII;
break;
}
memcpy(ar71xx_eth0_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
ar71xx_eth0_data.mac_addr[5] += ar71xx_eth_instance;
}
memcpy(ar71xx_eth0_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
ar71xx_eth0_data.mac_addr[5] += ar71xx_eth_instance;
- ar71xx_eth0_data.phy_if_mode = phy_if_mode;
- ar71xx_eth0_data.phy_mask = phy_mask;
pdev = &ar71xx_eth0_device;
break;
case 1:
pdev = &ar71xx_eth0_device;
break;
case 1:
+ switch (ar71xx_eth1_data.phy_if_mode) {
case PHY_INTERFACE_MODE_RMII:
ar71xx_eth1_data.mii_if = MII1_CTRL_IF_RMII;
break;
case PHY_INTERFACE_MODE_RMII:
ar71xx_eth1_data.mii_if = MII1_CTRL_IF_RMII;
break;
}
memcpy(ar71xx_eth1_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
ar71xx_eth1_data.mac_addr[5] += ar71xx_eth_instance;
}
memcpy(ar71xx_eth1_data.mac_addr, ar71xx_mac_base, ETH_ALEN);
ar71xx_eth1_data.mac_addr[5] += ar71xx_eth_instance;
- ar71xx_eth1_data.phy_if_mode = phy_if_mode;
- ar71xx_eth1_data.phy_mask = phy_mask;
pdev = &ar71xx_eth1_device;
break;
default:
pdev = &ar71xx_eth1_device;
break;
default:
#include <linux/gpio_buttons.h>
struct ag71xx_platform_data {
#include <linux/gpio_buttons.h>
struct ag71xx_platform_data {
- u32 reset_bit;
- u32 flush_reg;
- u32 phy_mask;
phy_interface_t phy_if_mode;
phy_interface_t phy_if_mode;
+ u32 reset_bit;
+ u32 flush_reg;
+ u32 mii_if;
u8 mac_addr[ETH_ALEN];
};
u8 mac_addr[ETH_ALEN];
};
extern void ar71xx_set_mac_base(unsigned char *mac) __init;
extern void ar71xx_parse_mac_addr(char *mac_str) __init;
extern void ar71xx_set_mac_base(unsigned char *mac) __init;
extern void ar71xx_parse_mac_addr(char *mac_str) __init;
-extern void ar71xx_add_device_eth(unsigned int id, phy_interface_t phy_if_mode,
- u32 phy_mask) __init;
+
+extern struct ag71xx_platform_data ar71xx_eth0_data;
+extern struct ag71xx_platform_data ar71xx_eth1_data;
+extern void ar71xx_add_device_eth(unsigned int id) __init;
extern void ar71xx_add_device_mdio(u32 phy_mask) __init;
extern void ar71xx_add_device_mdio(u32 phy_mask) __init;