return rx_is_rw_register(dev, reg);
 }
 
-static struct regmap_config rx_regmap_config = {
+static const struct regmap_config rx_regmap_config = {
        .name = "rx_macro",
        .reg_bits = 16,
        .val_bits = 32, /* 8 but with 32 bit read/write */
                return -EINVAL;
        }
 
-       rx_regmap_config.reg_defaults = reg_defaults;
-       rx_regmap_config.num_reg_defaults = def_count;
+       struct regmap_config *reg_config __free(kfree) = kmemdup(&rx_regmap_config,
+                                                                sizeof(*reg_config),
+                                                                GFP_KERNEL);
+       if (!reg_config)
+               return -ENOMEM;
+
+       reg_config->reg_defaults = reg_defaults;
+       reg_config->num_reg_defaults = def_count;
 
-       rx->regmap = devm_regmap_init_mmio(dev, base, &rx_regmap_config);
+       rx->regmap = devm_regmap_init_mmio(dev, base, reg_config);
        if (IS_ERR(rx->regmap))
                return PTR_ERR(rx->regmap);