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.

Signed-off-by: Jerome Brunet <jbru...@baylibre.com>
---
 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 49 +++++------------------------------
 1 file changed, 7 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c 
b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 
205bd0fde4f8b3400caa8507092308e50eb172b7..38bd18b14887a27a716c8798f6284649c77a761b
 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -457,23 +457,6 @@ static void ti_sn65dsi86_debugfs_init(struct ti_sn65dsi86 
*pdata)
  * Auxiliary Devices (*not* AUX)
  */
 
-static void ti_sn65dsi86_uninit_aux(void *data)
-{
-       auxiliary_device_uninit(data);
-}
-
-static void ti_sn65dsi86_delete_aux(void *data)
-{
-       auxiliary_device_delete(data);
-}
-
-static void ti_sn65dsi86_aux_device_release(struct device *dev)
-{
-       struct auxiliary_device *aux = container_of(dev, struct 
auxiliary_device, dev);
-
-       kfree(aux);
-}
-
 static int ti_sn65dsi86_add_aux_device(struct ti_sn65dsi86 *pdata,
                                       struct auxiliary_device **aux_out,
                                       const char *name)
@@ -481,34 +464,16 @@ static int ti_sn65dsi86_add_aux_device(struct 
ti_sn65dsi86 *pdata,
        struct device *dev = pdata->dev;
        const struct i2c_client *client = to_i2c_client(dev);
        struct auxiliary_device *aux;
-       int ret;
+       int id;
 
-       aux = kzalloc(sizeof(*aux), GFP_KERNEL);
+       id = (client->adapter->nr << 10) | client->addr;
+       aux = __devm_auxiliary_device_create(dev, KBUILD_MODNAME, name,
+                                            NULL, id);
        if (!aux)
-               return -ENOMEM;
-
-       aux->name = name;
-       aux->id = (client->adapter->nr << 10) | client->addr;
-       aux->dev.parent = dev;
-       aux->dev.release = ti_sn65dsi86_aux_device_release;
-       device_set_of_node_from_dev(&aux->dev, dev);
-       ret = auxiliary_device_init(aux);
-       if (ret) {
-               kfree(aux);
-               return ret;
-       }
-       ret = devm_add_action_or_reset(dev, ti_sn65dsi86_uninit_aux, aux);
-       if (ret)
-               return ret;
-
-       ret = auxiliary_device_add(aux);
-       if (ret)
-               return ret;
-       ret = devm_add_action_or_reset(dev, ti_sn65dsi86_delete_aux, aux);
-       if (!ret)
-               *aux_out = aux;
+               return -ENODEV;
 
-       return ret;
+       *aux_out = aux;
+       return 0;
 }
 
 /* 
-----------------------------------------------------------------------------

-- 
2.47.2

Reply via email to