X-Git-Url: http://git.ozo.com/?p=openwrt-10.03%2F.git;a=blobdiff_plain;f=target%2Flinux%2Far71xx%2Ffiles%2Farch%2Fmips%2Far71xx%2Fmach-wzr-hp-g300nh.c;h=8ba0ee39b14bcd43ae28a0ddcff645478d77ccf7;hp=b52cc601fccb1f4fd8630008c6efc879402f1faf;hb=66262e464104c3dc46b9316a2776bd5550761ef9;hpb=63a40ca6bdc96e62ea728f3809ff8bc00b914110 diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c index b52cc601f..8ba0ee39b 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include @@ -212,7 +212,7 @@ static struct platform_device wzrhpg300nh_74hc153_device = { } }; -static struct rtl8366s_platform_data wzrhpg300nh_rtl8366s_data = { +static struct rtl8366_platform_data wzrhpg300nh_rtl8366_data = { .gpio_sda = WZRHPG300NH_GPIO_RTL8366_SDA, .gpio_sck = WZRHPG300NH_GPIO_RTL8366_SCK, }; @@ -221,24 +221,44 @@ static struct platform_device wzrhpg300nh_rtl8366s_device = { .name = RTL8366S_DRIVER_NAME, .id = -1, .dev = { - .platform_data = &wzrhpg300nh_rtl8366s_data, + .platform_data = &wzrhpg300nh_rtl8366_data, + } +}; + +static struct platform_device wzrhpg301nh_rtl8366rb_device = { + .name = RTL8366RB_DRIVER_NAME, + .id = -1, + .dev = { + .platform_data = &wzrhpg300nh_rtl8366_data, } }; static void __init wzrhpg300nh_setup(void) { u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000); + bool hasrtl8366rb = false; ar71xx_set_mac_base(eeprom + WZRHPG300NH_MAC_OFFSET); - ar71xx_eth0_pll_data.pll_1000 = 0x1e000100; - ar71xx_eth0_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; + if (rtl8366_smi_detect(&wzrhpg300nh_rtl8366_data) == RTL8366_TYPE_RB) + hasrtl8366rb = true; + + if (hasrtl8366rb) { + ar71xx_eth0_pll_data.pll_1000 = 0x1f000000; + ar71xx_eth0_data.mii_bus_dev = &wzrhpg301nh_rtl8366rb_device.dev; + ar71xx_eth1_pll_data.pll_1000 = 0x100; + ar71xx_eth1_data.mii_bus_dev = &wzrhpg301nh_rtl8366rb_device.dev; + } else { + ar71xx_eth0_pll_data.pll_1000 = 0x1e000100; + ar71xx_eth0_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; + ar71xx_eth1_pll_data.pll_1000 = 0x1e000100; + ar71xx_eth1_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; + } + ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; ar71xx_eth0_data.speed = SPEED_1000; ar71xx_eth0_data.duplex = DUPLEX_FULL; - ar71xx_eth1_pll_data.pll_1000 = 0x1e000100; - ar71xx_eth1_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; ar71xx_eth1_data.phy_mask = 0x10;