Skip to content

Commit

Permalink
reset: amlogic: aux: get regmap through parent device
Browse files Browse the repository at this point in the history
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@kernel.org>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20241209-meson-rst-aux-rework-v1-1-d2afb69cc72e@baylibre.com
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
  • Loading branch information
Jerome Brunet authored and Philipp Zabel committed Jan 15, 2025
1 parent 64de6a3 commit ccfba09
Showing 1 changed file with 12 additions and 24 deletions.
36 changes: 12 additions & 24 deletions drivers/reset/amlogic/reset-meson-aux.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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 = {
Expand All @@ -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)
Expand All @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit ccfba09

Please sign in to comment.