lantiq: use more devm for i2c
authorRosen Penev <rosenp@gmail.com>
Sat, 19 Oct 2024 02:08:02 +0000 (19:08 -0700)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 10 Nov 2024 21:36:16 +0000 (22:36 +0100)
i2c_add_numbered_adapter is the wrong function to use here. It requires
setting nr to some value, otherwise it behaves the same as
i2c_add_adapter. nr is not set.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16825
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/lantiq/patches-6.6/0031-I2C-MIPS-lantiq-add-FALC-ON-i2c-bus-master.patch

index 235e48f6deb0ffbf3a9a966de73a684abe90fe7f..1f2f5139d60a131ade48a7377d508d0d7791b926 100644 (file)
@@ -47,7 +47,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  obj-$(CONFIG_I2C_MESON)               += i2c-meson.o
 --- /dev/null
 +++ b/drivers/i2c/busses/i2c-lantiq.c
-@@ -0,0 +1,745 @@
+@@ -0,0 +1,742 @@
 +
 +/*
 + * Lantiq I2C bus adapter
@@ -658,7 +658,9 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      }
 +
 +      init_completion(&priv->cmd_complete);
-+      mutex_init(&priv->mutex);
++      ret = devm_mutex_init(&pdev->dev, &priv->mutex);
++      if (ret)
++              return ret;
 +
 +      priv->membase = devm_platform_ioremap_resource(pdev, 0);
 +      if (IS_ERR(priv->membase))
@@ -719,7 +721,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      clk_activate(priv->clk_gate);
 +
 +      /* add our adapter to the i2c stack */
-+      ret = i2c_add_numbered_adapter(adap);
++      ret = devm_i2c_add_adapter(&pdev->dev, adap);
 +      if (ret) {
 +              dev_err(&pdev->dev, "can't register I2C adapter\n");
 +              goto out;
@@ -737,7 +739,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      ret = ltq_i2c_hw_init(adap);
 +      if (ret) {
 +              dev_err(&pdev->dev, "can't configure adapter\n");
-+              i2c_del_adapter(adap);
 +              platform_set_drvdata(pdev, NULL);
 +              goto out;
 +      } else {
@@ -762,10 +763,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 +      /* power down the core */
 +      clk_deactivate(priv->clk_gate);
 +
-+      /* remove driver */
-+      i2c_del_adapter(&priv->adap);
-+      kfree(priv);
-+
 +      dev_dbg(&pdev->dev, "removed\n");
 +      platform_set_drvdata(pdev, NULL);
 +