[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20241209-meson-rst-aux-rework-v1-1-d2afb69cc72e@baylibre.com>
Date: Mon, 09 Dec 2024 17:04:34 +0100
From: Jerome Brunet <jbrunet@...libre.com>
To: Philipp Zabel <p.zabel@...gutronix.de>,
Neil Armstrong <neil.armstrong@...aro.org>,
Kevin Hilman <khilman@...libre.com>,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
Jiucheng Xu <jiucheng.xu@...ogic.com>, Stephen Boyd <sboyd@...nel.org>,
Arnd Bergmann <arnd@...db.de>
Cc: linux-arm-kernel@...ts.infradead.org, linux-amlogic@...ts.infradead.org,
linux-kernel@...r.kernel.org, Jerome Brunet <jbrunet@...libre.com>
Subject: [PATCH 1/2] reset: amlogic: aux: get regmap through parent device
Get regmap directly from the parent device registering the
auxiliary reset driver, instead of using device data attached
to the auxiliary device.
This simplifies the registration a bit.
Suggested-by: Stephen Boyd <sboyd@...nel.org>
Signed-off-by: Jerome Brunet <jbrunet@...libre.com>
---
drivers/reset/amlogic/reset-meson-aux.c | 36 +++++++++++----------------------
1 file changed, 12 insertions(+), 24 deletions(-)
diff --git a/drivers/reset/amlogic/reset-meson-aux.c b/drivers/reset/amlogic/reset-meson-aux.c
index 4b422ae5fcd209e1041e9a793d980627203d00b0..0fc1788eb7a83810ac524facfe09b5fa032573c3 100644
--- a/drivers/reset/amlogic/reset-meson-aux.c
+++ b/drivers/reset/amlogic/reset-meson-aux.c
@@ -18,14 +18,6 @@
static DEFINE_IDA(meson_rst_aux_ida);
-struct meson_reset_adev {
- struct auxiliary_device adev;
- struct regmap *map;
-};
-
-#define to_meson_reset_adev(_adev) \
- container_of((_adev), struct meson_reset_adev, adev)
-
static const struct meson_reset_param meson_a1_audio_param = {
.reset_ops = &meson_reset_toggle_ops,
.reset_num = 32,
@@ -72,10 +64,13 @@ static int meson_reset_aux_probe(struct auxiliary_device *adev,
{
const struct meson_reset_param *param =
(const struct meson_reset_param *)(id->driver_data);
- struct meson_reset_adev *raux =
- to_meson_reset_adev(adev);
+ struct regmap *map;
+
+ map = dev_get_regmap(adev->dev.parent, NULL);
+ if (!map)
+ return -EINVAL;
- return meson_reset_controller_register(&adev->dev, raux->map, param);
+ return meson_reset_controller_register(&adev->dev, map, param);
}
static struct auxiliary_driver meson_reset_aux_driver = {
@@ -87,11 +82,9 @@ module_auxiliary_driver(meson_reset_aux_driver);
static void meson_rst_aux_release(struct device *dev)
{
struct auxiliary_device *adev = to_auxiliary_dev(dev);
- struct meson_reset_adev *raux =
- to_meson_reset_adev(adev);
ida_free(&meson_rst_aux_ida, adev->id);
- kfree(raux);
+ kfree(adev);
}
static void meson_rst_aux_unregister_adev(void *_adev)
@@ -103,24 +96,19 @@ static void meson_rst_aux_unregister_adev(void *_adev)
}
int devm_meson_rst_aux_register(struct device *dev,
- struct regmap *map,
const char *adev_name)
{
- struct meson_reset_adev *raux;
struct auxiliary_device *adev;
int ret;
- raux = kzalloc(sizeof(*raux), GFP_KERNEL);
- if (!raux)
+ adev = kzalloc(sizeof(*adev), GFP_KERNEL);
+ if (!adev)
return -ENOMEM;
ret = ida_alloc(&meson_rst_aux_ida, GFP_KERNEL);
if (ret < 0)
- goto raux_free;
-
- raux->map = map;
+ goto adev_free;
- adev = &raux->adev;
adev->id = ret;
adev->name = adev_name;
adev->dev.parent = dev;
@@ -142,8 +130,8 @@ int devm_meson_rst_aux_register(struct device *dev,
ida_free:
ida_free(&meson_rst_aux_ida, adev->id);
-raux_free:
- kfree(raux);
+adev_free:
+ kfree(adev);
return ret;
}
EXPORT_SYMBOL_GPL(devm_meson_rst_aux_register);
--
2.45.2
Powered by blists - more mailing lists