The auxiliary device creation of this driver is simple enough to
use the available auxiliary device creation helper.

Use it and remove some boilerplate code.

Tested-by: Théo Lebrun <theo.leb...@bootlin.com>  # On Mobileye EyeQ5
Signed-off-by: Jerome Brunet <jbru...@baylibre.com>
---
 drivers/clk/clk-eyeq.c | 57 +++++++++++---------------------------------------
 1 file changed, 12 insertions(+), 45 deletions(-)

diff --git a/drivers/clk/clk-eyeq.c b/drivers/clk/clk-eyeq.c
index 
640c25788487f8cf6fb4431ed6fb612cf099f114..4094f34af05b488545cc87043fb3352968515a78
 100644
--- a/drivers/clk/clk-eyeq.c
+++ b/drivers/clk/clk-eyeq.c
@@ -322,38 +322,18 @@ static void eqc_probe_init_fixed_factors(struct device 
*dev,
        }
 }
 
-static void eqc_auxdev_release(struct device *dev)
-{
-       struct auxiliary_device *adev = to_auxiliary_dev(dev);
-
-       kfree(adev);
-}
-
-static int eqc_auxdev_create(struct device *dev, void __iomem *base,
-                            const char *name, u32 id)
+static void eqc_auxdev_create_optional(struct device *dev, void __iomem *base,
+                                      const char *name)
 {
        struct auxiliary_device *adev;
-       int ret;
-
-       adev = kzalloc(sizeof(*adev), GFP_KERNEL);
-       if (!adev)
-               return -ENOMEM;
-
-       adev->name = name;
-       adev->dev.parent = dev;
-       adev->dev.platform_data = (void __force *)base;
-       adev->dev.release = eqc_auxdev_release;
-       adev->id = id;
 
-       ret = auxiliary_device_init(adev);
-       if (ret)
-               return ret;
-
-       ret = auxiliary_device_add(adev);
-       if (ret)
-               auxiliary_device_uninit(adev);
-
-       return ret;
+       if (name) {
+               adev = devm_auxiliary_device_create(dev, name,
+                                                   (void __force *)base);
+               if (!adev)
+                       dev_warn(dev, "failed creating auxiliary device 
%s.%s\n",
+                                KBUILD_MODNAME, name);
+       }
 }
 
 static int eqc_probe(struct platform_device *pdev)
@@ -365,7 +345,6 @@ static int eqc_probe(struct platform_device *pdev)
        unsigned int i, clk_count;
        struct resource *res;
        void __iomem *base;
-       int ret;
 
        data = device_get_match_data(dev);
        if (!data)
@@ -379,21 +358,9 @@ static int eqc_probe(struct platform_device *pdev)
        if (!base)
                return -ENOMEM;
 
-       /* Init optional reset auxiliary device. */
-       if (data->reset_auxdev_name) {
-               ret = eqc_auxdev_create(dev, base, data->reset_auxdev_name, 0);
-               if (ret)
-                       dev_warn(dev, "failed creating auxiliary device %s.%s: 
%d\n",
-                                KBUILD_MODNAME, data->reset_auxdev_name, ret);
-       }
-
-       /* Init optional pinctrl auxiliary device. */
-       if (data->pinctrl_auxdev_name) {
-               ret = eqc_auxdev_create(dev, base, data->pinctrl_auxdev_name, 
0);
-               if (ret)
-                       dev_warn(dev, "failed creating auxiliary device %s.%s: 
%d\n",
-                                KBUILD_MODNAME, data->pinctrl_auxdev_name, 
ret);
-       }
+       /* Init optional auxiliary devices. */
+       eqc_auxdev_create_optional(dev, base, data->reset_auxdev_name);
+       eqc_auxdev_create_optional(dev, base, data->pinctrl_auxdev_name);
 
        if (data->pll_count + data->div_count + data->fixed_factor_count == 0)
                return 0; /* Zero clocks, we are done. */

-- 
2.47.2

Reply via email to