]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
Merge tag 'regulator-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Dec 2012 20:04:35 +0000 (12:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Dec 2012 20:04:35 +0000 (12:04 -0800)
Pull regulator updates from Mark Brown:
 "A fairly quiet release again, a couple of relatively small new
  features and a bunch of driver specific work including yet more code
  elimination and fixes from Axel Lin.

   - Addidion of linear_min_sel for offsetting linear selectors in the
     helpers.
   - Support for continuous voltage ranges for regulators with extremely
     high resolution.
   - Drivers for AS3711, DA9055, MAX9873, TPS51632, TPS80031 and ARM
     vexpress."

Fix up trivial conflict (due to typo fix) in palmas-regulator.c

* tag 'regulator-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (80 commits)
  regulator: core: Fix logic to determinate if regulator can change voltage
  regulator: s5m8767: Fix to work even if no DVS gpio present
  regulator: s5m8767: Fix to read the first DVS register.
  regulator: s5m8767: Fix to work when platform registers less regulators
  regulator: gpio-regulator: gpio_set_value should use cansleep
  regulator: gpio-regulator: Fix logical error in for() loop
  regulator: anatop: Use regulator_[get|set]_voltage_sel_regmap
  regulator: anatop: Use linear_min_sel with linear mapping
  regulator: max1586: Implement get_voltage_sel callback
  regulator: lp8788-buck: Kill _gpio_request function
  regulator: tps80031: Convert tps80031_ldo_ops to linear_min_sel and list_voltage_linear
  regulator: lp8788-ldo: Remove val array in lp8788_config_ldo_enable_mode
  regulator: gpio-regulator: Add ifdef CONFIG_OF guard for regulator_gpio_of_match
  regulator: palmas: Convert palmas_ops_smps to regulator_[get|set]_voltage_sel_regmap
  regulator: palmas: Return raw register values as the selectors in [get|set]_voltage_sel
  regulators: add regulator_can_change_voltage() function
  regulator: tps51632: Ensure [base|max]_voltage_uV pdata settings are valid
  regulator: wm831x-dcdc: Add MODULE_ALIAS for wm831x-boostp
  regulator: wm831x-dcdc: Ensure selected voltage falls within requested range
  regulator: tps51632: Use linear_min_sel and regulator_[map|list]_voltage_linear
  ...

1  2 
drivers/mfd/Kconfig
drivers/mfd/tps6586x.c
drivers/mfd/wm5102-tables.c

diff --combined drivers/mfd/Kconfig
index 94bdf83b4bc8c911189c055b22cc9cc0d31defe0,05acef8c764119f22d26855aedce7c0cf4081815..b63987c6ed200ec3ed447df7be2a0cdd6895d51b
@@@ -63,16 -63,6 +63,16 @@@ config MFD_SM501_GPI
         lines on the SM501. The platform data is used to supply the
         base number for the first GPIO line to register.
  
 +config MFD_RTSX_PCI
 +      tristate "Support for Realtek PCI-E card reader"
 +      depends on PCI
 +      select MFD_CORE
 +      help
 +        This supports for Realtek PCI-Express card reader including rts5209,
 +        rts5229, rtl8411, etc. Realtek card reader supports access to many
 +        types of memory cards, such as Memory Stick, Memory Stick Pro,
 +        Secure Digital and MultiMediaCard.
 +
  config MFD_ASIC3
        bool "Support for Compaq ASIC3"
        depends on GENERIC_HARDIRQS && GPIOLIB && ARM
@@@ -211,7 -201,6 +211,6 @@@ config MFD_TPS6586
        depends on I2C=y && GENERIC_HARDIRQS
        select MFD_CORE
        select REGMAP_I2C
-       depends on REGULATOR
        help
          If you say yes here you get support for the TPS6586X series of
          Power Management chips.
@@@ -1080,9 -1069,3 +1079,9 @@@ config MCP_UCB1200_T
        depends on MCP_UCB1200 && INPUT
  
  endmenu
 +
 +config VEXPRESS_CONFIG
 +      bool
 +      help
 +        Platform configuration infrastructure for the ARM Ltd.
 +        Versatile Express.
diff --combined drivers/mfd/tps6586x.c
index 9f92c3b2209318c8476ff1de350b9939ff1a0015,9d67bd92edf8d39bce86130e547ab0c4e8010090..87ba7ada3bbc8a72392745cdc3400fb541e8056c
@@@ -24,8 -24,6 +24,6 @@@
  #include <linux/err.h>
  #include <linux/i2c.h>
  #include <linux/regmap.h>
- #include <linux/regulator/of_regulator.h>
- #include <linux/regulator/machine.h>
  
  #include <linux/mfd/core.h>
  #include <linux/mfd/tps6586x.h>
@@@ -98,6 -96,9 +96,9 @@@ static struct mfd_cell tps6586x_cell[] 
        {
                .name = "tps6586x-gpio",
        },
+       {
+               .name = "tps6586x-pmic",
+       },
        {
                .name = "tps6586x-rtc",
        },
@@@ -267,7 -268,7 +268,7 @@@ static irqreturn_t tps6586x_irq(int irq
        return IRQ_HANDLED;
  }
  
 -static int __devinit tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
 +static int tps6586x_irq_init(struct tps6586x *tps6586x, int irq,
                                       int irq_base)
  {
        int i, ret;
        return ret;
  }
  
 -static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
 +static int tps6586x_add_subdevs(struct tps6586x *tps6586x,
                                          struct tps6586x_platform_data *pdata)
  {
        struct tps6586x_subdev_info *subdev;
@@@ -350,80 -351,19 +351,19 @@@ failed
  }
  
  #ifdef CONFIG_OF
- static struct of_regulator_match tps6586x_matches[] = {
-       { .name = "sys",     .driver_data = (void *)TPS6586X_ID_SYS     },
-       { .name = "sm0",     .driver_data = (void *)TPS6586X_ID_SM_0    },
-       { .name = "sm1",     .driver_data = (void *)TPS6586X_ID_SM_1    },
-       { .name = "sm2",     .driver_data = (void *)TPS6586X_ID_SM_2    },
-       { .name = "ldo0",    .driver_data = (void *)TPS6586X_ID_LDO_0   },
-       { .name = "ldo1",    .driver_data = (void *)TPS6586X_ID_LDO_1   },
-       { .name = "ldo2",    .driver_data = (void *)TPS6586X_ID_LDO_2   },
-       { .name = "ldo3",    .driver_data = (void *)TPS6586X_ID_LDO_3   },
-       { .name = "ldo4",    .driver_data = (void *)TPS6586X_ID_LDO_4   },
-       { .name = "ldo5",    .driver_data = (void *)TPS6586X_ID_LDO_5   },
-       { .name = "ldo6",    .driver_data = (void *)TPS6586X_ID_LDO_6   },
-       { .name = "ldo7",    .driver_data = (void *)TPS6586X_ID_LDO_7   },
-       { .name = "ldo8",    .driver_data = (void *)TPS6586X_ID_LDO_8   },
-       { .name = "ldo9",    .driver_data = (void *)TPS6586X_ID_LDO_9   },
-       { .name = "ldo_rtc", .driver_data = (void *)TPS6586X_ID_LDO_RTC },
- };
  static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *client)
  {
-       const unsigned int num = ARRAY_SIZE(tps6586x_matches);
        struct device_node *np = client->dev.of_node;
        struct tps6586x_platform_data *pdata;
-       struct tps6586x_subdev_info *devs;
-       struct device_node *regs;
-       const char *sys_rail_name = NULL;
-       unsigned int count;
-       unsigned int i, j;
-       int err;
-       regs = of_find_node_by_name(np, "regulators");
-       if (!regs)
-               return NULL;
-       err = of_regulator_match(&client->dev, regs, tps6586x_matches, num);
-       if (err < 0) {
-               of_node_put(regs);
-               return NULL;
-       }
-       of_node_put(regs);
-       count = err;
-       devs = devm_kzalloc(&client->dev, count * sizeof(*devs), GFP_KERNEL);
-       if (!devs)
-               return NULL;
-       for (i = 0, j = 0; i < num && j < count; i++) {
-               struct regulator_init_data *reg_idata;
-               if (!tps6586x_matches[i].init_data)
-                       continue;
-               reg_idata  = tps6586x_matches[i].init_data;
-               devs[j].name = "tps6586x-regulator";
-               devs[j].platform_data = tps6586x_matches[i].init_data;
-               devs[j].id = (int)tps6586x_matches[i].driver_data;
-               if (devs[j].id == TPS6586X_ID_SYS)
-                       sys_rail_name = reg_idata->constraints.name;
-               if ((devs[j].id == TPS6586X_ID_LDO_5) ||
-                       (devs[j].id == TPS6586X_ID_LDO_RTC))
-                       reg_idata->supply_regulator = sys_rail_name;
-               devs[j].of_node = tps6586x_matches[i].of_node;
-               j++;
-       }
  
        pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
-       if (!pdata)
+       if (!pdata) {
+               dev_err(&client->dev, "Memory allocation failed\n");
                return NULL;
+       }
  
-       pdata->num_subdevs = count;
-       pdata->subdevs = devs;
+       pdata->num_subdevs = 0;
+       pdata->subdevs = NULL;
        pdata->gpio_base = -1;
        pdata->irq_base = -1;
        pdata->pm_off = of_property_read_bool(np, "ti,system-power-controller");
@@@ -468,7 -408,7 +408,7 @@@ static void tps6586x_power_off(void
        tps6586x_set_bits(tps6586x_dev, TPS6586X_SUPPLYENE, SLEEP_MODE_BIT);
  }
  
 -static int __devinit tps6586x_i2c_probe(struct i2c_client *client,
 +static int tps6586x_i2c_probe(struct i2c_client *client,
                                        const struct i2c_device_id *id)
  {
        struct tps6586x_platform_data *pdata = client->dev.platform_data;
@@@ -548,7 -488,7 +488,7 @@@ err_mfd_add
        return ret;
  }
  
 -static int __devexit tps6586x_i2c_remove(struct i2c_client *client)
 +static int tps6586x_i2c_remove(struct i2c_client *client)
  {
        struct tps6586x *tps6586x = i2c_get_clientdata(client);
  
@@@ -572,7 -512,7 +512,7 @@@ static struct i2c_driver tps6586x_drive
                .of_match_table = of_match_ptr(tps6586x_of_match),
        },
        .probe          = tps6586x_i2c_probe,
 -      .remove         = __devexit_p(tps6586x_i2c_remove),
 +      .remove         = tps6586x_i2c_remove,
        .id_table       = tps6586x_id_table,
  };
  
index 14490cc785d29879f37a06ee52ffed57b8c32c9e,b829a5710ddcaa39356aabf46f4f2aec05d25f05..3141c4a173a7c8e9285931be1f330f420f0ce69e
@@@ -43,7 -43,6 +43,7 @@@ static const struct reg_default wm5102_
        { 0x479, 0x0A30 },
        { 0x47B, 0x0810 },
        { 0x47D, 0x0510 },
 +      { 0x4D1, 0x017F },
        { 0x500, 0x000D },
        { 0x507, 0x1820 },
        { 0x508, 0x1820 },
        { 0x580, 0x000D },
        { 0x587, 0x1820 },
        { 0x588, 0x1820 },
 -      { 0x101, 0x8140 },
 -      { 0x3000, 0x2225 },
 -      { 0x3001, 0x3a03 },
 -      { 0x3002, 0x0225 },
 -      { 0x3003, 0x0801 },
 -      { 0x3004, 0x6249 },
 -      { 0x3005, 0x0c04 },
 -      { 0x3006, 0x0225 },
 -      { 0x3007, 0x5901 },
 -      { 0x3008, 0xe249 },
 -      { 0x3009, 0x030d },
 -      { 0x300a, 0x0249 },
 -      { 0x300b, 0x2c01 },
 -      { 0x300c, 0xe249 },
 -      { 0x300d, 0x4342 },
 -      { 0x300e, 0xe249 },
 -      { 0x300f, 0x73c0 },
 -      { 0x3010, 0x4249 },
 -      { 0x3011, 0x0c00 },
 -      { 0x3012, 0x0225 },
 -      { 0x3013, 0x1f01 },
 -      { 0x3014, 0x0225 },
 -      { 0x3015, 0x1e01 },
 -      { 0x3016, 0x0225 },
 -      { 0x3017, 0xfa00 },
 -      { 0x3018, 0x0000 },
 -      { 0x3019, 0xf000 },
 -      { 0x301a, 0x0000 },
 -      { 0x301b, 0xf000 },
 -      { 0x301c, 0x0000 },
 -      { 0x301d, 0xf000 },
 -      { 0x301e, 0x0000 },
 -      { 0x301f, 0xf000 },
 -      { 0x3020, 0x0000 },
 -      { 0x3021, 0xf000 },
 -      { 0x3022, 0x0000 },
 -      { 0x3023, 0xf000 },
 -      { 0x3024, 0x0000 },
 -      { 0x3025, 0xf000 },
 -      { 0x3026, 0x0000 },
 -      { 0x3027, 0xf000 },
 -      { 0x3028, 0x0000 },
 -      { 0x3029, 0xf000 },
 -      { 0x302a, 0x0000 },
 -      { 0x302b, 0xf000 },
 -      { 0x302c, 0x0000 },
 -      { 0x302d, 0xf000 },
 -      { 0x302e, 0x0000 },
 -      { 0x302f, 0xf000 },
 -      { 0x3030, 0x0225 },
 -      { 0x3031, 0x1a01 },
 -      { 0x3032, 0x0225 },
 -      { 0x3033, 0x1e00 },
 -      { 0x3034, 0x0225 },
 -      { 0x3035, 0x1f00 },
 -      { 0x3036, 0x6225 },
 -      { 0x3037, 0xf800 },
 -      { 0x3038, 0x0000 },
 -      { 0x3039, 0xf000 },
 -      { 0x303a, 0x0000 },
 -      { 0x303b, 0xf000 },
 -      { 0x303c, 0x0000 },
 -      { 0x303d, 0xf000 },
 -      { 0x303e, 0x0000 },
 -      { 0x303f, 0xf000 },
 -      { 0x3040, 0x2226 },
 -      { 0x3041, 0x3a03 },
 -      { 0x3042, 0x0226 },
 -      { 0x3043, 0x0801 },
 -      { 0x3044, 0x6249 },
 -      { 0x3045, 0x0c06 },
 -      { 0x3046, 0x0226 },
 -      { 0x3047, 0x5901 },
 -      { 0x3048, 0xe249 },
 -      { 0x3049, 0x030d },
 -      { 0x304a, 0x0249 },
 -      { 0x304b, 0x2c01 },
 -      { 0x304c, 0xe249 },
 -      { 0x304d, 0x4342 },
 -      { 0x304e, 0xe249 },
 -      { 0x304f, 0x73c0 },
 -      { 0x3050, 0x4249 },
 -      { 0x3051, 0x0c00 },
 -      { 0x3052, 0x0226 },
 -      { 0x3053, 0x1f01 },
 -      { 0x3054, 0x0226 },
 -      { 0x3055, 0x1e01 },
 -      { 0x3056, 0x0226 },
 -      { 0x3057, 0xfa00 },
 -      { 0x3058, 0x0000 },
 -      { 0x3059, 0xf000 },
 -      { 0x305a, 0x0000 },
 -      { 0x305b, 0xf000 },
 -      { 0x305c, 0x0000 },
 -      { 0x305d, 0xf000 },
 -      { 0x305e, 0x0000 },
 -      { 0x305f, 0xf000 },
 -      { 0x3060, 0x0000 },
 -      { 0x3061, 0xf000 },
 -      { 0x3062, 0x0000 },
 -      { 0x3063, 0xf000 },
 -      { 0x3064, 0x0000 },
 -      { 0x3065, 0xf000 },
 -      { 0x3066, 0x0000 },
 -      { 0x3067, 0xf000 },
 -      { 0x3068, 0x0000 },
 -      { 0x3069, 0xf000 },
 -      { 0x306a, 0x0000 },
 -      { 0x306b, 0xf000 },
 -      { 0x306c, 0x0000 },
 -      { 0x306d, 0xf000 },
 -      { 0x306e, 0x0000 },
 -      { 0x306f, 0xf000 },
 -      { 0x3070, 0x0226 },
 -      { 0x3071, 0x1a01 },
 -      { 0x3072, 0x0226 },
 -      { 0x3073, 0x1e00 },
 -      { 0x3074, 0x0226 },
 -      { 0x3075, 0x1f00 },
 -      { 0x3076, 0x6226 },
 -      { 0x3077, 0xf800 },
 -      { 0x3078, 0x0000 },
 -      { 0x3079, 0xf000 },
 -      { 0x307a, 0x0000 },
 -      { 0x307b, 0xf000 },
 -      { 0x307c, 0x0000 },
 -      { 0x307d, 0xf000 },
 -      { 0x307e, 0x0000 },
 -      { 0x307f, 0xf000 },
 -      { 0x3080, 0x2227 },
 -      { 0x3081, 0x3a03 },
 -      { 0x3082, 0x0227 },
 -      { 0x3083, 0x0801 },
 -      { 0x3084, 0x6255 },
 -      { 0x3085, 0x0c04 },
 -      { 0x3086, 0x0227 },
 -      { 0x3087, 0x5901 },
 -      { 0x3088, 0xe255 },
 -      { 0x3089, 0x030d },
 -      { 0x308a, 0x0255 },
 -      { 0x308b, 0x2c01 },
 -      { 0x308c, 0xe255 },
 -      { 0x308d, 0x4342 },
 -      { 0x308e, 0xe255 },
 -      { 0x308f, 0x73c0 },
 -      { 0x3090, 0x4255 },
 -      { 0x3091, 0x0c00 },
 -      { 0x3092, 0x0227 },
 -      { 0x3093, 0x1f01 },
 -      { 0x3094, 0x0227 },
 -      { 0x3095, 0x1e01 },
 -      { 0x3096, 0x0227 },
 -      { 0x3097, 0xfa00 },
 -      { 0x3098, 0x0000 },
 -      { 0x3099, 0xf000 },
 -      { 0x309a, 0x0000 },
 -      { 0x309b, 0xf000 },
 -      { 0x309c, 0x0000 },
 -      { 0x309d, 0xf000 },
 -      { 0x309e, 0x0000 },
 -      { 0x309f, 0xf000 },
 -      { 0x30a0, 0x0000 },
 -      { 0x30a1, 0xf000 },
 -      { 0x30a2, 0x0000 },
 -      { 0x30a3, 0xf000 },
 -      { 0x30a4, 0x0000 },
 -      { 0x30a5, 0xf000 },
 -      { 0x30a6, 0x0000 },
 -      { 0x30a7, 0xf000 },
 -      { 0x30a8, 0x0000 },
 -      { 0x30a9, 0xf000 },
 -      { 0x30aa, 0x0000 },
 -      { 0x30ab, 0xf000 },
 -      { 0x30ac, 0x0000 },
 -      { 0x30ad, 0xf000 },
 -      { 0x30ae, 0x0000 },
 -      { 0x30af, 0xf000 },
 -      { 0x30b0, 0x0227 },
 -      { 0x30b1, 0x1a01 },
 -      { 0x30b2, 0x0227 },
 -      { 0x30b3, 0x1e00 },
 -      { 0x30b4, 0x0227 },
 -      { 0x30b5, 0x1f00 },
 -      { 0x30b6, 0x6227 },
 -      { 0x30b7, 0xf800 },
 -      { 0x30b8, 0x0000 },
 -      { 0x30b9, 0xf000 },
 -      { 0x30ba, 0x0000 },
 -      { 0x30bb, 0xf000 },
 -      { 0x30bc, 0x0000 },
 -      { 0x30bd, 0xf000 },
 -      { 0x30be, 0x0000 },
 -      { 0x30bf, 0xf000 },
 -      { 0x30c0, 0x2228 },
 -      { 0x30c1, 0x3a03 },
 -      { 0x30c2, 0x0228 },
 -      { 0x30c3, 0x0801 },
 -      { 0x30c4, 0x6255 },
 -      { 0x30c5, 0x0c06 },
 -      { 0x30c6, 0x0228 },
 -      { 0x30c7, 0x5901 },
 -      { 0x30c8, 0xe255 },
 -      { 0x30c9, 0x030d },
 -      { 0x30ca, 0x0255 },
 -      { 0x30cb, 0x2c01 },
 -      { 0x30cc, 0xe255 },
 -      { 0x30cd, 0x4342 },
 -      { 0x30ce, 0xe255 },
 -      { 0x30cf, 0x73c0 },
 -      { 0x30d0, 0x4255 },
 -      { 0x30d1, 0x0c00 },
 -      { 0x30d2, 0x0228 },
 -      { 0x30d3, 0x1f01 },
 -      { 0x30d4, 0x0228 },
 -      { 0x30d5, 0x1e01 },
 -      { 0x30d6, 0x0228 },
 -      { 0x30d7, 0xfa00 },
 -      { 0x30d8, 0x0000 },
 -      { 0x30d9, 0xf000 },
 -      { 0x30da, 0x0000 },
 -      { 0x30db, 0xf000 },
 -      { 0x30dc, 0x0000 },
 -      { 0x30dd, 0xf000 },
 -      { 0x30de, 0x0000 },
 -      { 0x30df, 0xf000 },
 -      { 0x30e0, 0x0000 },
 -      { 0x30e1, 0xf000 },
 -      { 0x30e2, 0x0000 },
 -      { 0x30e3, 0xf000 },
 -      { 0x30e4, 0x0000 },
 -      { 0x30e5, 0xf000 },
 -      { 0x30e6, 0x0000 },
 -      { 0x30e7, 0xf000 },
 -      { 0x30e8, 0x0000 },
 -      { 0x30e9, 0xf000 },
 -      { 0x30ea, 0x0000 },
 -      { 0x30eb, 0xf000 },
 -      { 0x30ec, 0x0000 },
 -      { 0x30ed, 0xf000 },
 -      { 0x30ee, 0x0000 },
 -      { 0x30ef, 0xf000 },
 -      { 0x30f0, 0x0228 },
 -      { 0x30f1, 0x1a01 },
 -      { 0x30f2, 0x0228 },
 -      { 0x30f3, 0x1e00 },
 -      { 0x30f4, 0x0228 },
 -      { 0x30f5, 0x1f00 },
 -      { 0x30f6, 0x6228 },
 -      { 0x30f7, 0xf800 },
 -      { 0x30f8, 0x0000 },
 -      { 0x30f9, 0xf000 },
 -      { 0x30fa, 0x0000 },
 -      { 0x30fb, 0xf000 },
 -      { 0x30fc, 0x0000 },
 -      { 0x30fd, 0xf000 },
 -      { 0x30fe, 0x0000 },
 -      { 0x30ff, 0xf000 },
 -      { 0x3100, 0x222b },
 -      { 0x3101, 0x3a03 },
 -      { 0x3102, 0x222b },
 -      { 0x3103, 0x5803 },
 -      { 0x3104, 0xe26f },
 -      { 0x3105, 0x030d },
 -      { 0x3106, 0x626f },
 -      { 0x3107, 0x2c01 },
 -      { 0x3108, 0xe26f },
 -      { 0x3109, 0x4342 },
 -      { 0x310a, 0xe26f },
 -      { 0x310b, 0x73c0 },
 -      { 0x310c, 0x026f },
 -      { 0x310d, 0x0c00 },
 -      { 0x310e, 0x022b },
 -      { 0x310f, 0x1f01 },
 -      { 0x3110, 0x022b },
 -      { 0x3111, 0x1e01 },
 -      { 0x3112, 0x022b },
 -      { 0x3113, 0xfa00 },
 -      { 0x3114, 0x0000 },
 -      { 0x3115, 0xf000 },
 -      { 0x3116, 0x0000 },
 -      { 0x3117, 0xf000 },
 -      { 0x3118, 0x0000 },
 -      { 0x3119, 0xf000 },
 -      { 0x311a, 0x0000 },
 -      { 0x311b, 0xf000 },
 -      { 0x311c, 0x0000 },
 -      { 0x311d, 0xf000 },
 -      { 0x311e, 0x0000 },
 -      { 0x311f, 0xf000 },
 -      { 0x3120, 0x022b },
 -      { 0x3121, 0x0a01 },
 -      { 0x3122, 0x022b },
 -      { 0x3123, 0x1e00 },
 -      { 0x3124, 0x022b },
 -      { 0x3125, 0x1f00 },
 -      { 0x3126, 0x622b },
 -      { 0x3127, 0xf800 },
 -      { 0x3128, 0x0000 },
 -      { 0x3129, 0xf000 },
 -      { 0x312a, 0x0000 },
 -      { 0x312b, 0xf000 },
 -      { 0x312c, 0x0000 },
 -      { 0x312d, 0xf000 },
 -      { 0x312e, 0x0000 },
 -      { 0x312f, 0xf000 },
 -      { 0x3130, 0x0000 },
 -      { 0x3131, 0xf000 },
 -      { 0x3132, 0x0000 },
 -      { 0x3133, 0xf000 },
 -      { 0x3134, 0x0000 },
 -      { 0x3135, 0xf000 },
 -      { 0x3136, 0x0000 },
 -      { 0x3137, 0xf000 },
 -      { 0x3138, 0x0000 },
 -      { 0x3139, 0xf000 },
 -      { 0x313a, 0x0000 },
 -      { 0x313b, 0xf000 },
 -      { 0x313c, 0x0000 },
 -      { 0x313d, 0xf000 },
 -      { 0x313e, 0x0000 },
 -      { 0x313f, 0xf000 },
 -      { 0x3140, 0x0000 },
 -      { 0x3141, 0xf000 },
 -      { 0x3142, 0x0000 },
 -      { 0x3143, 0xf000 },
 -      { 0x3144, 0x0000 },
 -      { 0x3145, 0xf000 },
 -      { 0x3146, 0x0000 },
 -      { 0x3147, 0xf000 },
 -      { 0x3148, 0x0000 },
 -      { 0x3149, 0xf000 },
 -      { 0x314a, 0x0000 },
 -      { 0x314b, 0xf000 },
 -      { 0x314c, 0x0000 },
 -      { 0x314d, 0xf000 },
 -      { 0x314e, 0x0000 },
 -      { 0x314f, 0xf000 },
 -      { 0x3150, 0x0000 },
 -      { 0x3151, 0xf000 },
 -      { 0x3152, 0x0000 },
 -      { 0x3153, 0xf000 },
 -      { 0x3154, 0x0000 },
 -      { 0x3155, 0xf000 },
 -      { 0x3156, 0x0000 },
 -      { 0x3157, 0xf000 },
 -      { 0x3158, 0x0000 },
 -      { 0x3159, 0xf000 },
 -      { 0x315a, 0x0000 },
 -      { 0x315b, 0xf000 },
 -      { 0x315c, 0x0000 },
 -      { 0x315d, 0xf000 },
 -      { 0x315e, 0x0000 },
 -      { 0x315f, 0xf000 },
 -      { 0x3160, 0x0000 },
 -      { 0x3161, 0xf000 },
 -      { 0x3162, 0x0000 },
 -      { 0x3163, 0xf000 },
 -      { 0x3164, 0x0000 },
 -      { 0x3165, 0xf000 },
 -      { 0x3166, 0x0000 },
 -      { 0x3167, 0xf000 },
 -      { 0x3168, 0x0000 },
 -      { 0x3169, 0xf000 },
 -      { 0x316a, 0x0000 },
 -      { 0x316b, 0xf000 },
 -      { 0x316c, 0x0000 },
 -      { 0x316d, 0xf000 },
 -      { 0x316e, 0x0000 },
 -      { 0x316f, 0xf000 },
 -      { 0x3170, 0x0000 },
 -      { 0x3171, 0xf000 },
 -      { 0x3172, 0x0000 },
 -      { 0x3173, 0xf000 },
 -      { 0x3174, 0x0000 },
 -      { 0x3175, 0xf000 },
 -      { 0x3176, 0x0000 },
 -      { 0x3177, 0xf000 },
 -      { 0x3178, 0x0000 },
 -      { 0x3179, 0xf000 },
 -      { 0x317a, 0x0000 },
 -      { 0x317b, 0xf000 },
 -      { 0x317c, 0x0000 },
 -      { 0x317d, 0xf000 },
 -      { 0x317e, 0x0000 },
 -      { 0x317f, 0xf000 },
 -      { 0x3180, 0x2001 },
 -      { 0x3181, 0xf101 },
 -      { 0x3182, 0x0000 },
 -      { 0x3183, 0xf000 },
 -      { 0x3184, 0x0000 },
 -      { 0x3185, 0xf000 },
 -      { 0x3186, 0x0000 },
 -      { 0x3187, 0xf000 },
 -      { 0x3188, 0x0000 },
 -      { 0x3189, 0xf000 },
 -      { 0x318a, 0x0000 },
 -      { 0x318b, 0xf000 },
 -      { 0x318c, 0x0000 },
 -      { 0x318d, 0xf000 },
 -      { 0x318e, 0x0000 },
 -      { 0x318f, 0xf000 },
 -      { 0x3190, 0x0000 },
 -      { 0x3191, 0xf000 },
 -      { 0x3192, 0x0000 },
 -      { 0x3193, 0xf000 },
 -      { 0x3194, 0x0000 },
 -      { 0x3195, 0xf000 },
 -      { 0x3196, 0x0000 },
 -      { 0x3197, 0xf000 },
 -      { 0x3198, 0x0000 },
 -      { 0x3199, 0xf000 },
 -      { 0x319a, 0x0000 },
 -      { 0x319b, 0xf000 },
 -      { 0x319c, 0x0000 },
 -      { 0x319d, 0xf000 },
 -      { 0x319e, 0x0000 },
 -      { 0x319f, 0xf000 },
 -      { 0x31a0, 0x0000 },
 -      { 0x31a1, 0xf000 },
 -      { 0x31a2, 0x0000 },
 -      { 0x31a3, 0xf000 },
 -      { 0x31a4, 0x0000 },
 -      { 0x31a5, 0xf000 },
 -      { 0x31a6, 0x0000 },
 -      { 0x31a7, 0xf000 },
 -      { 0x31a8, 0x0000 },
 -      { 0x31a9, 0xf000 },
 -      { 0x31aa, 0x0000 },
 -      { 0x31ab, 0xf000 },
 -      { 0x31ac, 0x0000 },
 -      { 0x31ad, 0xf000 },
 -      { 0x31ae, 0x0000 },
 -      { 0x31af, 0xf000 },
 -      { 0x31b0, 0x0000 },
 -      { 0x31b1, 0xf000 },
 -      { 0x31b2, 0x0000 },
 -      { 0x31b3, 0xf000 },
 -      { 0x31b4, 0x0000 },
 -      { 0x31b5, 0xf000 },
 -      { 0x31b6, 0x0000 },
 -      { 0x31b7, 0xf000 },
 -      { 0x31b8, 0x0000 },
 -      { 0x31b9, 0xf000 },
 -      { 0x31ba, 0x0000 },
 -      { 0x31bb, 0xf000 },
 -      { 0x31bc, 0x0000 },
 -      { 0x31bd, 0xf000 },
 -      { 0x31be, 0x0000 },
 -      { 0x31bf, 0xf000 },
 -      { 0x31c0, 0x0000 },
 -      { 0x31c1, 0xf000 },
 -      { 0x31c2, 0x0000 },
 -      { 0x31c3, 0xf000 },
 -      { 0x31c4, 0x0000 },
 -      { 0x31c5, 0xf000 },
 -      { 0x31c6, 0x0000 },
 -      { 0x31c7, 0xf000 },
 -      { 0x31c8, 0x0000 },
 -      { 0x31c9, 0xf000 },
 -      { 0x31ca, 0x0000 },
 -      { 0x31cb, 0xf000 },
 -      { 0x31cc, 0x0000 },
 -      { 0x31cd, 0xf000 },
 -      { 0x31ce, 0x0000 },
 -      { 0x31cf, 0xf000 },
 -      { 0x31d0, 0x0000 },
 -      { 0x31d1, 0xf000 },
 -      { 0x31d2, 0x0000 },
 -      { 0x31d3, 0xf000 },
 -      { 0x31d4, 0x0000 },
 -      { 0x31d5, 0xf000 },
 -      { 0x31d6, 0x0000 },
 -      { 0x31d7, 0xf000 },
 -      { 0x31d8, 0x0000 },
 -      { 0x31d9, 0xf000 },
 -      { 0x31da, 0x0000 },
 -      { 0x31db, 0xf000 },
 -      { 0x31dc, 0x0000 },
 -      { 0x31dd, 0xf000 },
 -      { 0x31de, 0x0000 },
 -      { 0x31df, 0xf000 },
 -      { 0x31e0, 0x0000 },
 -      { 0x31e1, 0xf000 },
 -      { 0x31e2, 0x0000 },
 -      { 0x31e3, 0xf000 },
 -      { 0x31e4, 0x0000 },
 -      { 0x31e5, 0xf000 },
 -      { 0x31e6, 0x0000 },
 -      { 0x31e7, 0xf000 },
 -      { 0x31e8, 0x0000 },
 -      { 0x31e9, 0xf000 },
 -      { 0x31ea, 0x0000 },
 -      { 0x31eb, 0xf000 },
 -      { 0x31ec, 0x0000 },
 -      { 0x31ed, 0xf000 },
 -      { 0x31ee, 0x0000 },
 -      { 0x31ef, 0xf000 },
 -      { 0x31f0, 0x0000 },
 -      { 0x31f1, 0xf000 },
 -      { 0x31f2, 0x0000 },
 -      { 0x31f3, 0xf000 },
 -      { 0x31f4, 0x0000 },
 -      { 0x31f5, 0xf000 },
 -      { 0x31f6, 0x0000 },
 -      { 0x31f7, 0xf000 },
 -      { 0x31f8, 0x0000 },
 -      { 0x31f9, 0xf000 },
 -      { 0x31fa, 0x0000 },
 -      { 0x31fb, 0xf000 },
 -      { 0x31fc, 0x0000 },
 -      { 0x31fd, 0xf000 },
 -      { 0x31fe, 0x0000 },
 -      { 0x31ff, 0xf000 },
 -      { 0x024d, 0xff50 },
 -      { 0x0252, 0xff50 },
 -      { 0x0259, 0x0112 },
 -      { 0x025e, 0x0112 },
 -      { 0x101, 0x0304 },
        { 0x80, 0x0000 },
  };
  
@@@ -258,6 -775,7 +258,7 @@@ static const struct reg_default wm5102_
        { 0x00000154, 0x0000 },   /* R340   - Rate Estimator 3 */ 
        { 0x00000155, 0x0000 },   /* R341   - Rate Estimator 4 */ 
        { 0x00000156, 0x0000 },   /* R342   - Rate Estimator 5 */ 
+       { 0x00000161, 0x0000 },   /* R353   - Dynamic Frequency Scaling 1 */ 
        { 0x00000171, 0x0000 },   /* R369   - FLL1 Control 1 */ 
        { 0x00000172, 0x0008 },   /* R370   - FLL1 Control 2 */ 
        { 0x00000173, 0x0018 },   /* R371   - FLL1 Control 3 */ 
@@@ -1047,6 -1565,7 +1048,7 @@@ static bool wm5102_readable_register(st
        case ARIZONA_RATE_ESTIMATOR_3:
        case ARIZONA_RATE_ESTIMATOR_4:
        case ARIZONA_RATE_ESTIMATOR_5:
+       case ARIZONA_DYNAMIC_FREQUENCY_SCALING_1:
        case ARIZONA_FLL1_CONTROL_1:
        case ARIZONA_FLL1_CONTROL_2:
        case ARIZONA_FLL1_CONTROL_3:
        case ARIZONA_FLL2_GPIO_CLOCK:
        case ARIZONA_MIC_CHARGE_PUMP_1:
        case ARIZONA_LDO1_CONTROL_1:
+       case ARIZONA_LDO1_CONTROL_2:
        case ARIZONA_LDO2_CONTROL_1:
        case ARIZONA_MIC_BIAS_CTRL_1:
        case ARIZONA_MIC_BIAS_CTRL_2: