generic: 6.1: sync mt7530 DSA driver with upstream
[openwrt/openwrt.git] / target / linux / generic / backport-6.1 / 790-v6.4-0008-net-dsa-mt7530-introduce-mt7530_probe_common-helper-.patch
diff --git a/target/linux/generic/backport-6.1/790-v6.4-0008-net-dsa-mt7530-introduce-mt7530_probe_common-helper-.patch b/target/linux/generic/backport-6.1/790-v6.4-0008-net-dsa-mt7530-introduce-mt7530_probe_common-helper-.patch
deleted file mode 100644 (file)
index dc4fcb6..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From 4d632005c90e253c000d0db73b7cdb9d8dc2e2dd Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel@makrotopia.org>
-Date: Mon, 3 Apr 2023 02:18:39 +0100
-Subject: [PATCH 08/13] net: dsa: mt7530: introduce mt7530_probe_common helper
- function
-
-Move commonly used parts from mt7530_probe into new mt7530_probe_common
-helper function which will be used by both, mt7530_probe and the
-to-be-introduced mt7988_probe.
-
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Reviewed-by: Andrew Lunn <andrew@lunn.ch>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/dsa/mt7530.c | 98 ++++++++++++++++++++++------------------
- 1 file changed, 54 insertions(+), 44 deletions(-)
-
---- a/drivers/net/dsa/mt7530.c
-+++ b/drivers/net/dsa/mt7530.c
-@@ -3177,44 +3177,21 @@ static const struct of_device_id mt7530_
- MODULE_DEVICE_TABLE(of, mt7530_of_match);
- static int
--mt7530_probe(struct mdio_device *mdiodev)
-+mt7530_probe_common(struct mt7530_priv *priv)
- {
--      static struct regmap_config *regmap_config;
--      struct mt7530_priv *priv;
--      struct device_node *dn;
--      int ret;
-+      struct device *dev = priv->dev;
--      dn = mdiodev->dev.of_node;
--
--      priv = devm_kzalloc(&mdiodev->dev, sizeof(*priv), GFP_KERNEL);
--      if (!priv)
--              return -ENOMEM;
--
--      priv->ds = devm_kzalloc(&mdiodev->dev, sizeof(*priv->ds), GFP_KERNEL);
-+      priv->ds = devm_kzalloc(dev, sizeof(*priv->ds), GFP_KERNEL);
-       if (!priv->ds)
-               return -ENOMEM;
--      priv->ds->dev = &mdiodev->dev;
-+      priv->ds->dev = dev;
-       priv->ds->num_ports = MT7530_NUM_PORTS;
--      /* Use medatek,mcm property to distinguish hardware type that would
--       * casues a little bit differences on power-on sequence.
--       */
--      priv->mcm = of_property_read_bool(dn, "mediatek,mcm");
--      if (priv->mcm) {
--              dev_info(&mdiodev->dev, "MT7530 adapts as multi-chip module\n");
--
--              priv->rstc = devm_reset_control_get(&mdiodev->dev, "mcm");
--              if (IS_ERR(priv->rstc)) {
--                      dev_err(&mdiodev->dev, "Couldn't get our reset line\n");
--                      return PTR_ERR(priv->rstc);
--              }
--      }
--
-       /* Get the hardware identifier from the devicetree node.
-        * We will need it for some of the clock and regulator setup.
-        */
--      priv->info = of_device_get_match_data(&mdiodev->dev);
-+      priv->info = of_device_get_match_data(dev);
-       if (!priv->info)
-               return -EINVAL;
-@@ -3228,23 +3205,53 @@ mt7530_probe(struct mdio_device *mdiodev
-               return -EINVAL;
-       priv->id = priv->info->id;
-+      priv->dev = dev;
-+      priv->ds->priv = priv;
-+      priv->ds->ops = &mt7530_switch_ops;
-+      mutex_init(&priv->reg_mutex);
-+      dev_set_drvdata(dev, priv);
--      if (priv->id == ID_MT7530) {
--              priv->core_pwr = devm_regulator_get(&mdiodev->dev, "core");
--              if (IS_ERR(priv->core_pwr))
--                      return PTR_ERR(priv->core_pwr);
-+      return 0;
-+}
--              priv->io_pwr = devm_regulator_get(&mdiodev->dev, "io");
--              if (IS_ERR(priv->io_pwr))
--                      return PTR_ERR(priv->io_pwr);
--      }
-+static int
-+mt7530_probe(struct mdio_device *mdiodev)
-+{
-+      static struct regmap_config *regmap_config;
-+      struct mt7530_priv *priv;
-+      struct device_node *dn;
-+      int ret;
-+
-+      dn = mdiodev->dev.of_node;
-+
-+      priv = devm_kzalloc(&mdiodev->dev, sizeof(*priv), GFP_KERNEL);
-+      if (!priv)
-+              return -ENOMEM;
--      /* Not MCM that indicates switch works as the remote standalone
-+      priv->bus = mdiodev->bus;
-+      priv->dev = &mdiodev->dev;
-+
-+      ret = mt7530_probe_common(priv);
-+      if (ret)
-+              return ret;
-+
-+      /* Use medatek,mcm property to distinguish hardware type that would
-+       * cause a little bit differences on power-on sequence.
-+       * Not MCM that indicates switch works as the remote standalone
-        * integrated circuit so the GPIO pin would be used to complete
-        * the reset, otherwise memory-mapped register accessing used
-        * through syscon provides in the case of MCM.
-        */
--      if (!priv->mcm) {
-+      priv->mcm = of_property_read_bool(dn, "mediatek,mcm");
-+      if (priv->mcm) {
-+              dev_info(&mdiodev->dev, "MT7530 adapts as multi-chip module\n");
-+
-+              priv->rstc = devm_reset_control_get(&mdiodev->dev, "mcm");
-+              if (IS_ERR(priv->rstc)) {
-+                      dev_err(&mdiodev->dev, "Couldn't get our reset line\n");
-+                      return PTR_ERR(priv->rstc);
-+              }
-+      } else {
-               priv->reset = devm_gpiod_get_optional(&mdiodev->dev, "reset",
-                                                     GPIOD_OUT_LOW);
-               if (IS_ERR(priv->reset)) {
-@@ -3253,12 +3260,15 @@ mt7530_probe(struct mdio_device *mdiodev
-               }
-       }
--      priv->bus = mdiodev->bus;
--      priv->dev = &mdiodev->dev;
--      priv->ds->priv = priv;
--      priv->ds->ops = &mt7530_switch_ops;
--      mutex_init(&priv->reg_mutex);
--      dev_set_drvdata(&mdiodev->dev, priv);
-+      if (priv->id == ID_MT7530) {
-+              priv->core_pwr = devm_regulator_get(&mdiodev->dev, "core");
-+              if (IS_ERR(priv->core_pwr))
-+                      return PTR_ERR(priv->core_pwr);
-+
-+              priv->io_pwr = devm_regulator_get(&mdiodev->dev, "io");
-+              if (IS_ERR(priv->io_pwr))
-+                      return PTR_ERR(priv->io_pwr);
-+      }
-       regmap_config = devm_kzalloc(&mdiodev->dev, sizeof(*regmap_config),
-                                    GFP_KERNEL);