[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250211-aux-device-create-helper-v3-3-7edb50524909@baylibre.com>
Date: Tue, 11 Feb 2025 18:28:00 +0100
From: Jerome Brunet <jbrunet@...libre.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Dave Ertman <david.m.ertman@...el.com>,
Ira Weiny <ira.weiny@...el.com>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Stephen Boyd <sboyd@...nel.org>,
Arnd Bergmann <arnd@...db.de>,
Danilo Krummrich <dakr@...nel.org>,
Conor Dooley <conor.dooley@...rochip.com>,
Daire McNamara <daire.mcnamara@...rochip.com>,
Philipp Zabel <p.zabel@...gutronix.de>,
Douglas Anderson <dianders@...omium.org>,
Andrzej Hajda <andrzej.hajda@...el.com>,
Neil Armstrong <neil.armstrong@...aro.org>,
Robert Foss <rfoss@...nel.org>,
Laurent Pinchart <Laurent.pinchart@...asonboard.com>,
Jonas Karlman <jonas@...boo.se>,
Jernej Skrabec <jernej.skrabec@...il.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>,
Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>,
Simona Vetter <simona@...ll.ch>,
Hans de Goede <hdegoede@...hat.com>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
Vladimir Kondratiev <vladimir.kondratiev@...ileye.com>,
Gregory CLEMENT <gregory.clement@...tlin.com>,
Théo Lebrun <theo.lebrun@...tlin.com>,
Michael Turquette <mturquette@...libre.com>,
Abel Vesa <abelvesa@...nel.org>,
Peng Fan <peng.fan@....com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
Kevin Hilman <khilman@...libre.com>,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>
Cc: Jerome Brunet <jbrunet@...libre.com>,
linux-kernel@...r.kernel.org,
linux-riscv@...ts.infradead.org,
dri-devel@...ts.freedesktop.org,
platform-driver-x86@...r.kernel.org,
linux-mips@...r.kernel.org,
linux-clk@...r.kernel.org,
imx@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org,
linux-amlogic@...ts.infradead.org
Subject: [PATCH v3 3/7] drm/bridge: ti-sn65dsi86: use the auxiliary device creation helper
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 <jbrunet@...libre.com>
---
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 84 +++++++++--------------------------
1 file changed, 20 insertions(+), 64 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index e4d9006b59f1b975cf63e26b221e985206caf867..e583b8ba1fd4f27d98e03d4382e0417bbd50436f 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -454,62 +454,6 @@ static void ti_sn65dsi86_debugfs_init(struct ti_sn65dsi86 *pdata)
debugfs_create_file("status", 0600, debugfs, pdata, &status_fops);
}
-/* -----------------------------------------------------------------------------
- * 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)
-{
- struct device *dev = pdata->dev;
- struct auxiliary_device *aux;
- int ret;
-
- aux = kzalloc(sizeof(*aux), GFP_KERNEL);
- if (!aux)
- return -ENOMEM;
-
- aux->name = name;
- 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 ret;
-}
-
/* -----------------------------------------------------------------------------
* AUX Adapter
*/
@@ -671,7 +615,12 @@ static int ti_sn_aux_probe(struct auxiliary_device *adev,
* The eDP to MIPI bridge parts don't work until the AUX channel is
* setup so we don't add it in the main driver probe, we add it now.
*/
- return ti_sn65dsi86_add_aux_device(pdata, &pdata->bridge_aux, "bridge");
+ pdata->bridge_aux = devm_auxiliary_device_create(pdata->dev, "bridge",
+ NULL, 0);
+ if (IS_ERR(pdata->bridge_aux))
+ return PTR_ERR(pdata->bridge_aux);
+
+ return 0;
}
static const struct auxiliary_device_id ti_sn_aux_id_table[] = {
@@ -1950,15 +1899,17 @@ static int ti_sn65dsi86_probe(struct i2c_client *client)
*/
if (IS_ENABLED(CONFIG_OF_GPIO)) {
- ret = ti_sn65dsi86_add_aux_device(pdata, &pdata->gpio_aux, "gpio");
- if (ret)
- return ret;
+ pdata->gpio_aux = devm_auxiliary_device_create(pdata->dev, "gpio",
+ NULL, 0);
+ if (IS_ERR(pdata->gpio_aux))
+ return PTR_ERR(pdata->gpio_aux);
}
if (IS_ENABLED(CONFIG_PWM)) {
- ret = ti_sn65dsi86_add_aux_device(pdata, &pdata->pwm_aux, "pwm");
- if (ret)
- return ret;
+ pdata->pwm_aux = devm_auxiliary_device_create(pdata->dev, "pwm",
+ NULL, 0);
+ if (IS_ERR(pdata->pwm_aux))
+ return PTR_ERR(pdata->pwm_aux);
}
/*
@@ -1967,7 +1918,12 @@ static int ti_sn65dsi86_probe(struct i2c_client *client)
* AUX channel is there and this is a very simple solution to the
* dependency problem.
*/
- return ti_sn65dsi86_add_aux_device(pdata, &pdata->aux_aux, "aux");
+ pdata->aux_aux = devm_auxiliary_device_create(pdata->dev, "aux",
+ NULL, 0);
+ if (IS_ERR(pdata->aux_aux))
+ return PTR_ERR(pdata->aux_aux);
+
+ return 0;
}
static const struct i2c_device_id ti_sn65dsi86_id[] = {
--
2.45.2
Powered by blists - more mailing lists