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,
 {
        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 = {
 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)
 }
 
 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;
 
 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);