Author: blogic Date: 2016-03-16 10:27:08 +0100 (Wed, 16 Mar 2016) New Revision: 49029
Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.h trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c7.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-epg5000.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr1750.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr900.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-f9k1115v2.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr1750.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr18.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr900.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-nbg6716.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tew-823dru.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr1043nd-v2.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wlr8100.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj558.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wzr-450hp2.c trunk/target/linux/ar71xx/patches-4.1/609-MIPS-ath79-ap136-fixes.patch trunk/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch Log: ar71xx: Allow to set the RXDV, RXD, TXD, TXE delays for QCA955x Some u-boot versions for QCA955x change the delays based on the link speed during boot. This usually breaks the support of other linkspeeds when OpenWrt is booted. It also conflicts with the at803x_platform_data::fixup_rgmii_tx_delay. OpenWrt has to set its own values in QCA955X_GMAC_REG_ETH_CFG. The default RGMII values from the Atheros u-boot are currently used to preset the existing mach files. These may have to be adjusted for boards using different values but which are not currently set them explicitely in OpenWrt. Signed-off-by: Sven Eckelmann <[email protected]> Cc: Gabor Juhos <[email protected]> Cc: Imre Kaloz <[email protected]> Cc: Christian Beier <[email protected]> Cc: Chris R Blake <[email protected]> Cc: Benjamin Berg <[email protected]> Cc: Heiner Kallweit <[email protected]> Cc: Cezary Jackiewicz <[email protected]> Cc: Matthias Schiffer <[email protected]> Cc: Dirk Neukirchen <[email protected]> Cc: Christian Mehlis <[email protected]> Cc: Luka Perkov <[email protected]> Cc: Felix Fietkau <[email protected]> Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -830,7 +830,9 @@ iounmap(base); } -void __init ath79_setup_qca955x_eth_cfg(u32 mask) +void __init ath79_setup_qca955x_eth_cfg(u32 mask, + unsigned int rxd, unsigned int rxdv, + unsigned int txd, unsigned int txe) { void __iomem *base; u32 t, m; @@ -845,6 +847,10 @@ QCA955X_ETH_CFG_RMII_GE0 | QCA955X_ETH_CFG_MII_CNTL_SPEED | QCA955X_ETH_CFG_RMII_GE0_MASTER; + m |= QCA955X_ETH_CFG_RXD_DELAY_MASK << QCA955X_ETH_CFG_RXD_DELAY_SHIFT; + m |= QCA955X_ETH_CFG_RDV_DELAY_MASK << QCA955X_ETH_CFG_RDV_DELAY_SHIFT; + m |= QCA955X_ETH_CFG_TXD_DELAY_MASK << QCA955X_ETH_CFG_TXD_DELAY_SHIFT; + m |= QCA955X_ETH_CFG_TXE_DELAY_MASK << QCA955X_ETH_CFG_TXE_DELAY_SHIFT; base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE); @@ -852,6 +858,10 @@ t &= ~m; t |= mask; + t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT; + t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT; + t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT; + t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT; __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.h =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.h 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.h 2016-03-16 09:27:08 UTC (rev 49029) @@ -48,6 +48,7 @@ void ath79_setup_ar933x_phy4_switch(bool mac, bool mdio); void ath79_setup_ar934x_eth_cfg(u32 mask); void ath79_setup_ar934x_eth_rx_delay(unsigned int rxd, unsigned int rxdv); -void ath79_setup_qca955x_eth_cfg(u32 mask); +void ath79_setup_qca955x_eth_cfg(u32 mask, unsigned int rxd, unsigned int rxdv, + unsigned int txd, unsigned int txe); #endif /* _ATH79_DEV_ETH_H */ Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c7.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c7.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c7.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -211,7 +211,7 @@ ARRAY_SIZE(archer_c7_mdio0_info)); ath79_register_mdio(0, 0x0); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); /* GMAC0 is connected to the RMGII interface */ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-epg5000.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-epg5000.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-epg5000.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -149,7 +149,7 @@ ath79_register_usb(); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr1750.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr1750.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr1750.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -148,7 +148,7 @@ ath79_register_usb(); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr900.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr900.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-esr900.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -170,7 +170,7 @@ ath79_register_wmac(art + ESR900_WMAC_CALDATA_OFFSET, wlan0_mac); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-f9k1115v2.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-f9k1115v2.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-f9k1115v2.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -152,7 +152,7 @@ mdiobus_register_board_info(f9k1115v2_mdio0_info, ARRAY_SIZE(f9k1115v2_mdio0_info)); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_init_mac(ath79_eth0_data.mac_addr, art + F9K1115V2_WAN_MAC_OFFSET, 0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr1750.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr1750.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr1750.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -113,7 +113,7 @@ ath79_register_wmac(art + MR1750_WMAC_CALDATA_OFFSET, mac); ath79_register_pci(); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); ath79_init_mac(ath79_eth0_data.mac_addr, art + MR1750_MAC0_OFFSET, 0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr18.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr18.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr18.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -253,9 +253,8 @@ res = mr18_extract_sgmii_res_cal(); if (res >= 0) { /* Setup SoC Eth Config */ - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN | - (3 << QCA955X_ETH_CFG_RXD_DELAY_SHIFT) | - (3 << QCA955X_ETH_CFG_RDV_DELAY_SHIFT)); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, + 0); /* MDIO Interface */ ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr900.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr900.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-mr900.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -123,7 +123,7 @@ } pdata->use_eeprom = true; - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); ath79_init_mac(ath79_eth0_data.mac_addr, art + MR900_MAC0_OFFSET, 0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-nbg6716.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-nbg6716.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-nbg6716.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -287,7 +287,7 @@ ath79_register_wmac(art + NBG6716_WMAC_CALDATA_OFFSET, tmpmac); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -203,7 +203,7 @@ rb922gs_nand_init(); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tew-823dru.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tew-823dru.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tew-823dru.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -155,7 +155,7 @@ ARRAY_SIZE(tew_823dru_mdio0_info)); ath79_register_mdio(0, 0x0); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); /* GMAC0 is connected to the RMGII interface */ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr1043nd-v2.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr1043nd-v2.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr1043nd-v2.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -183,7 +183,7 @@ ARRAY_SIZE(wr1043nd_v2_mdio0_info)); ath79_register_mdio(0, 0x0); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); /* GMAC0 is connected to the RMGII interface */ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wlr8100.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wlr8100.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wlr8100.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -152,7 +152,7 @@ ath79_register_wmac(art + WLR8100_WMAC_CALDATA_OFFSET, NULL); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj558.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj558.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj558.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -156,7 +156,7 @@ ath79_init_mac(ath79_eth0_data.mac_addr, art + WPJ558_MAC_OFFSET, 0); ath79_init_mac(ath79_eth1_data.mac_addr, art + WPJ558_MAC_OFFSET, 0); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); /* GMAC0 is connected to an AR8327 switch */ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wzr-450hp2.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wzr-450hp2.c 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-wzr-450hp2.c 2016-03-16 09:27:08 UTC (rev 49029) @@ -193,7 +193,7 @@ ARRAY_SIZE(wzr_450hp2_mdio0_info)); ath79_register_mdio(0, 0x0); - ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); /* GMAC0 is connected to the RMGII interface */ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; Modified: trunk/target/linux/ar71xx/patches-4.1/609-MIPS-ath79-ap136-fixes.patch =================================================================== --- trunk/target/linux/ar71xx/patches-4.1/609-MIPS-ath79-ap136-fixes.patch 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/patches-4.1/609-MIPS-ath79-ap136-fixes.patch 2016-03-16 09:27:08 UTC (rev 49029) @@ -149,7 +149,7 @@ + + ath79_register_wmac(art + AP136_WMAC_CALDATA_OFFSET, NULL); + -+ ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); ++ ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); -static int ap136_pci_plat_dev_init(struct pci_dev *dev) + ath79_register_mdio(0, 0x0); Modified: trunk/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch =================================================================== --- trunk/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch 2016-03-16 09:27:04 UTC (rev 49028) +++ trunk/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch 2016-03-16 09:27:08 UTC (rev 49029) @@ -149,7 +149,7 @@ + + ath79_register_wmac(art + AP136_WMAC_CALDATA_OFFSET, NULL); + -+ ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); ++ ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0); -static int ap136_pci_plat_dev_init(struct pci_dev *dev) + ath79_register_mdio(0, 0x0); _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
