{ 108, 0x00 }, { 109, 0x00 },
 };
 
+static const struct reg_sequence aic3007_class_d[] = {
+       /* Class-D speaker driver init; datasheet p. 46 */
+       { AIC3X_PAGE_SELECT, 0x0D },
+       { 0xD, 0x0D },
+       { 0x8, 0x5C },
+       { 0x8, 0x5D },
+       { 0x8, 0x5C },
+       { AIC3X_PAGE_SELECT, 0x00 },
+};
+
 static bool aic3x_volatile_reg(struct device *dev, unsigned int reg)
 {
        switch (reg) {
                        gpiod_set_value(aic3x->gpio_reset, 0);
                }
 
+               if (aic3x->model == AIC3X_MODEL_3007)
+                       regmap_multi_reg_write_bypassed(aic3x->regmap, aic3007_class_d,
+                                                       ARRAY_SIZE(aic3007_class_d));
+
                /* Sync reg_cache with the hardware */
                regcache_cache_only(aic3x->regmap, false);
                regcache_sync(aic3x->regmap);
        }
 }
 
-
-static const struct reg_sequence aic3007_class_d[] = {
-       /* Class-D speaker driver init; datasheet p. 46 */
-       { AIC3X_PAGE_SELECT, 0x0D },
-       { 0xD, 0x0D },
-       { 0x8, 0x5C },
-       { 0x8, 0x5D },
-       { 0x8, 0x5C },
-       { AIC3X_PAGE_SELECT, 0x00 },
-};
-
 int aic3x_probe(struct device *dev, struct regmap *regmap, kernel_ulong_t driver_data)
 {
        struct aic3x_priv *aic3x;
 
        aic3x_configure_ocmv(dev, aic3x);
 
-       if (aic3x->model == AIC3X_MODEL_3007) {
-               ret = regmap_register_patch(aic3x->regmap, aic3007_class_d,
-                                           ARRAY_SIZE(aic3007_class_d));
-               if (ret != 0)
-                       dev_err(dev, "Failed to init class D: %d\n", ret);
-       }
-
        ret = devm_snd_soc_register_component(dev, &soc_component_dev_aic3x, &aic3x_dai, 1);
        if (ret)
                return ret;