generic: replace simple AQR hack patch with upstream version
[openwrt/staging/jow.git] / target / linux / generic / hack-5.15 / 720-net-phy-add-aqr-phys.patch
diff --git a/target/linux/generic/hack-5.15/720-net-phy-add-aqr-phys.patch b/target/linux/generic/hack-5.15/720-net-phy-add-aqr-phys.patch
deleted file mode 100644 (file)
index c4a9159..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-From: Birger Koblitz <git@birger-koblitz.de>
-Date: Sun, 5 Sep 2021 15:13:10 +0200
-Subject: [PATCH] kernel: Add AQR113C and AQR813 support
-
-This hack adds support for the Aquantia 4th generation, 10GBit
-PHYs AQR113C and AQR813.
-
-Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
-
---- a/drivers/net/phy/aquantia/aquantia_main.c
-+++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -23,6 +23,7 @@
- #define PHY_ID_AQCS109        0x03a1b5c2
- #define PHY_ID_AQR405 0x03a1b4b0
- #define PHY_ID_AQR113C        0x31c31c12
-+#define PHY_ID_AQR813 0x31c31cb2
- #define MDIO_PHYXS_VEND_IF_STATUS             0xe812
- #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK   GENMASK(7, 3)
-@@ -360,6 +361,49 @@ static int aqr107_read_rate(struct phy_d
-       return 0;
- }
-+static int aqr113c_read_status(struct phy_device *phydev)
-+{
-+      int val, ret;
-+
-+      ret = aqr_read_status(phydev);
-+      if (ret)
-+              return ret;
-+
-+      if (!phydev->link || phydev->autoneg == AUTONEG_DISABLE)
-+              return 0;
-+
-+      // On AQR113C, the speed returned by aqr_read_status is wrong
-+      aqr107_read_rate(phydev);
-+
-+      val = phy_read_mmd(phydev, MDIO_MMD_PHYXS, MDIO_PHYXS_VEND_IF_STATUS);
-+      if (val < 0)
-+              return val;
-+
-+      switch (FIELD_GET(MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK, val)) {
-+      case MDIO_PHYXS_VEND_IF_STATUS_TYPE_KR:
-+              phydev->interface = PHY_INTERFACE_MODE_10GKR;
-+              break;
-+      case MDIO_PHYXS_VEND_IF_STATUS_TYPE_XFI:
-+              phydev->interface = PHY_INTERFACE_MODE_10GBASER;
-+              break;
-+      case MDIO_PHYXS_VEND_IF_STATUS_TYPE_USXGMII:
-+              phydev->interface = PHY_INTERFACE_MODE_USXGMII;
-+              break;
-+      case MDIO_PHYXS_VEND_IF_STATUS_TYPE_SGMII:
-+              phydev->interface = PHY_INTERFACE_MODE_SGMII;
-+              break;
-+      case MDIO_PHYXS_VEND_IF_STATUS_TYPE_OCSGMII:
-+              phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
-+              break;
-+      default:
-+              phydev->interface = PHY_INTERFACE_MODE_NA;
-+              break;
-+      }
-+
-+      /* Read downshifted rate from vendor register */
-+      return aqr107_read_rate(phydev);
-+}
-+
- static int aqr107_read_status(struct phy_device *phydev)
- {
-       int val, ret;
-@@ -499,7 +543,7 @@ static void aqr107_chip_info(struct phy_
-       build_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val);
-       prov_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val);
--      phydev_dbg(phydev, "FW %u.%u, Build %u, Provisioning %u\n",
-+      phydev_info(phydev, "FW %u.%u, Build %u, Provisioning %u\n",
-                  fw_major, fw_minor, build_id, prov_id);
- }
-@@ -762,7 +806,7 @@ static struct phy_driver aqr_driver[] =
-       .config_aneg    = aqr_config_aneg,
-       .config_intr    = aqr_config_intr,
-       .handle_interrupt       = aqr_handle_interrupt,
--      .read_status    = aqr107_read_status,
-+      .read_status    = aqr113c_read_status,
-       .get_tunable    = aqr107_get_tunable,
-       .set_tunable    = aqr107_set_tunable,
-       .suspend        = aqr107_suspend,
-@@ -772,6 +816,24 @@ static struct phy_driver aqr_driver[] =
-       .get_stats      = aqr107_get_stats,
-       .link_change_notify = aqr107_link_change_notify,
- },
-+{
-+      PHY_ID_MATCH_MODEL(PHY_ID_AQR813),
-+      .name           = "Aquantia AQR813",
-+      .probe          = aqr107_probe,
-+      .config_init    = aqr107_config_init,
-+      .config_aneg    = aqr_config_aneg,
-+      .config_intr    = aqr_config_intr,
-+      .handle_interrupt = aqr_handle_interrupt,
-+      .read_status    = aqr113c_read_status,
-+      .get_tunable    = aqr107_get_tunable,
-+      .set_tunable    = aqr107_set_tunable,
-+      .suspend        = aqr107_suspend,
-+      .resume         = aqr107_resume,
-+      .get_sset_count = aqr107_get_sset_count,
-+      .get_strings    = aqr107_get_strings,
-+      .get_stats      = aqr107_get_stats,
-+      .link_change_notify = aqr107_link_change_notify,
-+},
- };
- module_phy_driver(aqr_driver);
-@@ -785,6 +847,7 @@ static struct mdio_device_id __maybe_unu
-       { PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
-       { PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
-       { PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
-+      { PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
-       { }
- };