12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Fri, 13 May 2016 21:01:19 +0200
- Subject: ar71xx: fix qca956x ethernet initialization
- Complete internal switch initialization for QCA956X.
- Set default mdio device if the interface mode of GE0 is not SGMII (fix ticket #21520).
- Signed-off-by: Weijie Gao <hackpascal@gmail.com>
- Backport of OpenWrt r48937
- diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c
- index 12a376e..b43c80a 100644
- --- a/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c
- +++ b/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c
- @@ -271,6 +271,7 @@ void __init ath79_register_mdio(unsigned int id, u32 phy_mask)
- case ATH79_SOC_QCA956X:
- if (id == 1)
- mdio_data->builtin_switch = 1;
- + mdio_data->is_ar934x = 1;
- break;
-
- default:
- @@ -1123,16 +1124,25 @@ void __init ath79_register_eth(unsigned int id)
- if (id == 0) {
- pdata->reset_bit = QCA955X_RESET_GE0_MAC |
- QCA955X_RESET_GE0_MDIO;
- +
- if (pdata->phy_if_mode == PHY_INTERFACE_MODE_SGMII)
- pdata->set_speed = qca956x_set_speed_sgmii;
- else
- - /* FIXME */
- - pdata->set_speed = ath79_set_speed_dummy;
- + pdata->set_speed = ath79_set_speed_ge0;
- } else {
- pdata->reset_bit = QCA955X_RESET_GE1_MAC |
- QCA955X_RESET_GE1_MDIO;
- - /* FIXME */
- +
- pdata->set_speed = ath79_set_speed_dummy;
- +
- + pdata->switch_data = &ath79_switch_data;
- +
- + pdata->speed = SPEED_1000;
- + pdata->duplex = DUPLEX_FULL;
- +
- + /* reset the built-in switch */
- + ath79_device_reset_set(AR934X_RESET_ETH_SWITCH);
- + ath79_device_reset_clear(AR934X_RESET_ETH_SWITCH);
- }
-
- pdata->ddr_flush = ath79_ddr_no_flush;
- @@ -1196,6 +1206,11 @@ void __init ath79_register_eth(unsigned int id)
- /* don't assign any MDIO device by default */
- break;
-
- + case ATH79_SOC_QCA956X:
- + if (pdata->phy_if_mode != PHY_INTERFACE_MODE_SGMII)
- + pdata->mii_bus_dev = &ath79_mdio1_device.dev;
- + break;
- +
- default:
- pdata->mii_bus_dev = &ath79_mdio0_device.dev;
- break;
|