[v3,3/8] mfd: arizona: Add support for WM8998 and WM1814
diff mbox

Message ID 1430493319-23808-4-git-send-email-rf@opensource.wolfsonmicro.com
State New
Headers show

Commit Message

Richard Fitzgerald May 1, 2015, 3:15 p.m. UTC
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
---
 drivers/mfd/Kconfig                   |    6 +
 drivers/mfd/Makefile                  |    3 +
 drivers/mfd/arizona-core.c            |  105 ++-
 drivers/mfd/arizona-i2c.c             |    8 +
 drivers/mfd/arizona-irq.c             |    9 +
 drivers/mfd/arizona.h                 |    5 +
 drivers/mfd/wm8998-tables.c           | 1592 +++++++++++++++++++++++++++++++++
 include/linux/mfd/arizona/core.h      |    3 +
 include/linux/mfd/arizona/pdata.h     |    2 +
 include/linux/mfd/arizona/registers.h |  220 +++++
 10 files changed, 1945 insertions(+), 8 deletions(-)
 create mode 100644 drivers/mfd/wm8998-tables.c

Comments

Paul Bolle May 2, 2015, 9:58 a.m. UTC | #1
Something I didn't notice when v2 came along.

On Fri, 2015-05-01 at 16:15 +0100, Richard Fitzgerald wrote:
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig

> +config MFD_WM8998
> +	bool "Wolfson Microelectronics WM8998"
> +	depends on MFD_ARIZONA
> +	help
> +	  Support for Wolfson Microelectronics WM8998 low power audio SoC
> +
>  config MFD_WM8400
>  	bool "Wolfson Microelectronics WM8400"
>  	select MFD_CORE

> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile

>  ifneq ($(CONFIG_MFD_WM8997),n)
>  obj-$(CONFIG_MFD_ARIZONA)	+= wm8997-tables.o
>  endif
> +ifneq ($(CONFIG_MFD_WM8998),n)
> +obj-$(CONFIG_MFD_ARIZONA)	+= wm8998-tables.o
> +endif

Playing a bit with the current version of drivers/mfd/Makefile it seems
these
    ifneq ($(CONFIG_MFD_WM[...]),n)

tests will always be true. Because, as far as I know, the Kconfig macros
used in those tests will either be "y" or the empty string, but never
"n". (I don't speak Makefilese fluent enough to know how to add simple
debugging prints for the values of the CONFIG_MFD_WM[...] macros to
actually test this, so correct me if I'm wrong here.)

So I think that, effectively, these wm[...]-tables.o objects will always
be built if CONFIG_MFD_ARIZONA is set. Is that the intention? If not,
perhaps these test should read
    ifeq ($(CONFIG_MFD_WM[...]),y)

Thanks,


Paul Bolle

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Richard Fitzgerald May 4, 2015, 9:11 a.m. UTC | #2
On Sat, May 02, 2015 at 11:58:51AM +0200, Paul Bolle wrote:
> Something I didn't notice when v2 came along.
> 
> On Fri, 2015-05-01 at 16:15 +0100, Richard Fitzgerald wrote:
> > --- a/drivers/mfd/Kconfig
> > +++ b/drivers/mfd/Kconfig
> 
> > +config MFD_WM8998
> > +	bool "Wolfson Microelectronics WM8998"
> > +	depends on MFD_ARIZONA
> > +	help
> > +	  Support for Wolfson Microelectronics WM8998 low power audio SoC
> > +
> >  config MFD_WM8400
> >  	bool "Wolfson Microelectronics WM8400"
> >  	select MFD_CORE
> 
> > --- a/drivers/mfd/Makefile
> > +++ b/drivers/mfd/Makefile
> 
> >  ifneq ($(CONFIG_MFD_WM8997),n)
> >  obj-$(CONFIG_MFD_ARIZONA)	+= wm8997-tables.o
> >  endif
> > +ifneq ($(CONFIG_MFD_WM8998),n)
> > +obj-$(CONFIG_MFD_ARIZONA)	+= wm8998-tables.o
> > +endif
> 
> Playing a bit with the current version of drivers/mfd/Makefile it seems
> these
>     ifneq ($(CONFIG_MFD_WM[...]),n)
> 
> tests will always be true. Because, as far as I know, the Kconfig macros
> used in those tests will either be "y" or the empty string, but never
> "n". (I don't speak Makefilese fluent enough to know how to add simple
> debugging prints for the values of the CONFIG_MFD_WM[...] macros to
> actually test this, so correct me if I'm wrong here.)

Yes, I've noticed that these tests are wrong and I'm working on a patch for
it. It's another one of those cases where more lines needs patching to fix
it than the 3 lines this WM8998 patch adds, and also fixing it potentially
breaks the build because of dependencies that were accidentally working
because they never got compiled out. So I'd prefer not to half-fix it in
these WM8998 patches it's better to let the code settle and then fix it properly.

> 
> So I think that, effectively, these wm[...]-tables.o objects will always
> be built if CONFIG_MFD_ARIZONA is set. Is that the intention? If not,
> perhaps these test should read
>     ifeq ($(CONFIG_MFD_WM[...]),y)
> 
> Thanks,
> 
> 
> Paul Bolle
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Bolle May 4, 2015, 10:44 a.m. UTC | #3
Richard Fitzgerald schreef op ma 04-05-2015 om 10:11 [+0100]:
> Yes, I've noticed that these tests are wrong and I'm working on a patch for
> it.

Glad to hear I wasn't misreading that Makefile.

> It's another one of those cases where more lines needs patching to fix
> it than the 3 lines this WM8998 patch adds, and also fixing it potentially
> breaks the build because of dependencies that were accidentally working
> because they never got compiled out. So I'd prefer not to half-fix it in
> these WM8998 patches it's better to let the code settle and then fix it properly.

I see. Unless that fix takes very long to land, I won't be bothering you
about this again.

Thanks,


Paul Bolle

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lee Jones May 7, 2015, 8:52 a.m. UTC | #4
On Fri, 01 May 2015, Richard Fitzgerald wrote:

> Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
> ---
>  drivers/mfd/Kconfig                   |    6 +
>  drivers/mfd/Makefile                  |    3 +
>  drivers/mfd/arizona-core.c            |  105 ++-
>  drivers/mfd/arizona-i2c.c             |    8 +
>  drivers/mfd/arizona-irq.c             |    9 +
>  drivers/mfd/arizona.h                 |    5 +
>  drivers/mfd/wm8998-tables.c           | 1592 +++++++++++++++++++++++++++++++++
>  include/linux/mfd/arizona/core.h      |    3 +
>  include/linux/mfd/arizona/pdata.h     |    2 +
>  include/linux/mfd/arizona/registers.h |  220 +++++
>  10 files changed, 1945 insertions(+), 8 deletions(-)
>  create mode 100644 drivers/mfd/wm8998-tables.c

How orthogonal is this patch?  Can I just take it?

For my own reference:
  Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 048f5bf..d2e549b 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1359,6 +1359,12 @@ config MFD_WM8997
>  	help
>  	  Support for Wolfson Microelectronics WM8997 low power audio SoC
>  
> +config MFD_WM8998
> +	bool "Wolfson Microelectronics WM8998"
> +	depends on MFD_ARIZONA
> +	help
> +	  Support for Wolfson Microelectronics WM8998 low power audio SoC
> +
>  config MFD_WM8400
>  	bool "Wolfson Microelectronics WM8400"
>  	select MFD_CORE
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index ca6d184..2755adf 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -50,6 +50,9 @@ endif
>  ifneq ($(CONFIG_MFD_WM8997),n)
>  obj-$(CONFIG_MFD_ARIZONA)	+= wm8997-tables.o
>  endif
> +ifneq ($(CONFIG_MFD_WM8998),n)
> +obj-$(CONFIG_MFD_ARIZONA)	+= wm8998-tables.o
> +endif
>  obj-$(CONFIG_MFD_WM8400)	+= wm8400-core.o
>  wm831x-objs			:= wm831x-core.o wm831x-irq.o wm831x-otp.o
>  wm831x-objs			+= wm831x-auxadc.o
> diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
> index 33fa5b5..dadf9b4 100644
> --- a/drivers/mfd/arizona-core.c
> +++ b/drivers/mfd/arizona-core.c
> @@ -146,17 +146,31 @@ static irqreturn_t arizona_underclocked(int irq, void *data)
>  static irqreturn_t arizona_overclocked(int irq, void *data)
>  {
>  	struct arizona *arizona = data;
> -	unsigned int val[2];
> +	unsigned int val[3];
>  	int ret;
>  	
>  	ret = regmap_bulk_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_6,
> -			       &val[0], 2);
> +			       &val[0], 3);
>  	if (ret != 0) {
>  		dev_err(arizona->dev, "Failed to read overclock status: %d\n",
>  			ret);
>  		return IRQ_NONE;
>  	}
>  
> +	switch (arizona->type) {
> +	case WM8998:
> +	case WM1814:
> +		/* Some bits are shifted on WM8998,
> +		 * rearrange to match the standard bit layout
> +		 */
> +		val[0] = ((val[0] & 0x60e0) >> 1) |
> +			 ((val[0] & 0x1e00) >> 2) |
> +			 (val[0] & 0x000f);
> +		break;
> +	default:
> +		break;
> +	}
> +
>  	if (val[0] & ARIZONA_PWM_OVERCLOCKED_STS)
>  		dev_err(arizona->dev, "PWM overclocked\n");
>  	if (val[0] & ARIZONA_FX_CORE_OVERCLOCKED_STS)
> @@ -201,6 +215,9 @@ static irqreturn_t arizona_overclocked(int irq, void *data)
>  	if (val[1] & ARIZONA_ISRC1_OVERCLOCKED_STS)
>  		dev_err(arizona->dev, "ISRC1 overclocked\n");
>  
> +	if (val[2] & ARIZONA_SPDIF_OVERCLOCKED_STS)
> +		dev_err(arizona->dev, "SPDIF overclocked\n");
> +
>  	return IRQ_HANDLED;
>  }
>  
> @@ -579,6 +596,8 @@ const struct of_device_id arizona_of_match[] = {
>  	{ .compatible = "wlf,wm5110", .data = (void *)WM5110 },
>  	{ .compatible = "wlf,wm8280", .data = (void *)WM8280 },
>  	{ .compatible = "wlf,wm8997", .data = (void *)WM8997 },
> +	{ .compatible = "wlf,wm8998", .data = (void *)WM8998 },
> +	{ .compatible = "wlf,wm1814", .data = (void *)WM1814 },
>  	{},
>  };
>  EXPORT_SYMBOL_GPL(arizona_of_match);
> @@ -660,11 +679,28 @@ static const struct mfd_cell wm8997_devs[] = {
>  	},
>  };
>  
> +static const struct mfd_cell wm8998_devs[] = {
> +	{
> +		.name = "arizona-extcon",
> +		.parent_supplies = wm5102_supplies,
> +		.num_parent_supplies = 1, /* We only need MICVDD */
> +	},
> +	{ .name = "arizona-gpio" },
> +	{ .name = "arizona-haptics" },
> +	{ .name = "arizona-pwm" },
> +	{
> +		.name = "wm8998-codec",
> +		.parent_supplies = wm5102_supplies,
> +		.num_parent_supplies = ARRAY_SIZE(wm5102_supplies),
> +	},
> +	{ .name = "arizona-micsupp" },
> +};
> +
>  int arizona_dev_init(struct arizona *arizona)
>  {
>  	struct device *dev = arizona->dev;
>  	const char *type_name;
> -	unsigned int reg, val;
> +	unsigned int reg, val, mask;
>  	int (*apply_patch)(struct arizona *) = NULL;
>  	int ret, i;
>  
> @@ -684,6 +720,8 @@ int arizona_dev_init(struct arizona *arizona)
>  	case WM5110:
>  	case WM8280:
>  	case WM8997:
> +	case WM8998:
> +	case WM1814:
>  		for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++)
>  			arizona->core_supplies[i].supply
>  				= wm5102_core_supplies[i];
> @@ -768,6 +806,7 @@ int arizona_dev_init(struct arizona *arizona)
>  	switch (reg) {
>  	case 0x5102:
>  	case 0x5110:
> +	case 0x6349:
>  	case 0x8997:
>  		break;
>  	default:
> @@ -874,6 +913,27 @@ int arizona_dev_init(struct arizona *arizona)
>  		apply_patch = wm8997_patch;
>  		break;
>  #endif
> +#ifdef CONFIG_MFD_WM8998
> +	case 0x6349:
> +		switch (arizona->type) {
> +		case WM8998:
> +			type_name = "WM8998";
> +			break;
> +
> +		case WM1814:
> +			type_name = "WM1814";
> +			break;
> +
> +		default:
> +			type_name = "WM8998";
> +			dev_err(arizona->dev, "WM8998 registered as %d\n",
> +				arizona->type);
> +			arizona->type = WM8998;
> +		}
> +
> +		apply_patch = wm8998_patch;
> +		break;
> +#endif
>  	default:
>  		dev_err(arizona->dev, "Unknown device ID %x\n", reg);
>  		goto err_reset;
> @@ -979,14 +1039,38 @@ int arizona_dev_init(struct arizona *arizona)
>  			<< ARIZONA_IN1_DMIC_SUP_SHIFT;
>  		if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC)
>  			val |= 1 << ARIZONA_IN1_MODE_SHIFT;
> -		if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
> -			val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT;
> +
> +		switch (arizona->type) {
> +		case WM8998:
> +		case WM1814:
> +			regmap_update_bits(arizona->regmap,
> +				ARIZONA_ADC_DIGITAL_VOLUME_1L + (i * 8),
> +				ARIZONA_IN1L_SRC_SE_MASK,
> +				(arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
> +					<< ARIZONA_IN1L_SRC_SE_SHIFT);
> +
> +			regmap_update_bits(arizona->regmap,
> +				ARIZONA_ADC_DIGITAL_VOLUME_1R + (i * 8),
> +				ARIZONA_IN1R_SRC_SE_MASK,
> +				(arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
> +					<< ARIZONA_IN1R_SRC_SE_SHIFT);
> +
> +			mask = ARIZONA_IN1_DMIC_SUP_MASK |
> +				ARIZONA_IN1_MODE_MASK;
> +			break;
> +		default:
> +			if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
> +				val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT;
> +
> +			mask = ARIZONA_IN1_DMIC_SUP_MASK |
> +				ARIZONA_IN1_MODE_MASK |
> +				ARIZONA_IN1_SINGLE_ENDED_MASK;
> +			break;
> +		}
>  
>  		regmap_update_bits(arizona->regmap,
>  				   ARIZONA_IN1L_CONTROL + (i * 8),
> -				   ARIZONA_IN1_DMIC_SUP_MASK |
> -				   ARIZONA_IN1_MODE_MASK |
> -				   ARIZONA_IN1_SINGLE_ENDED_MASK, val);
> +				   mask, val);
>  	}
>  
>  	for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) {
> @@ -1042,6 +1126,11 @@ int arizona_dev_init(struct arizona *arizona)
>  		ret = mfd_add_devices(arizona->dev, -1, wm8997_devs,
>  				      ARRAY_SIZE(wm8997_devs), NULL, 0, NULL);
>  		break;
> +	case WM8998:
> +	case WM1814:
> +		ret = mfd_add_devices(arizona->dev, -1, wm8998_devs,
> +				      ARRAY_SIZE(wm8998_devs), NULL, 0, NULL);
> +		break;
>  	}
>  
>  	if (ret != 0) {
> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
> index ff782a5..920276f 100644
> --- a/drivers/mfd/arizona-i2c.c
> +++ b/drivers/mfd/arizona-i2c.c
> @@ -53,6 +53,12 @@ static int arizona_i2c_probe(struct i2c_client *i2c,
>  		regmap_config = &wm8997_i2c_regmap;
>  		break;
>  #endif
> +#ifdef CONFIG_MFD_WM8998
> +	case WM8998:
> +	case WM1814:
> +		regmap_config = &wm8998_i2c_regmap;
> +		break;
> +#endif
>  	default:
>  		dev_err(&i2c->dev, "Unknown device type %ld\n",
>  			id->driver_data);
> @@ -90,6 +96,8 @@ static const struct i2c_device_id arizona_i2c_id[] = {
>  	{ "wm5110", WM5110 },
>  	{ "wm8280", WM8280 },
>  	{ "wm8997", WM8997 },
> +	{ "wm8998", WM8998 },
> +	{ "wm1814", WM1814 },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(i2c, arizona_i2c_id);
> diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c
> index d063b94..b755244 100644
> --- a/drivers/mfd/arizona-irq.c
> +++ b/drivers/mfd/arizona-irq.c
> @@ -234,6 +234,15 @@ int arizona_irq_init(struct arizona *arizona)
>  		arizona->ctrlif_error = false;
>  		break;
>  #endif
> +#ifdef CONFIG_MFD_WM8998
> +	case WM8998:
> +	case WM1814:
> +		aod = &wm8998_aod;
> +		irq = &wm8998_irq;
> +
> +		arizona->ctrlif_error = false;
> +		break;
> +#endif
>  	default:
>  		BUG_ON("Unknown Arizona class device" == NULL);
>  		return -EINVAL;
> diff --git a/drivers/mfd/arizona.h b/drivers/mfd/arizona.h
> index fbe2843..3af12e9 100644
> --- a/drivers/mfd/arizona.h
> +++ b/drivers/mfd/arizona.h
> @@ -27,6 +27,8 @@ extern const struct regmap_config wm5110_spi_regmap;
>  
>  extern const struct regmap_config wm8997_i2c_regmap;
>  
> +extern const struct regmap_config wm8998_i2c_regmap;
> +
>  extern const struct dev_pm_ops arizona_pm_ops;
>  
>  extern const struct of_device_id arizona_of_match[];
> @@ -41,6 +43,9 @@ extern const struct regmap_irq_chip wm5110_revd_irq;
>  extern const struct regmap_irq_chip wm8997_aod;
>  extern const struct regmap_irq_chip wm8997_irq;
>  
> +extern struct regmap_irq_chip wm8998_aod;
> +extern struct regmap_irq_chip wm8998_irq;
> +
>  int arizona_dev_init(struct arizona *arizona);
>  int arizona_dev_exit(struct arizona *arizona);
>  int arizona_irq_init(struct arizona *arizona);
> diff --git a/drivers/mfd/wm8998-tables.c b/drivers/mfd/wm8998-tables.c
> new file mode 100644
> index 0000000..60e8622
> --- /dev/null
> +++ b/drivers/mfd/wm8998-tables.c
> @@ -0,0 +1,1592 @@
> +/*
> + * wm8998-tables.c  --  data tables for wm8998-class codecs
> + *
> + * Copyright 2014 Wolfson Microelectronics plc
> + *
> + * Author: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/module.h>
> +
> +#include <linux/mfd/arizona/core.h>
> +#include <linux/mfd/arizona/registers.h>
> +#include <linux/device.h>
> +
> +#include "arizona.h"
> +
> +#define WM8998_NUM_AOD_ISR 2
> +#define WM8998_NUM_ISR 5
> +
> +static const struct reg_default wm8998_rev_a_patch[] = {
> +	{ 0x0212, 0x0000 },
> +	{ 0x0211, 0x0014 },
> +	{ 0x04E4, 0x0E0D },
> +	{ 0x04E5, 0x0E0D },
> +	{ 0x04E6, 0x0E0D },
> +	{ 0x04EB, 0x060E },
> +	{ 0x0441, 0xC759 },
> +	{ 0x0442, 0x2A08 },
> +	{ 0x0443, 0x5CFA },
> +	{ 0x026E, 0x0064 },
> +	{ 0x026F, 0x00EA },
> +	{ 0x0270, 0x1F16 },
> +	{ 0x0410, 0x2080 },
> +	{ 0x0418, 0x2080 },
> +	{ 0x0420, 0x2080 },
> +	{ 0x04B8, 0x1120 },
> +	{ 0x047E, 0x080E },
> +	{ 0x0448, 0x03EF },
> +};
> +
> +/* We use a function so we can use ARRAY_SIZE() */
> +int wm8998_patch(struct arizona *arizona)
> +{
> +	return regmap_register_patch(arizona->regmap,
> +				     wm8998_rev_a_patch,
> +				     ARRAY_SIZE(wm8998_rev_a_patch));
> +}
> +
> +static const struct regmap_irq wm8998_aod_irqs[ARIZONA_NUM_IRQ] = {
> +	[ARIZONA_IRQ_MICD_CLAMP_FALL] = {
> +		.mask = ARIZONA_MICD_CLAMP_FALL_EINT1
> +	},
> +	[ARIZONA_IRQ_MICD_CLAMP_RISE] = {
> +		.mask = ARIZONA_MICD_CLAMP_RISE_EINT1
> +	},
> +	[ARIZONA_IRQ_GP5_FALL] = { .mask = ARIZONA_GP5_FALL_EINT1 },
> +	[ARIZONA_IRQ_GP5_RISE] = { .mask = ARIZONA_GP5_RISE_EINT1 },
> +	[ARIZONA_IRQ_JD_FALL] = { .mask = ARIZONA_JD1_FALL_EINT1 },
> +	[ARIZONA_IRQ_JD_RISE] = { .mask = ARIZONA_JD1_RISE_EINT1 },
> +};
> +
> +struct regmap_irq_chip wm8998_aod = {
> +	.name = "wm8998 AOD",
> +	.status_base = ARIZONA_AOD_IRQ1,
> +	.mask_base = ARIZONA_AOD_IRQ_MASK_IRQ1,
> +	.ack_base = ARIZONA_AOD_IRQ1,
> +	.wake_base = ARIZONA_WAKE_CONTROL,
> +	.wake_invert = 1,
> +	.num_regs = 1,
> +	.irqs = wm8998_aod_irqs,
> +	.num_irqs = ARRAY_SIZE(wm8998_aod_irqs),
> +};
> +
> +static const struct regmap_irq wm8998_irqs[ARIZONA_NUM_IRQ] = {
> +	[ARIZONA_IRQ_GP4] = { .reg_offset = 0, .mask = ARIZONA_GP4_EINT1 },
> +	[ARIZONA_IRQ_GP3] = { .reg_offset = 0, .mask = ARIZONA_GP3_EINT1 },
> +	[ARIZONA_IRQ_GP2] = { .reg_offset = 0, .mask = ARIZONA_GP2_EINT1 },
> +	[ARIZONA_IRQ_GP1] = { .reg_offset = 0, .mask = ARIZONA_GP1_EINT1 },
> +
> +	[ARIZONA_IRQ_SPK_OVERHEAT_WARN] = {
> +		.reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_WARN_EINT1
> +	},
> +	[ARIZONA_IRQ_SPK_OVERHEAT] = {
> +		.reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_EINT1
> +	},
> +	[ARIZONA_IRQ_HPDET] = {
> +		.reg_offset = 2, .mask = ARIZONA_HPDET_EINT1
> +	},
> +	[ARIZONA_IRQ_MICDET] = {
> +		.reg_offset = 2, .mask = ARIZONA_MICDET_EINT1
> +	},
> +	[ARIZONA_IRQ_WSEQ_DONE] = {
> +		.reg_offset = 2, .mask = ARIZONA_WSEQ_DONE_EINT1
> +	},
> +	[ARIZONA_IRQ_DRC1_SIG_DET] = {
> +		.reg_offset = 2, .mask = ARIZONA_DRC1_SIG_DET_EINT1
> +	},
> +	[ARIZONA_IRQ_ASRC2_LOCK] = {
> +		.reg_offset = 2, .mask = ARIZONA_ASRC2_LOCK_EINT1
> +	},
> +	[ARIZONA_IRQ_ASRC1_LOCK] = {
> +		.reg_offset = 2, .mask = ARIZONA_ASRC1_LOCK_EINT1
> +	},
> +	[ARIZONA_IRQ_UNDERCLOCKED] = {
> +		.reg_offset = 2, .mask = ARIZONA_UNDERCLOCKED_EINT1
> +	},
> +	[ARIZONA_IRQ_OVERCLOCKED] = {
> +		.reg_offset = 2, .mask = ARIZONA_OVERCLOCKED_EINT1
> +	},
> +	[ARIZONA_IRQ_FLL2_LOCK] = {
> +		.reg_offset = 2, .mask = ARIZONA_FLL2_LOCK_EINT1
> +	},
> +	[ARIZONA_IRQ_FLL1_LOCK] = {
> +		.reg_offset = 2, .mask = ARIZONA_FLL1_LOCK_EINT1
> +	},
> +	[ARIZONA_IRQ_CLKGEN_ERR] = {
> +		.reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_CLKGEN_ERR_ASYNC] = {
> +		.reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_ASYNC_EINT1
> +	},
> +
> +	[ARIZONA_IRQ_ASRC_CFG_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_ASRC_CFG_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_AIF3_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_AIF3_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_AIF2_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_AIF2_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_AIF1_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_AIF1_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_CTRLIF_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_CTRLIF_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_MIXER_DROPPED_SAMPLES] = {
> +		.reg_offset = 3, .mask = ARIZONA_MIXER_DROPPED_SAMPLE_EINT1
> +	},
> +	[ARIZONA_IRQ_ASYNC_CLK_ENA_LOW] = {
> +		.reg_offset = 3, .mask = ARIZONA_ASYNC_CLK_ENA_LOW_EINT1
> +	},
> +	[ARIZONA_IRQ_SYSCLK_ENA_LOW] = {
> +		.reg_offset = 3, .mask = ARIZONA_SYSCLK_ENA_LOW_EINT1
> +	},
> +	[ARIZONA_IRQ_ISRC1_CFG_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_ISRC1_CFG_ERR_EINT1
> +	},
> +	[ARIZONA_IRQ_ISRC2_CFG_ERR] = {
> +		.reg_offset = 3, .mask = ARIZONA_ISRC2_CFG_ERR_EINT1
> +	},
> +
> +	[ARIZONA_IRQ_BOOT_DONE] = {
> +		.reg_offset = 4, .mask = ARIZONA_BOOT_DONE_EINT1
> +	},
> +	[ARIZONA_IRQ_FLL2_CLOCK_OK] = {
> +		.reg_offset = 4, .mask = ARIZONA_FLL2_CLOCK_OK_EINT1
> +	},
> +	[ARIZONA_IRQ_FLL1_CLOCK_OK] = {
> +		.reg_offset = 4, .mask = ARIZONA_FLL1_CLOCK_OK_EINT1
> +	},
> +};
> +
> +struct regmap_irq_chip wm8998_irq = {
> +	.name = "wm8998 IRQ",
> +	.status_base = ARIZONA_INTERRUPT_STATUS_1,
> +	.mask_base = ARIZONA_INTERRUPT_STATUS_1_MASK,
> +	.ack_base = ARIZONA_INTERRUPT_STATUS_1,
> +	.num_regs = 5,
> +	.irqs = wm8998_irqs,
> +	.num_irqs = ARRAY_SIZE(wm8998_irqs),
> +};
> +
> +static const struct reg_default wm8998_reg_default[] = {
> +	{ 0x00000009, 0x0001 },    /* R9     - Ctrl IF I2C1 CFG 1 */
> +	{ 0x0000000B, 0x001A },    /* R11    - Ctrl IF I2C1 CFG 2 */
> +	{ 0x00000020, 0x0000 },    /* R32    - Tone Generator 1 */
> +	{ 0x00000021, 0x1000 },    /* R33    - Tone Generator 2 */
> +	{ 0x00000022, 0x0000 },    /* R34    - Tone Generator 3 */
> +	{ 0x00000023, 0x1000 },    /* R35    - Tone Generator 4 */
> +	{ 0x00000024, 0x0000 },    /* R36    - Tone Generator 5 */
> +	{ 0x00000030, 0x0000 },    /* R48    - PWM Drive 1 */
> +	{ 0x00000031, 0x0100 },    /* R49    - PWM Drive 2 */
> +	{ 0x00000032, 0x0100 },    /* R50    - PWM Drive 3 */
> +	{ 0x00000040, 0x0000 },    /* R64    - Wake control */
> +	{ 0x00000041, 0x0000 },    /* R65    - Sequence control */
> +	{ 0x00000061, 0x01FF },    /* R97    - Sample Rate Sequence Select 1 */
> +	{ 0x00000062, 0x01FF },    /* R98    - Sample Rate Sequence Select 2 */
> +	{ 0x00000063, 0x01FF },    /* R99    - Sample Rate Sequence Select 3 */
> +	{ 0x00000064, 0x01FF },    /* R100   - Sample Rate Sequence Select 4 */
> +	{ 0x00000066, 0x01FF },    /* R102   - Always On Triggers Sequence Select 1 */
> +	{ 0x00000067, 0x01FF },    /* R103   - Always On Triggers Sequence Select 2 */
> +	{ 0x00000068, 0x01FF },    /* R104   - Always On Triggers Sequence Select 3 */
> +	{ 0x00000069, 0x01FF },    /* R105   - Always On Triggers Sequence Select 4 */
> +	{ 0x0000006A, 0x01FF },    /* R106   - Always On Triggers Sequence Select 5 */
> +	{ 0x0000006B, 0x01FF },    /* R107   - Always On Triggers Sequence Select 6 */
> +	{ 0x0000006E, 0x01FF },    /* R110   - Trigger Sequence Select 32 */
> +	{ 0x0000006F, 0x01FF },    /* R111   - Trigger Sequence Select 33 */
> +	{ 0x00000090, 0x0000 },    /* R144   - Haptics Control 1 */
> +	{ 0x00000091, 0x7FFF },    /* R145   - Haptics Control 2 */
> +	{ 0x00000092, 0x0000 },    /* R146   - Haptics phase 1 intensity */
> +	{ 0x00000093, 0x0000 },    /* R147   - Haptics phase 1 duration */
> +	{ 0x00000094, 0x0000 },    /* R148   - Haptics phase 2 intensity */
> +	{ 0x00000095, 0x0000 },    /* R149   - Haptics phase 2 duration */
> +	{ 0x00000096, 0x0000 },    /* R150   - Haptics phase 3 intensity */
> +	{ 0x00000097, 0x0000 },    /* R151   - Haptics phase 3 duration */
> +	{ 0x00000100, 0x0002 },    /* R256   - Clock 32k 1 */
> +	{ 0x00000101, 0x0304 },    /* R257   - System Clock 1 */
> +	{ 0x00000102, 0x0011 },    /* R258   - Sample rate 1 */
> +	{ 0x00000103, 0x0011 },    /* R259   - Sample rate 2 */
> +	{ 0x00000104, 0x0011 },    /* R260   - Sample rate 3 */
> +	{ 0x00000112, 0x0305 },    /* R274   - Async clock 1 */
> +	{ 0x00000113, 0x0011 },    /* R275   - Async sample rate 1 */
> +	{ 0x00000114, 0x0011 },    /* R276   - Async sample rate 2 */
> +	{ 0x00000149, 0x0000 },    /* R329   - Output system clock */
> +	{ 0x0000014A, 0x0000 },    /* R330   - Output async clock */
> +	{ 0x00000152, 0x0000 },    /* R338   - Rate Estimator 1 */
> +	{ 0x00000153, 0x0000 },    /* R339   - Rate Estimator 2 */
> +	{ 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, 0x0002 },    /* R369   - FLL1 Control 1 */
> +	{ 0x00000172, 0x0008 },    /* R370   - FLL1 Control 2 */
> +	{ 0x00000173, 0x0018 },    /* R371   - FLL1 Control 3 */
> +	{ 0x00000174, 0x007D },    /* R372   - FLL1 Control 4 */
> +	{ 0x00000175, 0x0004 },    /* R373   - FLL1 Control 5 */
> +	{ 0x00000176, 0x0000 },    /* R374   - FLL1 Control 6 */
> +	{ 0x00000177, 0x0181 },    /* R375   - FLL1 Loop Filter Test 1 */
> +	{ 0x00000178, 0x0000 },    /* R376   - FLL1 NCO Test 0 */
> +	{ 0x00000179, 0x0000 },    /* R377   - FLL1 Control 7 */
> +	{ 0x00000181, 0x0000 },    /* R385   - FLL1 Synchroniser 1 */
> +	{ 0x00000182, 0x0000 },    /* R386   - FLL1 Synchroniser 2 */
> +	{ 0x00000183, 0x0000 },    /* R387   - FLL1 Synchroniser 3 */
> +	{ 0x00000184, 0x0000 },    /* R388   - FLL1 Synchroniser 4 */
> +	{ 0x00000185, 0x0000 },    /* R389   - FLL1 Synchroniser 5 */
> +	{ 0x00000186, 0x0000 },    /* R390   - FLL1 Synchroniser 6 */
> +	{ 0x00000187, 0x0001 },    /* R391   - FLL1 Synchroniser 7 */
> +	{ 0x00000189, 0x0000 },    /* R393   - FLL1 Spread Spectrum */
> +	{ 0x0000018A, 0x0004 },    /* R394   - FLL1 GPIO Clock */
> +	{ 0x00000191, 0x0000 },    /* R401   - FLL2 Control 1 */
> +	{ 0x00000192, 0x0008 },    /* R402   - FLL2 Control 2 */
> +	{ 0x00000193, 0x0018 },    /* R403   - FLL2 Control 3 */
> +	{ 0x00000194, 0x007D },    /* R404   - FLL2 Control 4 */
> +	{ 0x00000195, 0x0004 },    /* R405   - FLL2 Control 5 */
> +	{ 0x00000196, 0x0000 },    /* R406   - FLL2 Control 6 */
> +	{ 0x00000197, 0x0000 },    /* R407   - FLL2 Loop Filter Test 1 */
> +	{ 0x00000198, 0x0000 },    /* R408   - FLL2 NCO Test 0 */
> +	{ 0x00000199, 0x0000 },    /* R409   - FLL2 Control 7 */
> +	{ 0x000001A1, 0x0000 },    /* R417   - FLL2 Synchroniser 1 */
> +	{ 0x000001A2, 0x0000 },    /* R418   - FLL2 Synchroniser 2 */
> +	{ 0x000001A3, 0x0000 },    /* R419   - FLL2 Synchroniser 3 */
> +	{ 0x000001A4, 0x0000 },    /* R420   - FLL2 Synchroniser 4 */
> +	{ 0x000001A5, 0x0000 },    /* R421   - FLL2 Synchroniser 5 */
> +	{ 0x000001A6, 0x0000 },    /* R422   - FLL2 Synchroniser 6 */
> +	{ 0x000001A7, 0x0001 },    /* R423   - FLL2 Synchroniser 7 */
> +	{ 0x000001A9, 0x0000 },    /* R425   - FLL2 Spread Spectrum */
> +	{ 0x000001AA, 0x0004 },    /* R426   - FLL2 GPIO Clock */
> +	{ 0x00000200, 0x0006 },    /* R512   - Mic Charge Pump 1 */
> +	{ 0x00000210, 0x00D4 },    /* R528   - LDO1 Control 1 */
> +	{ 0x00000212, 0x0000 },    /* R530   - LDO1 Control 2 */
> +	{ 0x00000213, 0x0344 },    /* R531   - LDO2 Control 1 */
> +	{ 0x00000218, 0x01A6 },    /* R536   - Mic Bias Ctrl 1 */
> +	{ 0x00000219, 0x01A6 },    /* R537   - Mic Bias Ctrl 2 */
> +	{ 0x0000021A, 0x01A6 },    /* R538   - Mic Bias Ctrl 3 */
> +	{ 0x00000293, 0x0080 },    /* R659   - Accessory Detect Mode 1 */
> +	{ 0x0000029B, 0x0000 },    /* R667   - Headphone Detect 1 */
> +	{ 0x0000029C, 0x0000 },    /* R668   - Headphone Detect 2 */
> +	{ 0x000002A2, 0x0000 },    /* R674   - Micd Clamp control */
> +	{ 0x000002A3, 0x1102 },    /* R675   - Mic Detect 1 */
> +	{ 0x000002A4, 0x009F },    /* R676   - Mic Detect 2 */
> +	{ 0x000002A5, 0x0000 },    /* R677   - Mic Detect 3 */
> +	{ 0x000002A6, 0x3737 },    /* R678   - Mic Detect Level 1 */
> +	{ 0x000002A7, 0x2C37 },    /* R679   - Mic Detect Level 2 */
> +	{ 0x000002A8, 0x1422 },    /* R680   - Mic Detect Level 3 */
> +	{ 0x000002A9, 0x030A },    /* R681   - Mic Detect Level 4 */
> +	{ 0x000002AB, 0x0000 },    /* R683   - Mic Detect 4 */
> +	{ 0x000002CB, 0x0000 },    /* R715   - Isolation control */
> +	{ 0x000002D3, 0x0000 },    /* R723   - Jack detect analogue */
> +	{ 0x00000300, 0x0000 },    /* R768   - Input Enables */
> +	{ 0x00000308, 0x0000 },    /* R776   - Input Rate */
> +	{ 0x00000309, 0x0022 },    /* R777   - Input Volume Ramp */
> +	{ 0x0000030C, 0x0002 },    /* R780   - HPF Control */
> +	{ 0x00000310, 0x2080 },    /* R784   - IN1L Control */
> +	{ 0x00000311, 0x0180 },    /* R785   - ADC Digital Volume 1L */
> +	{ 0x00000312, 0x0000 },    /* R786   - DMIC1L Control */
> +	{ 0x00000314, 0x0080 },    /* R788   - IN1R Control */
> +	{ 0x00000315, 0x0180 },    /* R789   - ADC Digital Volume 1R */
> +	{ 0x00000316, 0x0000 },    /* R790   - DMIC1R Control */
> +	{ 0x00000318, 0x2080 },    /* R792   - IN2L Control */
> +	{ 0x00000319, 0x0180 },    /* R793   - ADC Digital Volume 2L */
> +	{ 0x0000031A, 0x0000 },    /* R794   - DMIC2L Control */
> +	{ 0x00000400, 0x0000 },    /* R1024  - Output Enables 1 */
> +	{ 0x00000408, 0x0000 },    /* R1032  - Output Rate 1 */
> +	{ 0x00000409, 0x0022 },    /* R1033  - Output Volume Ramp */
> +	{ 0x00000410, 0x2080 },    /* R1040  - Output Path Config 1L */
> +	{ 0x00000411, 0x0180 },    /* R1041  - DAC Digital Volume 1L */
> +	{ 0x00000413, 0x0001 },    /* R1043  - Noise Gate Select 1L */
> +	{ 0x00000414, 0x0080 },    /* R1044  - Output Path Config 1R */
> +	{ 0x00000415, 0x0180 },    /* R1045  - DAC Digital Volume 1R */
> +	{ 0x00000417, 0x0002 },    /* R1047  - Noise Gate Select 1R */
> +	{ 0x00000418, 0x2080 },    /* R1048  - Output Path Config 2L */
> +	{ 0x00000419, 0x0180 },    /* R1049  - DAC Digital Volume 2L */
> +	{ 0x0000041B, 0x0004 },    /* R1051  - Noise Gate Select 2L */
> +	{ 0x0000041C, 0x0080 },    /* R1052  - Output Path Config 2R */
> +	{ 0x0000041D, 0x0180 },    /* R1053  - DAC Digital Volume 2R */
> +	{ 0x0000041F, 0x0008 },    /* R1055  - Noise Gate Select 2R */
> +	{ 0x00000420, 0x2080 },    /* R1056  - Output Path Config 3L */
> +	{ 0x00000421, 0x0180 },    /* R1057  - DAC Digital Volume 3L */
> +	{ 0x00000423, 0x0010 },    /* R1059  - Noise Gate Select 3L */
> +	{ 0x00000428, 0x0000 },    /* R1064  - Output Path Config 4L */
> +	{ 0x00000429, 0x0180 },    /* R1065  - DAC Digital Volume 4L */
> +	{ 0x0000042B, 0x0040 },    /* R1067  - Noise Gate Select 4L */
> +	{ 0x0000042C, 0x0000 },    /* R1068  - Output Path Config 4R */
> +	{ 0x0000042D, 0x0180 },    /* R1069  - DAC Digital Volume 4R */
> +	{ 0x0000042F, 0x0080 },    /* R1071  - Noise Gate Select 4R */
> +	{ 0x00000430, 0x0000 },    /* R1072  - Output Path Config 5L */
> +	{ 0x00000431, 0x0180 },    /* R1073  - DAC Digital Volume 5L */
> +	{ 0x00000433, 0x0100 },    /* R1075  - Noise Gate Select 5L */
> +	{ 0x00000434, 0x0000 },    /* R1076  - Output Path Config 5R */
> +	{ 0x00000435, 0x0180 },    /* R1077  - DAC Digital Volume 5R */
> +	{ 0x00000437, 0x0200 },    /* R1079  - Noise Gate Select 5R */
> +	{ 0x00000440, 0x8FFF },    /* R1088  - DRE Enable */
> +	{ 0x00000441, 0xC759 },    /* R1089  - DRE Control 1 */
> +	{ 0x00000442, 0x2A08 },    /* R1089  - DRE Control 2 */
> +	{ 0x00000443, 0x5CFA },    /* R1089  - DRE Control 3 */
> +	{ 0x00000448, 0x03EF },    /* R1096  - EDRE Enable */
> +	{ 0x00000450, 0x0000 },    /* R1104  - DAC AEC Control 1 */
> +	{ 0x00000451, 0x0000 },    /* R1105  - DAC AEC Control 2 */
> +	{ 0x00000458, 0x0000 },    /* R1112  - Noise Gate Control */
> +	{ 0x00000490, 0x0069 },    /* R1168  - PDM SPK1 CTRL 1 */
> +	{ 0x00000491, 0x0000 },    /* R1169  - PDM SPK1 CTRL 2 */
> +	{ 0x0000049A, 0x0000 },    /* R1178  - HP_TEST_CTRL_13 */
> +	{ 0x00000500, 0x000C },    /* R1280  - AIF1 BCLK Ctrl */
> +	{ 0x00000501, 0x0008 },    /* R1281  - AIF1 Tx Pin Ctrl */
> +	{ 0x00000502, 0x0000 },    /* R1282  - AIF1 Rx Pin Ctrl */
> +	{ 0x00000503, 0x0000 },    /* R1283  - AIF1 Rate Ctrl */
> +	{ 0x00000504, 0x0000 },    /* R1284  - AIF1 Format */
> +	{ 0x00000506, 0x0040 },    /* R1286  - AIF1 Rx BCLK Rate */
> +	{ 0x00000507, 0x1818 },    /* R1287  - AIF1 Frame Ctrl 1 */
> +	{ 0x00000508, 0x1818 },    /* R1288  - AIF1 Frame Ctrl 2 */
> +	{ 0x00000509, 0x0000 },    /* R1289  - AIF1 Frame Ctrl 3 */
> +	{ 0x0000050A, 0x0001 },    /* R1290  - AIF1 Frame Ctrl 4 */
> +	{ 0x0000050B, 0x0002 },    /* R1291  - AIF1 Frame Ctrl 5 */
> +	{ 0x0000050C, 0x0003 },    /* R1292  - AIF1 Frame Ctrl 6 */
> +	{ 0x0000050D, 0x0004 },    /* R1293  - AIF1 Frame Ctrl 7 */
> +	{ 0x0000050E, 0x0005 },    /* R1294  - AIF1 Frame Ctrl 8 */
> +	{ 0x00000511, 0x0000 },    /* R1297  - AIF1 Frame Ctrl 11 */
> +	{ 0x00000512, 0x0001 },    /* R1298  - AIF1 Frame Ctrl 12 */
> +	{ 0x00000513, 0x0002 },    /* R1299  - AIF1 Frame Ctrl 13 */
> +	{ 0x00000514, 0x0003 },    /* R1300  - AIF1 Frame Ctrl 14 */
> +	{ 0x00000515, 0x0004 },    /* R1301  - AIF1 Frame Ctrl 15 */
> +	{ 0x00000516, 0x0005 },    /* R1302  - AIF1 Frame Ctrl 16 */
> +	{ 0x00000519, 0x0000 },    /* R1305  - AIF1 Tx Enables */
> +	{ 0x0000051A, 0x0000 },    /* R1306  - AIF1 Rx Enables */
> +	{ 0x00000540, 0x000C },    /* R1344  - AIF2 BCLK Ctrl */
> +	{ 0x00000541, 0x0008 },    /* R1345  - AIF2 Tx Pin Ctrl */
> +	{ 0x00000542, 0x0000 },    /* R1346  - AIF2 Rx Pin Ctrl */
> +	{ 0x00000543, 0x0000 },    /* R1347  - AIF2 Rate Ctrl */
> +	{ 0x00000544, 0x0000 },    /* R1348  - AIF2 Format */
> +	{ 0x00000546, 0x0040 },    /* R1350  - AIF2 Rx BCLK Rate */
> +	{ 0x00000547, 0x1818 },    /* R1351  - AIF2 Frame Ctrl 1 */
> +	{ 0x00000548, 0x1818 },    /* R1352  - AIF2 Frame Ctrl 2 */
> +	{ 0x00000549, 0x0000 },    /* R1353  - AIF2 Frame Ctrl 3 */
> +	{ 0x0000054A, 0x0001 },    /* R1354  - AIF2 Frame Ctrl 4 */
> +	{ 0x0000054B, 0x0002 },    /* R1355  - AIF2 Frame Ctrl 5 */
> +	{ 0x0000054C, 0x0003 },    /* R1356  - AIF2 Frame Ctrl 6 */
> +	{ 0x0000054D, 0x0004 },    /* R1357  - AIF2 Frame Ctrl 7 */
> +	{ 0x0000054E, 0x0005 },    /* R1358  - AIF2 Frame Ctrl 8 */
> +	{ 0x00000551, 0x0000 },    /* R1361  - AIF2 Frame Ctrl 11 */
> +	{ 0x00000552, 0x0001 },    /* R1362  - AIF2 Frame Ctrl 12 */
> +	{ 0x00000553, 0x0002 },    /* R1363  - AIF2 Frame Ctrl 13 */
> +	{ 0x00000554, 0x0003 },    /* R1364  - AIF2 Frame Ctrl 14 */
> +	{ 0x00000555, 0x0004 },    /* R1365  - AIF2 Frame Ctrl 15 */
> +	{ 0x00000556, 0x0005 },    /* R1366  - AIF2 Frame Ctrl 16 */
> +	{ 0x00000559, 0x0000 },    /* R1369  - AIF2 Tx Enables */
> +	{ 0x0000055A, 0x0000 },    /* R1370  - AIF2 Rx Enables */
> +	{ 0x00000580, 0x000C },    /* R1408  - AIF3 BCLK Ctrl */
> +	{ 0x00000581, 0x0008 },    /* R1409  - AIF3 Tx Pin Ctrl */
> +	{ 0x00000582, 0x0000 },    /* R1410  - AIF3 Rx Pin Ctrl */
> +	{ 0x00000583, 0x0000 },    /* R1411  - AIF3 Rate Ctrl */
> +	{ 0x00000584, 0x0000 },    /* R1412  - AIF3 Format */
> +	{ 0x00000586, 0x0040 },    /* R1414  - AIF3 Rx BCLK Rate */
> +	{ 0x00000587, 0x1818 },    /* R1415  - AIF3 Frame Ctrl 1 */
> +	{ 0x00000588, 0x1818 },    /* R1416  - AIF3 Frame Ctrl 2 */
> +	{ 0x00000589, 0x0000 },    /* R1417  - AIF3 Frame Ctrl 3 */
> +	{ 0x0000058A, 0x0001 },    /* R1418  - AIF3 Frame Ctrl 4 */
> +	{ 0x00000591, 0x0000 },    /* R1425  - AIF3 Frame Ctrl 11 */
> +	{ 0x00000592, 0x0001 },    /* R1426  - AIF3 Frame Ctrl 12 */
> +	{ 0x00000599, 0x0000 },    /* R1433  - AIF3 Tx Enables */
> +	{ 0x0000059A, 0x0000 },    /* R1434  - AIF3 Rx Enables */
> +	{ 0x000005C2, 0x0000 },    /* R1474  - SPD1 TX Control */
> +	{ 0x000005C3, 0x0000 },    /* R1475  - SPD1 TX Channel Status 1 */
> +	{ 0x000005C4, 0x0B01 },    /* R1476  - SPD1 TX Channel Status 2 */
> +	{ 0x000005C5, 0x0000 },    /* R1477  - SPD1 TX Channel Status 3 */
> +	{ 0x000005E3, 0x0004 },    /* R1507  - SLIMbus Framer Ref Gear */
> +	{ 0x000005E5, 0x0000 },    /* R1509  - SLIMbus Rates 1 */
> +	{ 0x000005E6, 0x0000 },    /* R1510  - SLIMbus Rates 2 */
> +	{ 0x000005E9, 0x0000 },    /* R1513  - SLIMbus Rates 5 */
> +	{ 0x000005EA, 0x0000 },    /* R1514  - SLIMbus Rates 6 */
> +	{ 0x000005EB, 0x0000 },    /* R1515  - SLIMbus Rates 7 */
> +	{ 0x000005F5, 0x0000 },    /* R1525  - SLIMbus RX Channel Enable */
> +	{ 0x000005F6, 0x0000 },    /* R1526  - SLIMbus TX Channel Enable */
> +	{ 0x00000640, 0x0000 },    /* R1600  - PWM1MIX Input 1 Source */
> +	{ 0x00000641, 0x0080 },    /* R1601  - PWM1MIX Input 1 Volume */
> +	{ 0x00000642, 0x0000 },    /* R1602  - PWM1MIX Input 2 Source */
> +	{ 0x00000643, 0x0080 },    /* R1603  - PWM1MIX Input 2 Volume */
> +	{ 0x00000644, 0x0000 },    /* R1604  - PWM1MIX Input 3 Source */
> +	{ 0x00000645, 0x0080 },    /* R1605  - PWM1MIX Input 3 Volume */
> +	{ 0x00000646, 0x0000 },    /* R1606  - PWM1MIX Input 4 Source */
> +	{ 0x00000647, 0x0080 },    /* R1607  - PWM1MIX Input 4 Volume */
> +	{ 0x00000648, 0x0000 },    /* R1608  - PWM2MIX Input 1 Source */
> +	{ 0x00000649, 0x0080 },    /* R1609  - PWM2MIX Input 1 Volume */
> +	{ 0x0000064A, 0x0000 },    /* R1610  - PWM2MIX Input 2 Source */
> +	{ 0x0000064B, 0x0080 },    /* R1611  - PWM2MIX Input 2 Volume */
> +	{ 0x0000064C, 0x0000 },    /* R1612  - PWM2MIX Input 3 Source */
> +	{ 0x0000064D, 0x0080 },    /* R1613  - PWM2MIX Input 3 Volume */
> +	{ 0x0000064E, 0x0000 },    /* R1614  - PWM2MIX Input 4 Source */
> +	{ 0x0000064F, 0x0080 },    /* R1615  - PWM2MIX Input 4 Volume */
> +	{ 0x00000680, 0x0000 },    /* R1664  - OUT1LMIX Input 1 Source */
> +	{ 0x00000681, 0x0080 },    /* R1665  - OUT1LMIX Input 1 Volume */
> +	{ 0x00000682, 0x0000 },    /* R1666  - OUT1LMIX Input 2 Source */
> +	{ 0x00000683, 0x0080 },    /* R1667  - OUT1LMIX Input 2 Volume */
> +	{ 0x00000684, 0x0000 },    /* R1668  - OUT1LMIX Input 3 Source */
> +	{ 0x00000685, 0x0080 },    /* R1669  - OUT1LMIX Input 3 Volume */
> +	{ 0x00000686, 0x0000 },    /* R1670  - OUT1LMIX Input 4 Source */
> +	{ 0x00000687, 0x0080 },    /* R1671  - OUT1LMIX Input 4 Volume */
> +	{ 0x00000688, 0x0000 },    /* R1672  - OUT1RMIX Input 1 Source */
> +	{ 0x00000689, 0x0080 },    /* R1673  - OUT1RMIX Input 1 Volume */
> +	{ 0x0000068A, 0x0000 },    /* R1674  - OUT1RMIX Input 2 Source */
> +	{ 0x0000068B, 0x0080 },    /* R1675  - OUT1RMIX Input 2 Volume */
> +	{ 0x0000068C, 0x0000 },    /* R1676  - OUT1RMIX Input 3 Source */
> +	{ 0x0000068D, 0x0080 },    /* R1677  - OUT1RMIX Input 3 Volume */
> +	{ 0x0000068E, 0x0000 },    /* R1678  - OUT1RMIX Input 4 Source */
> +	{ 0x0000068F, 0x0080 },    /* R1679  - OUT1RMIX Input 4 Volume */
> +	{ 0x00000690, 0x0000 },    /* R1680  - OUT2LMIX Input 1 Source */
> +	{ 0x00000691, 0x0080 },    /* R1681  - OUT2LMIX Input 1 Volume */
> +	{ 0x00000692, 0x0000 },    /* R1682  - OUT2LMIX Input 2 Source */
> +	{ 0x00000693, 0x0080 },    /* R1683  - OUT2LMIX Input 2 Volume */
> +	{ 0x00000694, 0x0000 },    /* R1684  - OUT2LMIX Input 3 Source */
> +	{ 0x00000695, 0x0080 },    /* R1685  - OUT2LMIX Input 3 Volume */
> +	{ 0x00000696, 0x0000 },    /* R1686  - OUT2LMIX Input 4 Source */
> +	{ 0x00000697, 0x0080 },    /* R1687  - OUT2LMIX Input 4 Volume */
> +	{ 0x00000698, 0x0000 },    /* R1688  - OUT2RMIX Input 1 Source */
> +	{ 0x00000699, 0x0080 },    /* R1689  - OUT2RMIX Input 1 Volume */
> +	{ 0x0000069A, 0x0000 },    /* R1690  - OUT2RMIX Input 2 Source */
> +	{ 0x0000069B, 0x0080 },    /* R1691  - OUT2RMIX Input 2 Volume */
> +	{ 0x0000069C, 0x0000 },    /* R1692  - OUT2RMIX Input 3 Source */
> +	{ 0x0000069D, 0x0080 },    /* R1693  - OUT2RMIX Input 3 Volume */
> +	{ 0x0000069E, 0x0000 },    /* R1694  - OUT2RMIX Input 4 Source */
> +	{ 0x0000069F, 0x0080 },    /* R1695  - OUT2RMIX Input 4 Volume */
> +	{ 0x000006A0, 0x0000 },    /* R1696  - OUT3LMIX Input 1 Source */
> +	{ 0x000006A1, 0x0080 },    /* R1697  - OUT3LMIX Input 1 Volume */
> +	{ 0x000006A2, 0x0000 },    /* R1698  - OUT3LMIX Input 2 Source */
> +	{ 0x000006A3, 0x0080 },    /* R1699  - OUT3LMIX Input 2 Volume */
> +	{ 0x000006A4, 0x0000 },    /* R1700  - OUT3LMIX Input 3 Source */
> +	{ 0x000006A5, 0x0080 },    /* R1701  - OUT3LMIX Input 3 Volume */
> +	{ 0x000006A6, 0x0000 },    /* R1702  - OUT3LMIX Input 4 Source */
> +	{ 0x000006A7, 0x0080 },    /* R1703  - OUT3LMIX Input 4 Volume */
> +	{ 0x000006B0, 0x0000 },    /* R1712  - OUT4LMIX Input 1 Source */
> +	{ 0x000006B1, 0x0080 },    /* R1713  - OUT4LMIX Input 1 Volume */
> +	{ 0x000006B2, 0x0000 },    /* R1714  - OUT4LMIX Input 2 Source */
> +	{ 0x000006B3, 0x0080 },    /* R1715  - OUT4LMIX Input 2 Volume */
> +	{ 0x000006B4, 0x0000 },    /* R1716  - OUT4LMIX Input 3 Source */
> +	{ 0x000006B5, 0x0080 },    /* R1717  - OUT4LMIX Input 3 Volume */
> +	{ 0x000006B6, 0x0000 },    /* R1718  - OUT4LMIX Input 4 Source */
> +	{ 0x000006B7, 0x0080 },    /* R1719  - OUT4LMIX Input 4 Volume */
> +	{ 0x000006B8, 0x0000 },    /* R1720  - OUT4RMIX Input 1 Source */
> +	{ 0x000006B9, 0x0080 },    /* R1721  - OUT4RMIX Input 1 Volume */
> +	{ 0x000006BA, 0x0000 },    /* R1722  - OUT4RMIX Input 2 Source */
> +	{ 0x000006BB, 0x0080 },    /* R1723  - OUT4RMIX Input 2 Volume */
> +	{ 0x000006BC, 0x0000 },    /* R1724  - OUT4RMIX Input 3 Source */
> +	{ 0x000006BD, 0x0080 },    /* R1725  - OUT4RMIX Input 3 Volume */
> +	{ 0x000006BE, 0x0000 },    /* R1726  - OUT4RMIX Input 4 Source */
> +	{ 0x000006BF, 0x0080 },    /* R1727  - OUT4RMIX Input 4 Volume */
> +	{ 0x000006C0, 0x0000 },    /* R1728  - OUT5LMIX Input 1 Source */
> +	{ 0x000006C1, 0x0080 },    /* R1729  - OUT5LMIX Input 1 Volume */
> +	{ 0x000006C2, 0x0000 },    /* R1730  - OUT5LMIX Input 2 Source */
> +	{ 0x000006C3, 0x0080 },    /* R1731  - OUT5LMIX Input 2 Volume */
> +	{ 0x000006C4, 0x0000 },    /* R1732  - OUT5LMIX Input 3 Source */
> +	{ 0x000006C5, 0x0080 },    /* R1733  - OUT5LMIX Input 3 Volume */
> +	{ 0x000006C6, 0x0000 },    /* R1734  - OUT5LMIX Input 4 Source */
> +	{ 0x000006C7, 0x0080 },    /* R1735  - OUT5LMIX Input 4 Volume */
> +	{ 0x000006C8, 0x0000 },    /* R1736  - OUT5RMIX Input 1 Source */
> +	{ 0x000006C9, 0x0080 },    /* R1737  - OUT5RMIX Input 1 Volume */
> +	{ 0x000006CA, 0x0000 },    /* R1738  - OUT5RMIX Input 2 Source */
> +	{ 0x000006CB, 0x0080 },    /* R1739  - OUT5RMIX Input 2 Volume */
> +	{ 0x000006CC, 0x0000 },    /* R1740  - OUT5RMIX Input 3 Source */
> +	{ 0x000006CD, 0x0080 },    /* R1741  - OUT5RMIX Input 3 Volume */
> +	{ 0x000006CE, 0x0000 },    /* R1742  - OUT5RMIX Input 4 Source */
> +	{ 0x000006CF, 0x0080 },    /* R1743  - OUT5RMIX Input 4 Volume */
> +	{ 0x00000700, 0x0000 },    /* R1792  - AIF1TX1MIX Input 1 Source */
> +	{ 0x00000701, 0x0080 },    /* R1793  - AIF1TX1MIX Input 1 Volume */
> +	{ 0x00000702, 0x0000 },    /* R1794  - AIF1TX1MIX Input 2 Source */
> +	{ 0x00000703, 0x0080 },    /* R1795  - AIF1TX1MIX Input 2 Volume */
> +	{ 0x00000704, 0x0000 },    /* R1796  - AIF1TX1MIX Input 3 Source */
> +	{ 0x00000705, 0x0080 },    /* R1797  - AIF1TX1MIX Input 3 Volume */
> +	{ 0x00000706, 0x0000 },    /* R1798  - AIF1TX1MIX Input 4 Source */
> +	{ 0x00000707, 0x0080 },    /* R1799  - AIF1TX1MIX Input 4 Volume */
> +	{ 0x00000708, 0x0000 },    /* R1800  - AIF1TX2MIX Input 1 Source */
> +	{ 0x00000709, 0x0080 },    /* R1801  - AIF1TX2MIX Input 1 Volume */
> +	{ 0x0000070A, 0x0000 },    /* R1802  - AIF1TX2MIX Input 2 Source */
> +	{ 0x0000070B, 0x0080 },    /* R1803  - AIF1TX2MIX Input 2 Volume */
> +	{ 0x0000070C, 0x0000 },    /* R1804  - AIF1TX2MIX Input 3 Source */
> +	{ 0x0000070D, 0x0080 },    /* R1805  - AIF1TX2MIX Input 3 Volume */
> +	{ 0x0000070E, 0x0000 },    /* R1806  - AIF1TX2MIX Input 4 Source */
> +	{ 0x0000070F, 0x0080 },    /* R1807  - AIF1TX2MIX Input 4 Volume */
> +	{ 0x00000710, 0x0000 },    /* R1808  - AIF1TX3MIX Input 1 Source */
> +	{ 0x00000711, 0x0080 },    /* R1809  - AIF1TX3MIX Input 1 Volume */
> +	{ 0x00000712, 0x0000 },    /* R1810  - AIF1TX3MIX Input 2 Source */
> +	{ 0x00000713, 0x0080 },    /* R1811  - AIF1TX3MIX Input 2 Volume */
> +	{ 0x00000714, 0x0000 },    /* R1812  - AIF1TX3MIX Input 3 Source */
> +	{ 0x00000715, 0x0080 },    /* R1813  - AIF1TX3MIX Input 3 Volume */
> +	{ 0x00000716, 0x0000 },    /* R1814  - AIF1TX3MIX Input 4 Source */
> +	{ 0x00000717, 0x0080 },    /* R1815  - AIF1TX3MIX Input 4 Volume */
> +	{ 0x00000718, 0x0000 },    /* R1816  - AIF1TX4MIX Input 1 Source */
> +	{ 0x00000719, 0x0080 },    /* R1817  - AIF1TX4MIX Input 1 Volume */
> +	{ 0x0000071A, 0x0000 },    /* R1818  - AIF1TX4MIX Input 2 Source */
> +	{ 0x0000071B, 0x0080 },    /* R1819  - AIF1TX4MIX Input 2 Volume */
> +	{ 0x0000071C, 0x0000 },    /* R1820  - AIF1TX4MIX Input 3 Source */
> +	{ 0x0000071D, 0x0080 },    /* R1821  - AIF1TX4MIX Input 3 Volume */
> +	{ 0x0000071E, 0x0000 },    /* R1822  - AIF1TX4MIX Input 4 Source */
> +	{ 0x0000071F, 0x0080 },    /* R1823  - AIF1TX4MIX Input 4 Volume */
> +	{ 0x00000720, 0x0000 },    /* R1824  - AIF1TX5MIX Input 1 Source */
> +	{ 0x00000721, 0x0080 },    /* R1825  - AIF1TX5MIX Input 1 Volume */
> +	{ 0x00000722, 0x0000 },    /* R1826  - AIF1TX5MIX Input 2 Source */
> +	{ 0x00000723, 0x0080 },    /* R1827  - AIF1TX5MIX Input 2 Volume */
> +	{ 0x00000724, 0x0000 },    /* R1828  - AIF1TX5MIX Input 3 Source */
> +	{ 0x00000725, 0x0080 },    /* R1829  - AIF1TX5MIX Input 3 Volume */
> +	{ 0x00000726, 0x0000 },    /* R1830  - AIF1TX5MIX Input 4 Source */
> +	{ 0x00000727, 0x0080 },    /* R1831  - AIF1TX5MIX Input 4 Volume */
> +	{ 0x00000728, 0x0000 },    /* R1832  - AIF1TX6MIX Input 1 Source */
> +	{ 0x00000729, 0x0080 },    /* R1833  - AIF1TX6MIX Input 1 Volume */
> +	{ 0x0000072A, 0x0000 },    /* R1834  - AIF1TX6MIX Input 2 Source */
> +	{ 0x0000072B, 0x0080 },    /* R1835  - AIF1TX6MIX Input 2 Volume */
> +	{ 0x0000072C, 0x0000 },    /* R1836  - AIF1TX6MIX Input 3 Source */
> +	{ 0x0000072D, 0x0080 },    /* R1837  - AIF1TX6MIX Input 3 Volume */
> +	{ 0x0000072E, 0x0000 },    /* R1838  - AIF1TX6MIX Input 4 Source */
> +	{ 0x0000072F, 0x0080 },    /* R1839  - AIF1TX6MIX Input 4 Volume */
> +	{ 0x00000740, 0x0000 },    /* R1856  - AIF2TX1MIX Input 1 Source */
> +	{ 0x00000741, 0x0080 },    /* R1857  - AIF2TX1MIX Input 1 Volume */
> +	{ 0x00000742, 0x0000 },    /* R1858  - AIF2TX1MIX Input 2 Source */
> +	{ 0x00000743, 0x0080 },    /* R1859  - AIF2TX1MIX Input 2 Volume */
> +	{ 0x00000744, 0x0000 },    /* R1860  - AIF2TX1MIX Input 3 Source */
> +	{ 0x00000745, 0x0080 },    /* R1861  - AIF2TX1MIX Input 3 Volume */
> +	{ 0x00000746, 0x0000 },    /* R1862  - AIF2TX1MIX Input 4 Source */
> +	{ 0x00000747, 0x0080 },    /* R1863  - AIF2TX1MIX Input 4 Volume */
> +	{ 0x00000748, 0x0000 },    /* R1864  - AIF2TX2MIX Input 1 Source */
> +	{ 0x00000749, 0x0080 },    /* R1865  - AIF2TX2MIX Input 1 Volume */
> +	{ 0x0000074A, 0x0000 },    /* R1866  - AIF2TX2MIX Input 2 Source */
> +	{ 0x0000074B, 0x0080 },    /* R1867  - AIF2TX2MIX Input 2 Volume */
> +	{ 0x0000074C, 0x0000 },    /* R1868  - AIF2TX2MIX Input 3 Source */
> +	{ 0x0000074D, 0x0080 },    /* R1869  - AIF2TX2MIX Input 3 Volume */
> +	{ 0x0000074E, 0x0000 },    /* R1870  - AIF2TX2MIX Input 4 Source */
> +	{ 0x0000074F, 0x0080 },    /* R1871  - AIF2TX2MIX Input 4 Volume */
> +	{ 0x00000750, 0x0000 },    /* R1872  - AIF2TX3MIX Input 1 Source */
> +	{ 0x00000751, 0x0080 },    /* R1873  - AIF2TX3MIX Input 1 Volume */
> +	{ 0x00000752, 0x0000 },    /* R1874  - AIF2TX3MIX Input 2 Source */
> +	{ 0x00000753, 0x0080 },    /* R1875  - AIF2TX3MIX Input 2 Volume */
> +	{ 0x00000754, 0x0000 },    /* R1876  - AIF2TX3MIX Input 3 Source */
> +	{ 0x00000755, 0x0080 },    /* R1877  - AIF2TX3MIX Input 3 Volume */
> +	{ 0x00000756, 0x0000 },    /* R1878  - AIF2TX3MIX Input 4 Source */
> +	{ 0x00000757, 0x0080 },    /* R1879  - AIF2TX3MIX Input 4 Volume */
> +	{ 0x00000758, 0x0000 },    /* R1880  - AIF2TX4MIX Input 1 Source */
> +	{ 0x00000759, 0x0080 },    /* R1881  - AIF2TX4MIX Input 1 Volume */
> +	{ 0x0000075A, 0x0000 },    /* R1882  - AIF2TX4MIX Input 2 Source */
> +	{ 0x0000075B, 0x0080 },    /* R1883  - AIF2TX4MIX Input 2 Volume */
> +	{ 0x0000075C, 0x0000 },    /* R1884  - AIF2TX4MIX Input 3 Source */
> +	{ 0x0000075D, 0x0080 },    /* R1885  - AIF2TX4MIX Input 3 Volume */
> +	{ 0x0000075E, 0x0000 },    /* R1886  - AIF2TX4MIX Input 4 Source */
> +	{ 0x0000075F, 0x0080 },    /* R1887  - AIF2TX4MIX Input 4 Volume */
> +	{ 0x00000760, 0x0000 },    /* R1888  - AIF2TX5MIX Input 1 Source */
> +	{ 0x00000761, 0x0080 },    /* R1889  - AIF2TX5MIX Input 1 Volume */
> +	{ 0x00000762, 0x0000 },    /* R1890  - AIF2TX5MIX Input 2 Source */
> +	{ 0x00000763, 0x0080 },    /* R1891  - AIF2TX5MIX Input 2 Volume */
> +	{ 0x00000764, 0x0000 },    /* R1892  - AIF2TX5MIX Input 3 Source */
> +	{ 0x00000765, 0x0080 },    /* R1893  - AIF2TX5MIX Input 3 Volume */
> +	{ 0x00000766, 0x0000 },    /* R1894  - AIF2TX5MIX Input 4 Source */
> +	{ 0x00000767, 0x0080 },    /* R1895  - AIF2TX5MIX Input 4 Volume */
> +	{ 0x00000768, 0x0000 },    /* R1896  - AIF2TX6MIX Input 1 Source */
> +	{ 0x00000769, 0x0080 },    /* R1897  - AIF2TX6MIX Input 1 Volume */
> +	{ 0x0000076A, 0x0000 },    /* R1898  - AIF2TX6MIX Input 2 Source */
> +	{ 0x0000076B, 0x0080 },    /* R1899  - AIF2TX6MIX Input 2 Volume */
> +	{ 0x0000076C, 0x0000 },    /* R1900  - AIF2TX6MIX Input 3 Source */
> +	{ 0x0000076D, 0x0080 },    /* R1901  - AIF2TX6MIX Input 3 Volume */
> +	{ 0x0000076E, 0x0000 },    /* R1902  - AIF2TX6MIX Input 4 Source */
> +	{ 0x0000076F, 0x0080 },    /* R1903  - AIF2TX6MIX Input 4 Volume */
> +	{ 0x00000780, 0x0000 },    /* R1920  - AIF3TX1MIX Input 1 Source */
> +	{ 0x00000781, 0x0080 },    /* R1921  - AIF3TX1MIX Input 1 Volume */
> +	{ 0x00000782, 0x0000 },    /* R1922  - AIF3TX1MIX Input 2 Source */
> +	{ 0x00000783, 0x0080 },    /* R1923  - AIF3TX1MIX Input 2 Volume */
> +	{ 0x00000784, 0x0000 },    /* R1924  - AIF3TX1MIX Input 3 Source */
> +	{ 0x00000785, 0x0080 },    /* R1925  - AIF3TX1MIX Input 3 Volume */
> +	{ 0x00000786, 0x0000 },    /* R1926  - AIF3TX1MIX Input 4 Source */
> +	{ 0x00000787, 0x0080 },    /* R1927  - AIF3TX1MIX Input 4 Volume */
> +	{ 0x00000788, 0x0000 },    /* R1928  - AIF3TX2MIX Input 1 Source */
> +	{ 0x00000789, 0x0080 },    /* R1929  - AIF3TX2MIX Input 1 Volume */
> +	{ 0x0000078A, 0x0000 },    /* R1930  - AIF3TX2MIX Input 2 Source */
> +	{ 0x0000078B, 0x0080 },    /* R1931  - AIF3TX2MIX Input 2 Volume */
> +	{ 0x0000078C, 0x0000 },    /* R1932  - AIF3TX2MIX Input 3 Source */
> +	{ 0x0000078D, 0x0080 },    /* R1933  - AIF3TX2MIX Input 3 Volume */
> +	{ 0x0000078E, 0x0000 },    /* R1934  - AIF3TX2MIX Input 4 Source */
> +	{ 0x0000078F, 0x0080 },    /* R1935  - AIF3TX2MIX Input 4 Volume */
> +	{ 0x000007C0, 0x0000 },    /* R1984  - SLIMTX1MIX Input 1 Source */
> +	{ 0x000007C1, 0x0080 },    /* R1985  - SLIMTX1MIX Input 1 Volume */
> +	{ 0x000007C8, 0x0000 },    /* R1992  - SLIMTX2MIX Input 1 Source */
> +	{ 0x000007C9, 0x0080 },    /* R1993  - SLIMTX2MIX Input 1 Volume */
> +	{ 0x000007D0, 0x0000 },    /* R2000  - SLIMTX3MIX Input 1 Source */
> +	{ 0x000007D1, 0x0080 },    /* R2001  - SLIMTX3MIX Input 1 Volume */
> +	{ 0x000007D8, 0x0000 },    /* R2008  - SLIMTX4MIX Input 1 Source */
> +	{ 0x000007D9, 0x0080 },    /* R2009  - SLIMTX4MIX Input 1 Volume */
> +	{ 0x000007E0, 0x0000 },    /* R2016  - SLIMTX5MIX Input 1 Source */
> +	{ 0x000007E1, 0x0080 },    /* R2017  - SLIMTX5MIX Input 1 Volume */
> +	{ 0x000007E8, 0x0000 },    /* R2024  - SLIMTX6MIX Input 1 Source */
> +	{ 0x000007E9, 0x0080 },    /* R2025  - SLIMTX6MIX Input 1 Volume */
> +	{ 0x00000800, 0x0000 },    /* R2048  - SPDIF1TX1MIX Input 1 Source */
> +	{ 0x00000801, 0x0080 },    /* R2049  - SPDIF1TX1MIX Input 1 Volume */
> +	{ 0x00000808, 0x0000 },    /* R2056  - SPDIF1TX2MIX Input 1 Source */
> +	{ 0x00000809, 0x0080 },    /* R2057  - SPDIF1TX2MIX Input 1 Volume */
> +	{ 0x00000880, 0x0000 },    /* R2176  - EQ1MIX Input 1 Source */
> +	{ 0x00000881, 0x0080 },    /* R2177  - EQ1MIX Input 1 Volume */
> +	{ 0x00000888, 0x0000 },    /* R2184  - EQ2MIX Input 1 Source */
> +	{ 0x00000889, 0x0080 },    /* R2185  - EQ2MIX Input 1 Volume */
> +	{ 0x00000890, 0x0000 },    /* R2192  - EQ3MIX Input 1 Source */
> +	{ 0x00000891, 0x0080 },    /* R2193  - EQ3MIX Input 1 Volume */
> +	{ 0x00000898, 0x0000 },    /* R2200  - EQ4MIX Input 1 Source */
> +	{ 0x00000899, 0x0080 },    /* R2201  - EQ4MIX Input 1 Volume */
> +	{ 0x000008C0, 0x0000 },    /* R2240  - DRC1LMIX Input 1 Source */
> +	{ 0x000008C1, 0x0080 },    /* R2241  - DRC1LMIX Input 1 Volume */
> +	{ 0x000008C8, 0x0000 },    /* R2248  - DRC1RMIX Input 1 Source */
> +	{ 0x000008C9, 0x0080 },    /* R2249  - DRC1RMIX Input 1 Volume */
> +	{ 0x00000900, 0x0000 },    /* R2304  - HPLP1MIX Input 1 Source */
> +	{ 0x00000901, 0x0080 },    /* R2305  - HPLP1MIX Input 1 Volume */
> +	{ 0x00000902, 0x0000 },    /* R2306  - HPLP1MIX Input 2 Source */
> +	{ 0x00000903, 0x0080 },    /* R2307  - HPLP1MIX Input 2 Volume */
> +	{ 0x00000904, 0x0000 },    /* R2308  - HPLP1MIX Input 3 Source */
> +	{ 0x00000905, 0x0080 },    /* R2309  - HPLP1MIX Input 3 Volume */
> +	{ 0x00000906, 0x0000 },    /* R2310  - HPLP1MIX Input 4 Source */
> +	{ 0x00000907, 0x0080 },    /* R2311  - HPLP1MIX Input 4 Volume */
> +	{ 0x00000908, 0x0000 },    /* R2312  - HPLP2MIX Input 1 Source */
> +	{ 0x00000909, 0x0080 },    /* R2313  - HPLP2MIX Input 1 Volume */
> +	{ 0x0000090A, 0x0000 },    /* R2314  - HPLP2MIX Input 2 Source */
> +	{ 0x0000090B, 0x0080 },    /* R2315  - HPLP2MIX Input 2 Volume */
> +	{ 0x0000090C, 0x0000 },    /* R2316  - HPLP2MIX Input 3 Source */
> +	{ 0x0000090D, 0x0080 },    /* R2317  - HPLP2MIX Input 3 Volume */
> +	{ 0x0000090E, 0x0000 },    /* R2318  - HPLP2MIX Input 4 Source */
> +	{ 0x0000090F, 0x0080 },    /* R2319  - HPLP2MIX Input 4 Volume */
> +	{ 0x00000910, 0x0000 },    /* R2320  - HPLP3MIX Input 1 Source */
> +	{ 0x00000911, 0x0080 },    /* R2321  - HPLP3MIX Input 1 Volume */
> +	{ 0x00000912, 0x0000 },    /* R2322  - HPLP3MIX Input 2 Source */
> +	{ 0x00000913, 0x0080 },    /* R2323  - HPLP3MIX Input 2 Volume */
> +	{ 0x00000914, 0x0000 },    /* R2324  - HPLP3MIX Input 3 Source */
> +	{ 0x00000915, 0x0080 },    /* R2325  - HPLP3MIX Input 3 Volume */
> +	{ 0x00000916, 0x0000 },    /* R2326  - HPLP3MIX Input 4 Source */
> +	{ 0x00000917, 0x0080 },    /* R2327  - HPLP3MIX Input 4 Volume */
> +	{ 0x00000918, 0x0000 },    /* R2328  - HPLP4MIX Input 1 Source */
> +	{ 0x00000919, 0x0080 },    /* R2329  - HPLP4MIX Input 1 Volume */
> +	{ 0x0000091A, 0x0000 },    /* R2330  - HPLP4MIX Input 2 Source */
> +	{ 0x0000091B, 0x0080 },    /* R2331  - HPLP4MIX Input 2 Volume */
> +	{ 0x0000091C, 0x0000 },    /* R2332  - HPLP4MIX Input 3 Source */
> +	{ 0x0000091D, 0x0080 },    /* R2333  - HPLP4MIX Input 3 Volume */
> +	{ 0x0000091E, 0x0000 },    /* R2334  - HPLP4MIX Input 4 Source */
> +	{ 0x0000091F, 0x0080 },    /* R2335  - HPLP4MIX Input 4 Volume */
> +	{ 0x00000A80, 0x0000 },    /* R2688  - ASRC1LMIX Input 1 Source */
> +	{ 0x00000A88, 0x0000 },    /* R2696  - ASRC1RMIX Input 1 Source */
> +	{ 0x00000A90, 0x0000 },    /* R2704  - ASRC2LMIX Input 1 Source */
> +	{ 0x00000A98, 0x0000 },    /* R2712  - ASRC2RMIX Input 1 Source */
> +	{ 0x00000B00, 0x0000 },    /* R2816  - ISRC1DEC1MIX Input 1 Source */
> +	{ 0x00000B08, 0x0000 },    /* R2824  - ISRC1DEC2MIX Input 1 Source */
> +	{ 0x00000B10, 0x0000 },    /* R2832  - ISRC1DEC3MIX Input 1 Source */
> +	{ 0x00000B18, 0x0000 },    /* R2840  - ISRC1DEC4MIX Input 1 Source */
> +	{ 0x00000B20, 0x0000 },    /* R2848  - ISRC1INT1MIX Input 1 Source */
> +	{ 0x00000B28, 0x0000 },    /* R2856  - ISRC1INT2MIX Input 1 Source */
> +	{ 0x00000B30, 0x0000 },    /* R2864  - ISRC1INT3MIX Input 1 Source */
> +	{ 0x00000B38, 0x0000 },    /* R2872  - ISRC1INT4MIX Input 1 Source */
> +	{ 0x00000B40, 0x0000 },    /* R2880  - ISRC2DEC1MIX Input 1 Source */
> +	{ 0x00000B48, 0x0000 },    /* R2888  - ISRC2DEC2MIX Input 1 Source */
> +	{ 0x00000B60, 0x0000 },    /* R2912  - ISRC2INT1MIX Input 1 Source */
> +	{ 0x00000B68, 0x0000 },    /* R2920  - ISRC2INT2MIX Input 1 Source */
> +	{ 0x00000C00, 0xA101 },    /* R3072  - GPIO1 CTRL */
> +	{ 0x00000C01, 0xA101 },    /* R3073  - GPIO2 CTRL */
> +	{ 0x00000C02, 0xA101 },    /* R3074  - GPIO3 CTRL */
> +	{ 0x00000C03, 0xA101 },    /* R3075  - GPIO4 CTRL */
> +	{ 0x00000C04, 0xA101 },    /* R3076  - GPIO5 CTRL */
> +	{ 0x00000C0F, 0x0400 },    /* R3087  - IRQ CTRL 1 */
> +	{ 0x00000C10, 0x1000 },    /* R3088  - GPIO Debounce Config */
> +	{ 0x00000C18, 0x0000 },    /* R3096  - GP Switch 1 */
> +	{ 0x00000C20, 0x8002 },    /* R3104  - Misc Pad Ctrl 1 */
> +	{ 0x00000C21, 0x8001 },    /* R3105  - Misc Pad Ctrl 2 */
> +	{ 0x00000C22, 0x0000 },    /* R3106  - Misc Pad Ctrl 3 */
> +	{ 0x00000C23, 0x0000 },    /* R3107  - Misc Pad Ctrl 4 */
> +	{ 0x00000C24, 0x0000 },    /* R3108  - Misc Pad Ctrl 5 */
> +	{ 0x00000C25, 0x0000 },    /* R3109  - Misc Pad Ctrl 6 */
> +	{ 0x00000D08, 0xFFFF },    /* R3336  - Interrupt Status 1 Mask */
> +	{ 0x00000D09, 0xFFFF },    /* R3337  - Interrupt Status 2 Mask */
> +	{ 0x00000D0A, 0xFFFF },    /* R3338  - Interrupt Status 3 Mask */
> +	{ 0x00000D0B, 0xFFFF },    /* R3339  - Interrupt Status 4 Mask */
> +	{ 0x00000D0C, 0xFEFF },    /* R3340  - Interrupt Status 5 Mask */
> +	{ 0x00000D0F, 0x0000 },    /* R3343  - Interrupt Control */
> +	{ 0x00000D18, 0xFFFF },    /* R3352  - IRQ2 Status 1 Mask */
> +	{ 0x00000D19, 0xFFFF },    /* R3353  - IRQ2 Status 2 Mask */
> +	{ 0x00000D1A, 0xFFFF },    /* R3354  - IRQ2 Status 3 Mask */
> +	{ 0x00000D1B, 0xFFFF },    /* R3355  - IRQ2 Status 4 Mask */
> +	{ 0x00000D1C, 0xFEFF },    /* R3356  - IRQ2 Status 5 Mask */
> +	{ 0x00000D1D, 0xFFFF },    /* R3357  - IRQ2 Status 6 Mask */
> +	{ 0x00000D1F, 0x0000 },    /* R3359  - IRQ2 Control */
> +	{ 0x00000D53, 0xFFFF },    /* R3411  - AOD IRQ Mask IRQ1 */
> +	{ 0x00000D54, 0xFFFF },    /* R3412  - AOD IRQ Mask IRQ2 */
> +	{ 0x00000D56, 0x0000 },    /* R3414  - Jack detect debounce */
> +	{ 0x00000E00, 0x0000 },    /* R3584  - FX_Ctrl1 */
> +	{ 0x00000E01, 0x0000 },    /* R3585  - FX_Ctrl2 */
> +	{ 0x00000E10, 0x6318 },    /* R3600  - EQ1_1 */
> +	{ 0x00000E11, 0x6300 },    /* R3601  - EQ1_2 */
> +	{ 0x00000E12, 0x0FC8 },    /* R3602  - EQ1_3 */
> +	{ 0x00000E13, 0x03FE },    /* R3603  - EQ1_4 */
> +	{ 0x00000E14, 0x00E0 },    /* R3604  - EQ1_5 */
> +	{ 0x00000E15, 0x1EC4 },    /* R3605  - EQ1_6 */
> +	{ 0x00000E16, 0xF136 },    /* R3606  - EQ1_7 */
> +	{ 0x00000E17, 0x0409 },    /* R3607  - EQ1_8 */
> +	{ 0x00000E18, 0x04CC },    /* R3608  - EQ1_9 */
> +	{ 0x00000E19, 0x1C9B },    /* R3609  - EQ1_10 */
> +	{ 0x00000E1A, 0xF337 },    /* R3610  - EQ1_11 */
> +	{ 0x00000E1B, 0x040B },    /* R3611  - EQ1_12 */
> +	{ 0x00000E1C, 0x0CBB },    /* R3612  - EQ1_13 */
> +	{ 0x00000E1D, 0x16F8 },    /* R3613  - EQ1_14 */
> +	{ 0x00000E1E, 0xF7D9 },    /* R3614  - EQ1_15 */
> +	{ 0x00000E1F, 0x040A },    /* R3615  - EQ1_16 */
> +	{ 0x00000E20, 0x1F14 },    /* R3616  - EQ1_17 */
> +	{ 0x00000E21, 0x058C },    /* R3617  - EQ1_18 */
> +	{ 0x00000E22, 0x0563 },    /* R3618  - EQ1_19 */
> +	{ 0x00000E23, 0x4000 },    /* R3619  - EQ1_20 */
> +	{ 0x00000E24, 0x0B75 },    /* R3620  - EQ1_21 */
> +	{ 0x00000E26, 0x6318 },    /* R3622  - EQ2_1 */
> +	{ 0x00000E27, 0x6300 },    /* R3623  - EQ2_2 */
> +	{ 0x00000E28, 0x0FC8 },    /* R3624  - EQ2_3 */
> +	{ 0x00000E29, 0x03FE },    /* R3625  - EQ2_4 */
> +	{ 0x00000E2A, 0x00E0 },    /* R3626  - EQ2_5 */
> +	{ 0x00000E2B, 0x1EC4 },    /* R3627  - EQ2_6 */
> +	{ 0x00000E2C, 0xF136 },    /* R3628  - EQ2_7 */
> +	{ 0x00000E2D, 0x0409 },    /* R3629  - EQ2_8 */
> +	{ 0x00000E2E, 0x04CC },    /* R3630  - EQ2_9 */
> +	{ 0x00000E2F, 0x1C9B },    /* R3631  - EQ2_10 */
> +	{ 0x00000E30, 0xF337 },    /* R3632  - EQ2_11 */
> +	{ 0x00000E31, 0x040B },    /* R3633  - EQ2_12 */
> +	{ 0x00000E32, 0x0CBB },    /* R3634  - EQ2_13 */
> +	{ 0x00000E33, 0x16F8 },    /* R3635  - EQ2_14 */
> +	{ 0x00000E34, 0xF7D9 },    /* R3636  - EQ2_15 */
> +	{ 0x00000E35, 0x040A },    /* R3637  - EQ2_16 */
> +	{ 0x00000E36, 0x1F14 },    /* R3638  - EQ2_17 */
> +	{ 0x00000E37, 0x058C },    /* R3639  - EQ2_18 */
> +	{ 0x00000E38, 0x0563 },    /* R3640  - EQ2_19 */
> +	{ 0x00000E39, 0x4000 },    /* R3641  - EQ2_20 */
> +	{ 0x00000E3A, 0x0B75 },    /* R3642  - EQ2_21 */
> +	{ 0x00000E3C, 0x6318 },    /* R3644  - EQ3_1 */
> +	{ 0x00000E3D, 0x6300 },    /* R3645  - EQ3_2 */
> +	{ 0x00000E3E, 0x0FC8 },    /* R3646  - EQ3_3 */
> +	{ 0x00000E3F, 0x03FE },    /* R3647  - EQ3_4 */
> +	{ 0x00000E40, 0x00E0 },    /* R3648  - EQ3_5 */
> +	{ 0x00000E41, 0x1EC4 },    /* R3649  - EQ3_6 */
> +	{ 0x00000E42, 0xF136 },    /* R3650  - EQ3_7 */
> +	{ 0x00000E43, 0x0409 },    /* R3651  - EQ3_8 */
> +	{ 0x00000E44, 0x04CC },    /* R3652  - EQ3_9 */
> +	{ 0x00000E45, 0x1C9B },    /* R3653  - EQ3_10 */
> +	{ 0x00000E46, 0xF337 },    /* R3654  - EQ3_11 */
> +	{ 0x00000E47, 0x040B },    /* R3655  - EQ3_12 */
> +	{ 0x00000E48, 0x0CBB },    /* R3656  - EQ3_13 */
> +	{ 0x00000E49, 0x16F8 },    /* R3657  - EQ3_14 */
> +	{ 0x00000E4A, 0xF7D9 },    /* R3658  - EQ3_15 */
> +	{ 0x00000E4B, 0x040A },    /* R3659  - EQ3_16 */
> +	{ 0x00000E4C, 0x1F14 },    /* R3660  - EQ3_17 */
> +	{ 0x00000E4D, 0x058C },    /* R3661  - EQ3_18 */
> +	{ 0x00000E4E, 0x0563 },    /* R3662  - EQ3_19 */
> +	{ 0x00000E4F, 0x4000 },    /* R3663  - EQ3_20 */
> +	{ 0x00000E50, 0x0B75 },    /* R3664  - EQ3_21 */
> +	{ 0x00000E52, 0x6318 },    /* R3666  - EQ4_1 */
> +	{ 0x00000E53, 0x6300 },    /* R3667  - EQ4_2 */
> +	{ 0x00000E54, 0x0FC8 },    /* R3668  - EQ4_3 */
> +	{ 0x00000E55, 0x03FE },    /* R3669  - EQ4_4 */
> +	{ 0x00000E56, 0x00E0 },    /* R3670  - EQ4_5 */
> +	{ 0x00000E57, 0x1EC4 },    /* R3671  - EQ4_6 */
> +	{ 0x00000E58, 0xF136 },    /* R3672  - EQ4_7 */
> +	{ 0x00000E59, 0x0409 },    /* R3673  - EQ4_8 */
> +	{ 0x00000E5A, 0x04CC },    /* R3674  - EQ4_9 */
> +	{ 0x00000E5B, 0x1C9B },    /* R3675  - EQ4_10 */
> +	{ 0x00000E5C, 0xF337 },    /* R3676  - EQ4_11 */
> +	{ 0x00000E5D, 0x040B },    /* R3677  - EQ4_12 */
> +	{ 0x00000E5E, 0x0CBB },    /* R3678  - EQ4_13 */
> +	{ 0x00000E5F, 0x16F8 },    /* R3679  - EQ4_14 */
> +	{ 0x00000E60, 0xF7D9 },    /* R3680  - EQ4_15 */
> +	{ 0x00000E61, 0x040A },    /* R3681  - EQ4_16 */
> +	{ 0x00000E62, 0x1F14 },    /* R3682  - EQ4_17 */
> +	{ 0x00000E63, 0x058C },    /* R3683  - EQ4_18 */
> +	{ 0x00000E64, 0x0563 },    /* R3684  - EQ4_19 */
> +	{ 0x00000E65, 0x4000 },    /* R3685  - EQ4_20 */
> +	{ 0x00000E66, 0x0B75 },    /* R3686  - EQ4_21 */
> +	{ 0x00000E80, 0x0018 },    /* R3712  - DRC1 ctrl1 */
> +	{ 0x00000E81, 0x0933 },    /* R3713  - DRC1 ctrl2 */
> +	{ 0x00000E82, 0x0018 },    /* R3714  - DRC1 ctrl3 */
> +	{ 0x00000E83, 0x0000 },    /* R3715  - DRC1 ctrl4 */
> +	{ 0x00000E84, 0x0000 },    /* R3716  - DRC1 ctrl5 */
> +	{ 0x00000EC0, 0x0000 },    /* R3776  - HPLPF1_1 */
> +	{ 0x00000EC1, 0x0000 },    /* R3777  - HPLPF1_2 */
> +	{ 0x00000EC4, 0x0000 },    /* R3780  - HPLPF2_1 */
> +	{ 0x00000EC5, 0x0000 },    /* R3781  - HPLPF2_2 */
> +	{ 0x00000EC8, 0x0000 },    /* R3784  - HPLPF3_1 */
> +	{ 0x00000EC9, 0x0000 },    /* R3785  - HPLPF3_2 */
> +	{ 0x00000ECC, 0x0000 },    /* R3788  - HPLPF4_1 */
> +	{ 0x00000ECD, 0x0000 },    /* R3789  - HPLPF4_2 */
> +	{ 0x00000EE0, 0x0000 },    /* R3808  - ASRC_ENABLE */
> +	{ 0x00000EE2, 0x0000 },    /* R3810  - ASRC_RATE1 */
> +	{ 0x00000EE3, 0x4000 },    /* R3811  - ASRC_RATE2 */
> +	{ 0x00000EF0, 0x0000 },    /* R3824  - ISRC 1 CTRL 1 */
> +	{ 0x00000EF1, 0x0001 },    /* R3825  - ISRC 1 CTRL 2 */
> +	{ 0x00000EF2, 0x0000 },    /* R3826  - ISRC 1 CTRL 3 */
> +	{ 0x00000EF3, 0x0000 },    /* R3827  - ISRC 2 CTRL 1 */
> +	{ 0x00000EF4, 0x0001 },    /* R3828  - ISRC 2 CTRL 2 */
> +	{ 0x00000EF5, 0x0000 },    /* R3829  - ISRC 2 CTRL 3 */
> +	{ 0x00001700, 0x0000 },    /* R5888  - FRF_COEFF_1 */
> +	{ 0x00001701, 0x0000 },    /* R5889  - FRF_COEFF_2 */
> +	{ 0x00001702, 0x0000 },    /* R5890  - FRF_COEFF_3 */
> +	{ 0x00001703, 0x0000 },    /* R5891  - FRF_COEFF_4 */
> +	{ 0x00001704, 0x0000 },    /* R5892  - DAC_COMP_1 */
> +	{ 0x00001705, 0x0000 },    /* R5893  - DAC_COMP_2 */
> +};
> +
> +static bool wm8998_readable_register(struct device *dev, unsigned int reg)
> +{
> +	switch (reg) {
> +	case ARIZONA_SOFTWARE_RESET:
> +	case ARIZONA_DEVICE_REVISION:
> +	case ARIZONA_CTRL_IF_SPI_CFG_1:
> +	case ARIZONA_CTRL_IF_I2C1_CFG_1:
> +	case ARIZONA_CTRL_IF_I2C1_CFG_2:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_0:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_1:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_2:
> +	case ARIZONA_TONE_GENERATOR_1:
> +	case ARIZONA_TONE_GENERATOR_2:
> +	case ARIZONA_TONE_GENERATOR_3:
> +	case ARIZONA_TONE_GENERATOR_4:
> +	case ARIZONA_TONE_GENERATOR_5:
> +	case ARIZONA_PWM_DRIVE_1:
> +	case ARIZONA_PWM_DRIVE_2:
> +	case ARIZONA_PWM_DRIVE_3:
> +	case ARIZONA_WAKE_CONTROL:
> +	case ARIZONA_SEQUENCE_CONTROL:
> +	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1:
> +	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2:
> +	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3:
> +	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5:
> +	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6:
> +	case ARIZONA_HAPTICS_CONTROL_1:
> +	case ARIZONA_HAPTICS_CONTROL_2:
> +	case ARIZONA_HAPTICS_PHASE_1_INTENSITY:
> +	case ARIZONA_HAPTICS_PHASE_1_DURATION:
> +	case ARIZONA_HAPTICS_PHASE_2_INTENSITY:
> +	case ARIZONA_HAPTICS_PHASE_2_DURATION:
> +	case ARIZONA_HAPTICS_PHASE_3_INTENSITY:
> +	case ARIZONA_HAPTICS_PHASE_3_DURATION:
> +	case ARIZONA_HAPTICS_STATUS:
> +	case ARIZONA_CLOCK_32K_1:
> +	case ARIZONA_SYSTEM_CLOCK_1:
> +	case ARIZONA_SAMPLE_RATE_1:
> +	case ARIZONA_SAMPLE_RATE_2:
> +	case ARIZONA_SAMPLE_RATE_3:
> +	case ARIZONA_SAMPLE_RATE_1_STATUS:
> +	case ARIZONA_SAMPLE_RATE_2_STATUS:
> +	case ARIZONA_SAMPLE_RATE_3_STATUS:
> +	case ARIZONA_ASYNC_CLOCK_1:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_1:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_2:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS:
> +	case ARIZONA_OUTPUT_SYSTEM_CLOCK:
> +	case ARIZONA_OUTPUT_ASYNC_CLOCK:
> +	case ARIZONA_RATE_ESTIMATOR_1:
> +	case ARIZONA_RATE_ESTIMATOR_2:
> +	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_FLL1_CONTROL_4:
> +	case ARIZONA_FLL1_CONTROL_5:
> +	case ARIZONA_FLL1_CONTROL_6:
> +	case ARIZONA_FLL1_CONTROL_7:
> +	case ARIZONA_FLL1_LOOP_FILTER_TEST_1:
> +	case ARIZONA_FLL1_NCO_TEST_0:
> +	case ARIZONA_FLL1_SYNCHRONISER_1:
> +	case ARIZONA_FLL1_SYNCHRONISER_2:
> +	case ARIZONA_FLL1_SYNCHRONISER_3:
> +	case ARIZONA_FLL1_SYNCHRONISER_4:
> +	case ARIZONA_FLL1_SYNCHRONISER_5:
> +	case ARIZONA_FLL1_SYNCHRONISER_6:
> +	case ARIZONA_FLL1_SYNCHRONISER_7:
> +	case ARIZONA_FLL1_SPREAD_SPECTRUM:
> +	case ARIZONA_FLL1_GPIO_CLOCK:
> +	case ARIZONA_FLL2_CONTROL_1:
> +	case ARIZONA_FLL2_CONTROL_2:
> +	case ARIZONA_FLL2_CONTROL_3:
> +	case ARIZONA_FLL2_CONTROL_4:
> +	case ARIZONA_FLL2_CONTROL_5:
> +	case ARIZONA_FLL2_CONTROL_6:
> +	case ARIZONA_FLL2_CONTROL_7:
> +	case ARIZONA_FLL2_LOOP_FILTER_TEST_1:
> +	case ARIZONA_FLL2_NCO_TEST_0:
> +	case ARIZONA_FLL2_SYNCHRONISER_1:
> +	case ARIZONA_FLL2_SYNCHRONISER_2:
> +	case ARIZONA_FLL2_SYNCHRONISER_3:
> +	case ARIZONA_FLL2_SYNCHRONISER_4:
> +	case ARIZONA_FLL2_SYNCHRONISER_5:
> +	case ARIZONA_FLL2_SYNCHRONISER_6:
> +	case ARIZONA_FLL2_SYNCHRONISER_7:
> +	case ARIZONA_FLL2_SPREAD_SPECTRUM:
> +	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:
> +	case ARIZONA_MIC_BIAS_CTRL_3:
> +	case ARIZONA_ACCESSORY_DETECT_MODE_1:
> +	case ARIZONA_HEADPHONE_DETECT_1:
> +	case ARIZONA_HEADPHONE_DETECT_2:
> +	case ARIZONA_MICD_CLAMP_CONTROL:
> +	case ARIZONA_MIC_DETECT_1:
> +	case ARIZONA_MIC_DETECT_2:
> +	case ARIZONA_MIC_DETECT_3:
> +	case ARIZONA_MIC_DETECT_4:
> +	case ARIZONA_MIC_DETECT_LEVEL_1:
> +	case ARIZONA_MIC_DETECT_LEVEL_2:
> +	case ARIZONA_MIC_DETECT_LEVEL_3:
> +	case ARIZONA_MIC_DETECT_LEVEL_4:
> +	case ARIZONA_ISOLATION_CONTROL:
> +	case ARIZONA_JACK_DETECT_ANALOGUE:
> +	case ARIZONA_INPUT_ENABLES:
> +	case ARIZONA_INPUT_ENABLES_STATUS:
> +	case ARIZONA_INPUT_RATE:
> +	case ARIZONA_INPUT_VOLUME_RAMP:
> +	case ARIZONA_HPF_CONTROL:
> +	case ARIZONA_IN1L_CONTROL:
> +	case ARIZONA_ADC_DIGITAL_VOLUME_1L:
> +	case ARIZONA_DMIC1L_CONTROL:
> +	case ARIZONA_IN1R_CONTROL:
> +	case ARIZONA_ADC_DIGITAL_VOLUME_1R:
> +	case ARIZONA_DMIC1R_CONTROL:
> +	case ARIZONA_IN2L_CONTROL:
> +	case ARIZONA_ADC_DIGITAL_VOLUME_2L:
> +	case ARIZONA_DMIC2L_CONTROL:
> +	case ARIZONA_OUTPUT_ENABLES_1:
> +	case ARIZONA_OUTPUT_STATUS_1:
> +	case ARIZONA_RAW_OUTPUT_STATUS_1:
> +	case ARIZONA_OUTPUT_RATE_1:
> +	case ARIZONA_OUTPUT_VOLUME_RAMP:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_1L:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_1L:
> +	case ARIZONA_NOISE_GATE_SELECT_1L:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_1R:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_1R:
> +	case ARIZONA_NOISE_GATE_SELECT_1R:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_2L:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_2L:
> +	case ARIZONA_NOISE_GATE_SELECT_2L:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_2R:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_2R:
> +	case ARIZONA_NOISE_GATE_SELECT_2R:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_3L:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_3L:
> +	case ARIZONA_NOISE_GATE_SELECT_3L:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_4L:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_4L:
> +	case ARIZONA_NOISE_GATE_SELECT_4L:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_4R:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_4R:
> +	case ARIZONA_NOISE_GATE_SELECT_4R:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_5L:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_5L:
> +	case ARIZONA_NOISE_GATE_SELECT_5L:
> +	case ARIZONA_OUTPUT_PATH_CONFIG_5R:
> +	case ARIZONA_DAC_DIGITAL_VOLUME_5R:
> +	case ARIZONA_NOISE_GATE_SELECT_5R:
> +	case ARIZONA_DRE_ENABLE:
> +	case ARIZONA_DRE_CONTROL_1:
> +	case ARIZONA_DRE_CONTROL_2:
> +	case ARIZONA_DRE_CONTROL_3:
> +	case ARIZONA_EDRE_ENABLE:
> +	case ARIZONA_DAC_AEC_CONTROL_1:
> +	case ARIZONA_DAC_AEC_CONTROL_2:
> +	case ARIZONA_NOISE_GATE_CONTROL:
> +	case ARIZONA_PDM_SPK1_CTRL_1:
> +	case ARIZONA_PDM_SPK1_CTRL_2:
> +	case ARIZONA_HP_TEST_CTRL_13:
> +	case ARIZONA_AIF1_BCLK_CTRL:
> +	case ARIZONA_AIF1_TX_PIN_CTRL:
> +	case ARIZONA_AIF1_RX_PIN_CTRL:
> +	case ARIZONA_AIF1_RATE_CTRL:
> +	case ARIZONA_AIF1_FORMAT:
> +	case ARIZONA_AIF1_RX_BCLK_RATE:
> +	case ARIZONA_AIF1_FRAME_CTRL_1:
> +	case ARIZONA_AIF1_FRAME_CTRL_2:
> +	case ARIZONA_AIF1_FRAME_CTRL_3:
> +	case ARIZONA_AIF1_FRAME_CTRL_4:
> +	case ARIZONA_AIF1_FRAME_CTRL_5:
> +	case ARIZONA_AIF1_FRAME_CTRL_6:
> +	case ARIZONA_AIF1_FRAME_CTRL_7:
> +	case ARIZONA_AIF1_FRAME_CTRL_8:
> +	case ARIZONA_AIF1_FRAME_CTRL_11:
> +	case ARIZONA_AIF1_FRAME_CTRL_12:
> +	case ARIZONA_AIF1_FRAME_CTRL_13:
> +	case ARIZONA_AIF1_FRAME_CTRL_14:
> +	case ARIZONA_AIF1_FRAME_CTRL_15:
> +	case ARIZONA_AIF1_FRAME_CTRL_16:
> +	case ARIZONA_AIF1_TX_ENABLES:
> +	case ARIZONA_AIF1_RX_ENABLES:
> +	case ARIZONA_AIF2_BCLK_CTRL:
> +	case ARIZONA_AIF2_TX_PIN_CTRL:
> +	case ARIZONA_AIF2_RX_PIN_CTRL:
> +	case ARIZONA_AIF2_RATE_CTRL:
> +	case ARIZONA_AIF2_FORMAT:
> +	case ARIZONA_AIF2_RX_BCLK_RATE:
> +	case ARIZONA_AIF2_FRAME_CTRL_1:
> +	case ARIZONA_AIF2_FRAME_CTRL_2:
> +	case ARIZONA_AIF2_FRAME_CTRL_3:
> +	case ARIZONA_AIF2_FRAME_CTRL_4:
> +	case ARIZONA_AIF2_FRAME_CTRL_5:
> +	case ARIZONA_AIF2_FRAME_CTRL_6:
> +	case ARIZONA_AIF2_FRAME_CTRL_7:
> +	case ARIZONA_AIF2_FRAME_CTRL_8:
> +	case ARIZONA_AIF2_FRAME_CTRL_11:
> +	case ARIZONA_AIF2_FRAME_CTRL_12:
> +	case ARIZONA_AIF2_FRAME_CTRL_13:
> +	case ARIZONA_AIF2_FRAME_CTRL_14:
> +	case ARIZONA_AIF2_FRAME_CTRL_15:
> +	case ARIZONA_AIF2_FRAME_CTRL_16:
> +	case ARIZONA_AIF2_TX_ENABLES:
> +	case ARIZONA_AIF2_RX_ENABLES:
> +	case ARIZONA_AIF3_BCLK_CTRL:
> +	case ARIZONA_AIF3_TX_PIN_CTRL:
> +	case ARIZONA_AIF3_RX_PIN_CTRL:
> +	case ARIZONA_AIF3_RATE_CTRL:
> +	case ARIZONA_AIF3_FORMAT:
> +	case ARIZONA_AIF3_RX_BCLK_RATE:
> +	case ARIZONA_AIF3_FRAME_CTRL_1:
> +	case ARIZONA_AIF3_FRAME_CTRL_2:
> +	case ARIZONA_AIF3_FRAME_CTRL_3:
> +	case ARIZONA_AIF3_FRAME_CTRL_4:
> +	case ARIZONA_AIF3_FRAME_CTRL_11:
> +	case ARIZONA_AIF3_FRAME_CTRL_12:
> +	case ARIZONA_AIF3_TX_ENABLES:
> +	case ARIZONA_AIF3_RX_ENABLES:
> +	case ARIZONA_SPD1_TX_CONTROL:
> +	case ARIZONA_SPD1_TX_CHANNEL_STATUS_1:
> +	case ARIZONA_SPD1_TX_CHANNEL_STATUS_2:
> +	case ARIZONA_SPD1_TX_CHANNEL_STATUS_3:
> +	case ARIZONA_SLIMBUS_FRAMER_REF_GEAR:
> +	case ARIZONA_SLIMBUS_RATES_1:
> +	case ARIZONA_SLIMBUS_RATES_2:
> +	case ARIZONA_SLIMBUS_RATES_5:
> +	case ARIZONA_SLIMBUS_RATES_6:
> +	case ARIZONA_SLIMBUS_RATES_7:
> +	case ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE:
> +	case ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE:
> +	case ARIZONA_SLIMBUS_RX_PORT_STATUS:
> +	case ARIZONA_SLIMBUS_TX_PORT_STATUS:
> +	case ARIZONA_PWM1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_PWM1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_PWM1MIX_INPUT_2_SOURCE:
> +	case ARIZONA_PWM1MIX_INPUT_2_VOLUME:
> +	case ARIZONA_PWM1MIX_INPUT_3_SOURCE:
> +	case ARIZONA_PWM1MIX_INPUT_3_VOLUME:
> +	case ARIZONA_PWM1MIX_INPUT_4_SOURCE:
> +	case ARIZONA_PWM1MIX_INPUT_4_VOLUME:
> +	case ARIZONA_PWM2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_PWM2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_PWM2MIX_INPUT_2_SOURCE:
> +	case ARIZONA_PWM2MIX_INPUT_2_VOLUME:
> +	case ARIZONA_PWM2MIX_INPUT_3_SOURCE:
> +	case ARIZONA_PWM2MIX_INPUT_3_VOLUME:
> +	case ARIZONA_PWM2MIX_INPUT_4_SOURCE:
> +	case ARIZONA_PWM2MIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT1LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT1LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT1LMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT1LMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT1LMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT1LMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT1LMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT1LMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT1RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT1RMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT1RMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT1RMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT1RMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT1RMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT1RMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT1RMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT2LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT2LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT2LMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT2LMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT2LMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT2LMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT2LMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT2LMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT2RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT2RMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT2RMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT2RMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT2RMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT2RMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT2RMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT2RMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT3LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT3LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT3LMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT3LMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT3LMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT3LMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT3LMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT3LMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT4LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT4LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT4LMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT4LMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT4LMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT4LMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT4LMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT4LMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT4RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT4RMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT4RMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT4RMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT4RMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT4RMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT4RMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT4RMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT5LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT5LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT5LMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT5LMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT5LMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT5LMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT5LMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT5LMIX_INPUT_4_VOLUME:
> +	case ARIZONA_OUT5RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_OUT5RMIX_INPUT_1_VOLUME:
> +	case ARIZONA_OUT5RMIX_INPUT_2_SOURCE:
> +	case ARIZONA_OUT5RMIX_INPUT_2_VOLUME:
> +	case ARIZONA_OUT5RMIX_INPUT_3_SOURCE:
> +	case ARIZONA_OUT5RMIX_INPUT_3_VOLUME:
> +	case ARIZONA_OUT5RMIX_INPUT_4_SOURCE:
> +	case ARIZONA_OUT5RMIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX3MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX3MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX3MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX3MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX3MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX3MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX3MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX4MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX4MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX4MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX4MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX4MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX4MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX4MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX5MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX5MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX5MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX5MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX5MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX5MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX5MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF2TX6MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF2TX6MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF2TX6MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF2TX6MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF2TX6MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF2TX6MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF2TX6MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME:
> +	case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE:
> +	case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME:
> +	case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE:
> +	case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME:
> +	case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE:
> +	case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME:
> +	case ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_EQ1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_EQ1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_EQ2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_EQ2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_EQ3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_EQ3MIX_INPUT_1_VOLUME:
> +	case ARIZONA_EQ4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_EQ4MIX_INPUT_1_VOLUME:
> +	case ARIZONA_DRC1LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_DRC1LMIX_INPUT_1_VOLUME:
> +	case ARIZONA_DRC1RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_DRC1RMIX_INPUT_1_VOLUME:
> +	case ARIZONA_HPLP1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_HPLP1MIX_INPUT_1_VOLUME:
> +	case ARIZONA_HPLP1MIX_INPUT_2_SOURCE:
> +	case ARIZONA_HPLP1MIX_INPUT_2_VOLUME:
> +	case ARIZONA_HPLP1MIX_INPUT_3_SOURCE:
> +	case ARIZONA_HPLP1MIX_INPUT_3_VOLUME:
> +	case ARIZONA_HPLP1MIX_INPUT_4_SOURCE:
> +	case ARIZONA_HPLP1MIX_INPUT_4_VOLUME:
> +	case ARIZONA_HPLP2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_HPLP2MIX_INPUT_1_VOLUME:
> +	case ARIZONA_HPLP2MIX_INPUT_2_SOURCE:
> +	case ARIZONA_HPLP2MIX_INPUT_2_VOLUME:
> +	case ARIZONA_HPLP2MIX_INPUT_3_SOURCE:
> +	case ARIZONA_HPLP2MIX_INPUT_3_VOLUME:
> +	case ARIZONA_HPLP2MIX_INPUT_4_SOURCE:
> +	case ARIZONA_HPLP2MIX_INPUT_4_VOLUME:
> +	case ARIZONA_HPLP3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_HPLP3MIX_INPUT_1_VOLUME:
> +	case ARIZONA_HPLP3MIX_INPUT_2_SOURCE:
> +	case ARIZONA_HPLP3MIX_INPUT_2_VOLUME:
> +	case ARIZONA_HPLP3MIX_INPUT_3_SOURCE:
> +	case ARIZONA_HPLP3MIX_INPUT_3_VOLUME:
> +	case ARIZONA_HPLP3MIX_INPUT_4_SOURCE:
> +	case ARIZONA_HPLP3MIX_INPUT_4_VOLUME:
> +	case ARIZONA_HPLP4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_HPLP4MIX_INPUT_1_VOLUME:
> +	case ARIZONA_HPLP4MIX_INPUT_2_SOURCE:
> +	case ARIZONA_HPLP4MIX_INPUT_2_VOLUME:
> +	case ARIZONA_HPLP4MIX_INPUT_3_SOURCE:
> +	case ARIZONA_HPLP4MIX_INPUT_3_VOLUME:
> +	case ARIZONA_HPLP4MIX_INPUT_4_SOURCE:
> +	case ARIZONA_HPLP4MIX_INPUT_4_VOLUME:
> +	case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE:
> +	case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE:
> +	case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE:
> +	case ARIZONA_GPIO1_CTRL:
> +	case ARIZONA_GPIO2_CTRL:
> +	case ARIZONA_GPIO3_CTRL:
> +	case ARIZONA_GPIO4_CTRL:
> +	case ARIZONA_GPIO5_CTRL:
> +	case ARIZONA_IRQ_CTRL_1:
> +	case ARIZONA_GPIO_DEBOUNCE_CONFIG:
> +	case ARIZONA_GP_SWITCH_1:
> +	case ARIZONA_MISC_PAD_CTRL_1:
> +	case ARIZONA_MISC_PAD_CTRL_2:
> +	case ARIZONA_MISC_PAD_CTRL_3:
> +	case ARIZONA_MISC_PAD_CTRL_4:
> +	case ARIZONA_MISC_PAD_CTRL_5:
> +	case ARIZONA_MISC_PAD_CTRL_6:
> +	case ARIZONA_INTERRUPT_STATUS_1:
> +	case ARIZONA_INTERRUPT_STATUS_2:
> +	case ARIZONA_INTERRUPT_STATUS_3:
> +	case ARIZONA_INTERRUPT_STATUS_4:
> +	case ARIZONA_INTERRUPT_STATUS_5:
> +	case ARIZONA_INTERRUPT_STATUS_1_MASK:
> +	case ARIZONA_INTERRUPT_STATUS_2_MASK:
> +	case ARIZONA_INTERRUPT_STATUS_3_MASK:
> +	case ARIZONA_INTERRUPT_STATUS_4_MASK:
> +	case ARIZONA_INTERRUPT_STATUS_5_MASK:
> +	case ARIZONA_INTERRUPT_CONTROL:
> +	case ARIZONA_IRQ2_STATUS_1:
> +	case ARIZONA_IRQ2_STATUS_2:
> +	case ARIZONA_IRQ2_STATUS_3:
> +	case ARIZONA_IRQ2_STATUS_4:
> +	case ARIZONA_IRQ2_STATUS_5:
> +	case ARIZONA_IRQ2_STATUS_1_MASK:
> +	case ARIZONA_IRQ2_STATUS_2_MASK:
> +	case ARIZONA_IRQ2_STATUS_3_MASK:
> +	case ARIZONA_IRQ2_STATUS_4_MASK:
> +	case ARIZONA_IRQ2_STATUS_5_MASK:
> +	case ARIZONA_IRQ2_CONTROL:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_2:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_3:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_4:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_5:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_6:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_7:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_8:
> +	case ARIZONA_IRQ_PIN_STATUS:
> +	case ARIZONA_AOD_WKUP_AND_TRIG:
> +	case ARIZONA_AOD_IRQ1:
> +	case ARIZONA_AOD_IRQ2:
> +	case ARIZONA_AOD_IRQ_MASK_IRQ1:
> +	case ARIZONA_AOD_IRQ_MASK_IRQ2:
> +	case ARIZONA_AOD_IRQ_RAW_STATUS:
> +	case ARIZONA_JACK_DETECT_DEBOUNCE:
> +	case ARIZONA_FX_CTRL1:
> +	case ARIZONA_FX_CTRL2:
> +	case ARIZONA_EQ1_1:
> +	case ARIZONA_EQ1_2:
> +	case ARIZONA_EQ1_3:
> +	case ARIZONA_EQ1_4:
> +	case ARIZONA_EQ1_5:
> +	case ARIZONA_EQ1_6:
> +	case ARIZONA_EQ1_7:
> +	case ARIZONA_EQ1_8:
> +	case ARIZONA_EQ1_9:
> +	case ARIZONA_EQ1_10:
> +	case ARIZONA_EQ1_11:
> +	case ARIZONA_EQ1_12:
> +	case ARIZONA_EQ1_13:
> +	case ARIZONA_EQ1_14:
> +	case ARIZONA_EQ1_15:
> +	case ARIZONA_EQ1_16:
> +	case ARIZONA_EQ1_17:
> +	case ARIZONA_EQ1_18:
> +	case ARIZONA_EQ1_19:
> +	case ARIZONA_EQ1_20:
> +	case ARIZONA_EQ1_21:
> +	case ARIZONA_EQ2_1:
> +	case ARIZONA_EQ2_2:
> +	case ARIZONA_EQ2_3:
> +	case ARIZONA_EQ2_4:
> +	case ARIZONA_EQ2_5:
> +	case ARIZONA_EQ2_6:
> +	case ARIZONA_EQ2_7:
> +	case ARIZONA_EQ2_8:
> +	case ARIZONA_EQ2_9:
> +	case ARIZONA_EQ2_10:
> +	case ARIZONA_EQ2_11:
> +	case ARIZONA_EQ2_12:
> +	case ARIZONA_EQ2_13:
> +	case ARIZONA_EQ2_14:
> +	case ARIZONA_EQ2_15:
> +	case ARIZONA_EQ2_16:
> +	case ARIZONA_EQ2_17:
> +	case ARIZONA_EQ2_18:
> +	case ARIZONA_EQ2_19:
> +	case ARIZONA_EQ2_20:
> +	case ARIZONA_EQ2_21:
> +	case ARIZONA_EQ3_1:
> +	case ARIZONA_EQ3_2:
> +	case ARIZONA_EQ3_3:
> +	case ARIZONA_EQ3_4:
> +	case ARIZONA_EQ3_5:
> +	case ARIZONA_EQ3_6:
> +	case ARIZONA_EQ3_7:
> +	case ARIZONA_EQ3_8:
> +	case ARIZONA_EQ3_9:
> +	case ARIZONA_EQ3_10:
> +	case ARIZONA_EQ3_11:
> +	case ARIZONA_EQ3_12:
> +	case ARIZONA_EQ3_13:
> +	case ARIZONA_EQ3_14:
> +	case ARIZONA_EQ3_15:
> +	case ARIZONA_EQ3_16:
> +	case ARIZONA_EQ3_17:
> +	case ARIZONA_EQ3_18:
> +	case ARIZONA_EQ3_19:
> +	case ARIZONA_EQ3_20:
> +	case ARIZONA_EQ3_21:
> +	case ARIZONA_EQ4_1:
> +	case ARIZONA_EQ4_2:
> +	case ARIZONA_EQ4_3:
> +	case ARIZONA_EQ4_4:
> +	case ARIZONA_EQ4_5:
> +	case ARIZONA_EQ4_6:
> +	case ARIZONA_EQ4_7:
> +	case ARIZONA_EQ4_8:
> +	case ARIZONA_EQ4_9:
> +	case ARIZONA_EQ4_10:
> +	case ARIZONA_EQ4_11:
> +	case ARIZONA_EQ4_12:
> +	case ARIZONA_EQ4_13:
> +	case ARIZONA_EQ4_14:
> +	case ARIZONA_EQ4_15:
> +	case ARIZONA_EQ4_16:
> +	case ARIZONA_EQ4_17:
> +	case ARIZONA_EQ4_18:
> +	case ARIZONA_EQ4_19:
> +	case ARIZONA_EQ4_20:
> +	case ARIZONA_EQ4_21:
> +	case ARIZONA_DRC1_CTRL1:
> +	case ARIZONA_DRC1_CTRL2:
> +	case ARIZONA_DRC1_CTRL3:
> +	case ARIZONA_DRC1_CTRL4:
> +	case ARIZONA_DRC1_CTRL5:
> +	case ARIZONA_HPLPF1_1:
> +	case ARIZONA_HPLPF1_2:
> +	case ARIZONA_HPLPF2_1:
> +	case ARIZONA_HPLPF2_2:
> +	case ARIZONA_HPLPF3_1:
> +	case ARIZONA_HPLPF3_2:
> +	case ARIZONA_HPLPF4_1:
> +	case ARIZONA_HPLPF4_2:
> +	case ARIZONA_ASRC_ENABLE:
> +	case ARIZONA_ASRC_STATUS:
> +	case ARIZONA_ASRC_RATE1:
> +	case ARIZONA_ASRC_RATE2:
> +	case ARIZONA_ISRC_1_CTRL_1:
> +	case ARIZONA_ISRC_1_CTRL_2:
> +	case ARIZONA_ISRC_1_CTRL_3:
> +	case ARIZONA_ISRC_2_CTRL_1:
> +	case ARIZONA_ISRC_2_CTRL_2:
> +	case ARIZONA_ISRC_2_CTRL_3:
> +	case ARIZONA_FRF_COEFF_1:
> +	case ARIZONA_FRF_COEFF_2:
> +	case ARIZONA_FRF_COEFF_3:
> +	case ARIZONA_FRF_COEFF_4:
> +	case ARIZONA_V2_DAC_COMP_1:
> +	case ARIZONA_V2_DAC_COMP_2:
> +		return true;
> +	default:
> +		return false;
> +	}
> +}
> +
> +static bool wm8998_volatile_register(struct device *dev, unsigned int reg)
> +{
> +	switch (reg) {
> +	case ARIZONA_SOFTWARE_RESET:
> +	case ARIZONA_DEVICE_REVISION:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_0:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_1:
> +	case ARIZONA_WRITE_SEQUENCER_CTRL_2:
> +	case ARIZONA_HAPTICS_STATUS:
> +	case ARIZONA_SAMPLE_RATE_1_STATUS:
> +	case ARIZONA_SAMPLE_RATE_2_STATUS:
> +	case ARIZONA_SAMPLE_RATE_3_STATUS:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
> +	case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS:
> +	case ARIZONA_MIC_DETECT_3:
> +	case ARIZONA_MIC_DETECT_4:
> +	case ARIZONA_HEADPHONE_DETECT_2:
> +	case ARIZONA_INPUT_ENABLES_STATUS:
> +	case ARIZONA_OUTPUT_STATUS_1:
> +	case ARIZONA_RAW_OUTPUT_STATUS_1:
> +	case ARIZONA_SLIMBUS_RX_PORT_STATUS:
> +	case ARIZONA_SLIMBUS_TX_PORT_STATUS:
> +	case ARIZONA_INTERRUPT_STATUS_1:
> +	case ARIZONA_INTERRUPT_STATUS_2:
> +	case ARIZONA_INTERRUPT_STATUS_3:
> +	case ARIZONA_INTERRUPT_STATUS_4:
> +	case ARIZONA_INTERRUPT_STATUS_5:
> +	case ARIZONA_IRQ2_STATUS_1:
> +	case ARIZONA_IRQ2_STATUS_2:
> +	case ARIZONA_IRQ2_STATUS_3:
> +	case ARIZONA_IRQ2_STATUS_4:
> +	case ARIZONA_IRQ2_STATUS_5:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_2:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_3:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_4:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_5:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_6:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_7:
> +	case ARIZONA_INTERRUPT_RAW_STATUS_8:
> +	case ARIZONA_IRQ_PIN_STATUS:
> +	case ARIZONA_AOD_WKUP_AND_TRIG:
> +	case ARIZONA_AOD_IRQ1:
> +	case ARIZONA_AOD_IRQ2:
> +	case ARIZONA_AOD_IRQ_RAW_STATUS:
> +	case ARIZONA_FX_CTRL2:
> +	case ARIZONA_ASRC_STATUS:
> +		return true;
> +	default:
> +		return false;
> +	}
> +}
> +
> +#define WM8998_MAX_REGISTER 0x31ff
> +
> +const struct regmap_config wm8998_i2c_regmap = {
> +	.reg_bits = 32,
> +	.val_bits = 16,
> +
> +	.max_register = WM8998_MAX_REGISTER,
> +	.readable_reg = wm8998_readable_register,
> +	.volatile_reg = wm8998_volatile_register,
> +
> +	.cache_type = REGCACHE_RBTREE,
> +	.reg_defaults = wm8998_reg_default,
> +	.num_reg_defaults = ARRAY_SIZE(wm8998_reg_default),
> +};
> +EXPORT_SYMBOL_GPL(wm8998_i2c_regmap);
> diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
> index 16a498f..8a12a3b 100644
> --- a/include/linux/mfd/arizona/core.h
> +++ b/include/linux/mfd/arizona/core.h
> @@ -25,6 +25,8 @@ enum arizona_type {
>  	WM5110 = 2,
>  	WM8997 = 3,
>  	WM8280 = 4,
> +	WM8998 = 5,
> +	WM1814 = 6,
>  };
>  
>  #define ARIZONA_IRQ_GP1                    0
> @@ -156,6 +158,7 @@ int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
>  int wm5102_patch(struct arizona *arizona);
>  int wm5110_patch(struct arizona *arizona);
>  int wm8997_patch(struct arizona *arizona);
> +int wm8998_patch(struct arizona *arizona);
>  
>  extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
>  				     bool mandatory);
> diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
> index f672267..691f020 100644
> --- a/include/linux/mfd/arizona/pdata.h
> +++ b/include/linux/mfd/arizona/pdata.h
> @@ -159,6 +159,8 @@ struct arizona_pdata {
>  	/**
>  	 * Mode of input structures
>  	 * One of the ARIZONA_INMODE_xxx values
> +	 * wm5102/wm5110/wm8280/wm8997: [0]=IN1 [1]=IN2 [2]=IN3 [3]=IN4
> +	 * wm8998: [0]=IN1A [1]=IN2A [2]=IN1B [3]=IN2B
>  	 */
>  	int inmode[ARIZONA_MAX_INPUT];
>  
> diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h
> index 3499d36..5c39dc5 100644
> --- a/include/linux/mfd/arizona/registers.h
> +++ b/include/linux/mfd/arizona/registers.h
> @@ -139,6 +139,7 @@
>  #define ARIZONA_MIC_DETECT_LEVEL_2		 0x2A7
>  #define ARIZONA_MIC_DETECT_LEVEL_3		 0x2A8
>  #define ARIZONA_MIC_DETECT_LEVEL_4		 0x2A9
> +#define ARIZONA_MIC_DETECT_4                     0x2AB
>  #define ARIZONA_MIC_NOISE_MIX_CONTROL_1          0x2C3
>  #define ARIZONA_ISOLATION_CONTROL                0x2CB
>  #define ARIZONA_JACK_DETECT_ANALOGUE             0x2D3
> @@ -225,14 +226,18 @@
>  #define ARIZONA_DAC_VOLUME_LIMIT_6R              0x43E
>  #define ARIZONA_NOISE_GATE_SELECT_6R             0x43F
>  #define ARIZONA_DRE_ENABLE                       0x440
> +#define ARIZONA_DRE_CONTROL_1                    0x441
>  #define ARIZONA_DRE_CONTROL_2                    0x442
>  #define ARIZONA_DRE_CONTROL_3                    0x443
> +#define ARIZONA_EDRE_ENABLE                      0x448
>  #define ARIZONA_DAC_AEC_CONTROL_1                0x450
> +#define ARIZONA_DAC_AEC_CONTROL_2                0x451
>  #define ARIZONA_NOISE_GATE_CONTROL               0x458
>  #define ARIZONA_PDM_SPK1_CTRL_1                  0x490
>  #define ARIZONA_PDM_SPK1_CTRL_2                  0x491
>  #define ARIZONA_PDM_SPK2_CTRL_1                  0x492
>  #define ARIZONA_PDM_SPK2_CTRL_2                  0x493
> +#define ARIZONA_HP_TEST_CTRL_13                  0x49A
>  #define ARIZONA_HP1_SHORT_CIRCUIT_CTRL           0x4A0
>  #define ARIZONA_HP2_SHORT_CIRCUIT_CTRL           0x4A1
>  #define ARIZONA_HP3_SHORT_CIRCUIT_CTRL           0x4A2
> @@ -310,6 +315,10 @@
>  #define ARIZONA_AIF3_TX_ENABLES                  0x599
>  #define ARIZONA_AIF3_RX_ENABLES                  0x59A
>  #define ARIZONA_AIF3_FORCE_WRITE                 0x59B
> +#define ARIZONA_SPD1_TX_CONTROL                  0x5C2
> +#define ARIZONA_SPD1_TX_CHANNEL_STATUS_1         0x5C3
> +#define ARIZONA_SPD1_TX_CHANNEL_STATUS_2         0x5C4
> +#define ARIZONA_SPD1_TX_CHANNEL_STATUS_3         0x5C5
>  #define ARIZONA_SLIMBUS_FRAMER_REF_GEAR          0x5E3
>  #define ARIZONA_SLIMBUS_RATES_1                  0x5E5
>  #define ARIZONA_SLIMBUS_RATES_2                  0x5E6
> @@ -643,6 +652,10 @@
>  #define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME        0x7FD
>  #define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE        0x7FE
>  #define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME        0x7FF
> +#define ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE       0x800
> +#define ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME       0x801
> +#define ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE       0x808
> +#define ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME       0x809
>  #define ARIZONA_EQ1MIX_INPUT_1_SOURCE            0x880
>  #define ARIZONA_EQ1MIX_INPUT_1_VOLUME            0x881
>  #define ARIZONA_EQ1MIX_INPUT_2_SOURCE            0x882
> @@ -868,6 +881,7 @@
>  #define ARIZONA_GPIO5_CTRL                       0xC04
>  #define ARIZONA_IRQ_CTRL_1                       0xC0F
>  #define ARIZONA_GPIO_DEBOUNCE_CONFIG             0xC10
> +#define ARIZONA_GP_SWITCH_1                      0xC18
>  #define ARIZONA_MISC_PAD_CTRL_1                  0xC20
>  #define ARIZONA_MISC_PAD_CTRL_2                  0xC21
>  #define ARIZONA_MISC_PAD_CTRL_3                  0xC22
> @@ -1169,6 +1183,13 @@
>  #define ARIZONA_DSP4_SCRATCH_1                   0x1441
>  #define ARIZONA_DSP4_SCRATCH_2                   0x1442
>  #define ARIZONA_DSP4_SCRATCH_3                   0x1443
> +#define ARIZONA_FRF_COEFF_1                      0x1700
> +#define ARIZONA_FRF_COEFF_2                      0x1701
> +#define ARIZONA_FRF_COEFF_3                      0x1702
> +#define ARIZONA_FRF_COEFF_4                      0x1703
> +#define ARIZONA_V2_DAC_COMP_1                    0x1704
> +#define ARIZONA_V2_DAC_COMP_2                    0x1705
> +
>  
>  /*
>   * Field Definitions.
> @@ -2325,6 +2346,9 @@
>  #define ARIZONA_HP_IDAC_STEER_MASK               0x0004  /* HP_IDAC_STEER */
>  #define ARIZONA_HP_IDAC_STEER_SHIFT                   2  /* HP_IDAC_STEER */
>  #define ARIZONA_HP_IDAC_STEER_WIDTH                   1  /* HP_IDAC_STEER */
> +#define WM8998_HP_RATE_MASK                      0x0006  /* HP_RATE - [2:1] */
> +#define WM8998_HP_RATE_SHIFT                          1  /* HP_RATE - [2:1] */
> +#define WM8998_HP_RATE_WIDTH                          2  /* HP_RATE - [2:1] */
>  #define ARIZONA_HP_RATE                          0x0002  /* HP_RATE */
>  #define ARIZONA_HP_RATE_MASK                     0x0002  /* HP_RATE */
>  #define ARIZONA_HP_RATE_SHIFT                         1  /* HP_RATE */
> @@ -2413,6 +2437,16 @@
>  #define ARIZONA_MICD_STS_WIDTH                        1  /* MICD_STS */
>  
>  /*
> + * R683 (0x2AB) - Mic Detect 4
> + */
> +#define ARIZONA_MICDET_ADCVAL_DIFF_MASK          0xFF00  /* MICDET_ADCVAL_DIFF - [15:8] */
> +#define ARIZONA_MICDET_ADCVAL_DIFF_SHIFT              8  /* MICDET_ADCVAL_DIFF - [15:8] */
> +#define ARIZONA_MICDET_ADCVAL_DIFF_WIDTH              8  /* MICDET_ADCVAL_DIFF - [15:8] */
> +#define ARIZONA_MICDET_ADCVAL_MASK               0x007F  /* MICDET_ADCVAL - [15:8] */
> +#define ARIZONA_MICDET_ADCVAL_SHIFT                   0  /* MICDET_ADCVAL - [15:8] */
> +#define ARIZONA_MICDET_ADCVAL_WIDTH                   7  /* MICDET_ADCVAL - [15:8] */
> +
> +/*
>   * R707 (0x2C3) - Mic noise mix control 1
>   */
>  #define ARIZONA_MICMUTE_RATE_MASK                0x7800  /* MICMUTE_RATE - [14:11] */
> @@ -2528,6 +2562,12 @@
>  /*
>   * R785 (0x311) - ADC Digital Volume 1L
>   */
> +#define ARIZONA_IN1L_SRC_MASK                    0x4000  /* IN1L_SRC - [14] */
> +#define ARIZONA_IN1L_SRC_SHIFT                       14  /* IN1L_SRC - [14] */
> +#define ARIZONA_IN1L_SRC_WIDTH                        1  /* IN1L_SRC - [14] */
> +#define ARIZONA_IN1L_SRC_SE_MASK                 0x2000  /* IN1L_SRC - [13] */
> +#define ARIZONA_IN1L_SRC_SE_SHIFT                    13  /* IN1L_SRC - [13] */
> +#define ARIZONA_IN1L_SRC_SE_WIDTH                     1  /* IN1L_SRC - [13] */
>  #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
> @@ -2560,6 +2600,12 @@
>  /*
>   * R789 (0x315) - ADC Digital Volume 1R
>   */
> +#define ARIZONA_IN1R_SRC_MASK                    0x4000  /* IN1R_SRC - [14] */
> +#define ARIZONA_IN1R_SRC_SHIFT                       14  /* IN1R_SRC - [14] */
> +#define ARIZONA_IN1R_SRC_WIDTH                        1  /* IN1R_SRC - [14] */
> +#define ARIZONA_IN1R_SRC_SE_MASK                 0x2000  /* IN1R_SRC - [13] */
> +#define ARIZONA_IN1R_SRC_SE_SHIFT                    13  /* IN1R_SRC - [13] */
> +#define ARIZONA_IN1R_SRC_SE_WIDTH                     1  /* IN1R_SRC - [13] */
>  #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
> @@ -2604,6 +2650,12 @@
>  /*
>   * R793 (0x319) - ADC Digital Volume 2L
>   */
> +#define ARIZONA_IN2L_SRC_MASK                    0x4000  /* IN2L_SRC - [14] */
> +#define ARIZONA_IN2L_SRC_SHIFT                       14  /* IN2L_SRC - [14] */
> +#define ARIZONA_IN2L_SRC_WIDTH                        1  /* IN2L_SRC - [14] */
> +#define ARIZONA_IN2L_SRC_SE_MASK                 0x2000  /* IN2L_SRC - [13] */
> +#define ARIZONA_IN2L_SRC_SE_SHIFT                    13  /* IN2L_SRC - [13] */
> +#define ARIZONA_IN2L_SRC_SE_WIDTH                     1  /* IN2L_SRC - [13] */
>  #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
>  #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
> @@ -3412,11 +3464,45 @@
>  #define ARIZONA_DRE1L_ENA_WIDTH                       1  /* DRE1L_ENA */
>  
>  /*
> + * R1088 (0x440) - DRE Enable (WM8998)
> + */
> +#define WM8998_DRE3L_ENA                          0x0020  /* DRE3L_ENA */
> +#define WM8998_DRE3L_ENA_MASK                     0x0020  /* DRE3L_ENA */
> +#define WM8998_DRE3L_ENA_SHIFT                         5  /* DRE3L_ENA */
> +#define WM8998_DRE3L_ENA_WIDTH                         1  /* DRE3L_ENA */
> +#define WM8998_DRE2L_ENA                          0x0008  /* DRE2L_ENA */
> +#define WM8998_DRE2L_ENA_MASK                     0x0008  /* DRE2L_ENA */
> +#define WM8998_DRE2L_ENA_SHIFT                         3  /* DRE2L_ENA */
> +#define WM8998_DRE2L_ENA_WIDTH                         1  /* DRE2L_ENA */
> +#define WM8998_DRE2R_ENA                          0x0004  /* DRE2R_ENA */
> +#define WM8998_DRE2R_ENA_MASK                     0x0004  /* DRE2R_ENA */
> +#define WM8998_DRE2R_ENA_SHIFT                         2  /* DRE2R_ENA */
> +#define WM8998_DRE2R_ENA_WIDTH                         1  /* DRE2R_ENA */
> +#define WM8998_DRE1L_ENA                          0x0002  /* DRE1L_ENA */
> +#define WM8998_DRE1L_ENA_MASK                     0x0002  /* DRE1L_ENA */
> +#define WM8998_DRE1L_ENA_SHIFT                         1  /* DRE1L_ENA */
> +#define WM8998_DRE1L_ENA_WIDTH                         1  /* DRE1L_ENA */
> +#define WM8998_DRE1R_ENA                          0x0001  /* DRE1R_ENA */
> +#define WM8998_DRE1R_ENA_MASK                     0x0001  /* DRE1R_ENA */
> +#define WM8998_DRE1R_ENA_SHIFT                         0  /* DRE1R_ENA */
> +#define WM8998_DRE1R_ENA_WIDTH                         1  /* DRE1R_ENA */
> +
> +/*
> + * R1089 (0x441) - DRE Control 1
> + */
> +#define ARIZONA_DRE_ENV_TC_FAST_MASK             0x0F00  /* DRE_ENV_TC_FAST - [11:8] */
> +#define ARIZONA_DRE_ENV_TC_FAST_SHIFT                 8  /* DRE_ENV_TC_FAST - [11:8] */
> +#define ARIZONA_DRE_ENV_TC_FAST_WIDTH                 4  /* DRE_ENV_TC_FAST - [11:8] */
> +
> +/*
>   * R1090 (0x442) - DRE Control 2
>   */
>  #define ARIZONA_DRE_T_LOW_MASK                   0x3F00  /* DRE_T_LOW - [13:8] */
>  #define ARIZONA_DRE_T_LOW_SHIFT                       8  /* DRE_T_LOW - [13:8] */
>  #define ARIZONA_DRE_T_LOW_WIDTH                       6  /* DRE_T_LOW - [13:8] */
> +#define ARIZONA_DRE_ALOG_VOL_DELAY_MASK          0x000F  /* DRE_ALOG_VOL_DELAY - [3:0] */
> +#define ARIZONA_DRE_ALOG_VOL_DELAY_SHIFT              0  /* DRE_ALOG_VOL_DELAY - [3:0] */
> +#define ARIZONA_DRE_ALOG_VOL_DELAY_WIDTH              4  /* DRE_ALOG_VOL_DELAY - [3:0] */
>  
>  /*
>   * R1091 (0x443) - DRE Control 3
> @@ -3428,6 +3514,49 @@
>  #define ARIZONA_DRE_LOW_LEVEL_ABS_SHIFT               0  /* LOW_LEVEL_ABS - [3:0] */
>  #define ARIZONA_DRE_LOW_LEVEL_ABS_WIDTH               4  /* LOW_LEVEL_ABS - [3:0] */
>  
> +/* R486 (0x448) - EDRE_Enable
> + */
> +#define ARIZONA_EDRE_OUT4L_THR2_ENA              0x0200  /* EDRE_OUT4L_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR2_ENA_MASK         0x0200  /* EDRE_OUT4L_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR2_ENA_SHIFT             9  /* EDRE_OUT4L_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR2_ENA_WIDTH             1  /* EDRE_OUT4L_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR2_ENA              0x0100  /* EDRE_OUT4R_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR2_ENA_MASK         0x0100  /* EDRE_OUT4R_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR2_ENA_SHIFT             8  /* EDRE_OUT4R_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR2_ENA_WIDTH             1  /* EDRE_OUT4R_THR2_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR1_ENA              0x0080  /* EDRE_OUT4L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR1_ENA_MASK         0x0080  /* EDRE_OUT4L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR1_ENA_SHIFT             7  /* EDRE_OUT4L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4L_THR1_ENA_WIDTH             1  /* EDRE_OUT4L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR1_ENA              0x0040  /* EDRE_OUT4R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR1_ENA_MASK         0x0040  /* EDRE_OUT4R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR1_ENA_SHIFT             6  /* EDRE_OUT4R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT4R_THR1_ENA_WIDTH             1  /* EDRE_OUT4R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3L_THR1_ENA              0x0020  /* EDRE_OUT3L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3L_THR1_ENA_MASK         0x0020  /* EDRE_OUT3L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3L_THR1_ENA_SHIFT             5  /* EDRE_OUT3L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3L_THR1_ENA_WIDTH             1  /* EDRE_OUT3L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3R_THR1_ENA              0x0010  /* EDRE_OUT3R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3R_THR1_ENA_MASK         0x0010  /* EDRE_OUT3R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3R_THR1_ENA_SHIFT             4  /* EDRE_OUT3R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT3R_THR1_ENA_WIDTH             1  /* EDRE_OUT3R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2L_THR1_ENA              0x0008  /* EDRE_OUT2L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2L_THR1_ENA_MASK         0x0008  /* EDRE_OUT2L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2L_THR1_ENA_SHIFT             3  /* EDRE_OUT2L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2L_THR1_ENA_WIDTH             1  /* EDRE_OUT2L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2R_THR1_ENA              0x0004  /* EDRE_OUT2R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2R_THR1_ENA_MASK         0x0004  /* EDRE_OUT2R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2R_THR1_ENA_SHIFT             2  /* EDRE_OUT2R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT2R_THR1_ENA_WIDTH             1  /* EDRE_OUT2R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1L_THR1_ENA              0x0002  /* EDRE_OUT1L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1L_THR1_ENA_MASK         0x0002  /* EDRE_OUT1L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1L_THR1_ENA_SHIFT             1  /* EDRE_OUT1L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1L_THR1_ENA_WIDTH             1  /* EDRE_OUT1L_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1R_THR1_ENA              0x0001  /* EDRE_OUT1R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1R_THR1_ENA_MASK         0x0001  /* EDRE_OUT1R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1R_THR1_ENA_SHIFT             0  /* EDRE_OUT1R_THR1_ENA */
> +#define ARIZONA_EDRE_OUT1R_THR1_ENA_WIDTH             1  /* EDRE_OUT1R_THR1_ENA */
> +
>  /*
>   * R1104 (0x450) - DAC AEC Control 1
>   */
> @@ -4308,6 +4437,86 @@
>  #define ARIZONA_AIF3_FRC_WR_WIDTH                     1  /* AIF3_FRC_WR */
>  
>  /*
> + * R1474 (0x5C2) - SPD1 TX Control
> + */
> +#define ARIZONA_SPD1_VAL2                        0x2000  /* SPD1_VAL2 */
> +#define ARIZONA_SPD1_VAL2_MASK                   0x2000  /* SPD1_VAL2 */
> +#define ARIZONA_SPD1_VAL2_SHIFT                      13  /* SPD1_VAL2 */
> +#define ARIZONA_SPD1_VAL2_WIDTH                       1  /* SPD1_VAL2 */
> +#define ARIZONA_SPD1_VAL1                        0x1000  /* SPD1_VAL1 */
> +#define ARIZONA_SPD1_VAL1_MASK                   0x1000  /* SPD1_VAL1 */
> +#define ARIZONA_SPD1_VAL1_SHIFT                      12  /* SPD1_VAL1 */
> +#define ARIZONA_SPD1_VAL1_WIDTH                       1  /* SPD1_VAL1 */
> +#define ARIZONA_SPD1_RATE_MASK                   0x00F0  /* SPD1_RATE */
> +#define ARIZONA_SPD1_RATE_SHIFT                       4  /* SPD1_RATE */
> +#define ARIZONA_SPD1_RATE_WIDTH                       4  /* SPD1_RATE */
> +#define ARIZONA_SPD1_ENA                         0x0001  /* SPD1_ENA */
> +#define ARIZONA_SPD1_ENA_MASK                    0x0001  /* SPD1_ENA */
> +#define ARIZONA_SPD1_ENA_SHIFT                        0  /* SPD1_ENA */
> +#define ARIZONA_SPD1_ENA_WIDTH                        1  /* SPD1_ENA */
> +
> +/*
> + * R1475 (0x5C3) - SPD1 TX Channel Status 1
> + */
> +#define ARIZONA_SPD1_CATCODE_MASK                0xFF00  /* SPD1_CATCODE */
> +#define ARIZONA_SPD1_CATCODE_SHIFT                    8  /* SPD1_CATCODE */
> +#define ARIZONA_SPD1_CATCODE_WIDTH                    8  /* SPD1_CATCODE */
> +#define ARIZONA_SPD1_CHSTMODE_MASK               0x00C0  /* SPD1_CHSTMODE */
> +#define ARIZONA_SPD1_CHSTMODE_SHIFT                   6  /* SPD1_CHSTMODE */
> +#define ARIZONA_SPD1_CHSTMODE_WIDTH                   2  /* SPD1_CHSTMODE */
> +#define ARIZONA_SPD1_PREEMPH_MASK                0x0038  /* SPD1_PREEMPH */
> +#define ARIZONA_SPD1_PREEMPH_SHIFT                    3  /* SPD1_PREEMPH */
> +#define ARIZONA_SPD1_PREEMPH_WIDTH                    3  /* SPD1_PREEMPH */
> +#define ARIZONA_SPD1_NOCOPY                      0x0004  /* SPD1_NOCOPY */
> +#define ARIZONA_SPD1_NOCOPY_MASK                 0x0004  /* SPD1_NOCOPY */
> +#define ARIZONA_SPD1_NOCOPY_SHIFT                     2  /* SPD1_NOCOPY */
> +#define ARIZONA_SPD1_NOCOPY_WIDTH                     1  /* SPD1_NOCOPY */
> +#define ARIZONA_SPD1_NOAUDIO                     0x0002  /* SPD1_NOAUDIO */
> +#define ARIZONA_SPD1_NOAUDIO_MASK                0x0002  /* SPD1_NOAUDIO */
> +#define ARIZONA_SPD1_NOAUDIO_SHIFT                    1  /* SPD1_NOAUDIO */
> +#define ARIZONA_SPD1_NOAUDIO_WIDTH                    1  /* SPD1_NOAUDIO */
> +#define ARIZONA_SPD1_PRO                         0x0001  /* SPD1_PRO */
> +#define ARIZONA_SPD1_PRO_MASK                    0x0001  /* SPD1_PRO */
> +#define ARIZONA_SPD1_PRO_SHIFT                        0  /* SPD1_PRO */
> +#define ARIZONA_SPD1_PRO_WIDTH                        1  /* SPD1_PRO */
> +
> +/*
> + * R1475 (0x5C4) - SPD1 TX Channel Status 2
> + */
> +#define ARIZONA_SPD1_FREQ_MASK                   0xF000  /* SPD1_FREQ */
> +#define ARIZONA_SPD1_FREQ_SHIFT                      12  /* SPD1_FREQ */
> +#define ARIZONA_SPD1_FREQ_WIDTH                       4  /* SPD1_FREQ */
> +#define ARIZONA_SPD1_CHNUM2_MASK                 0x0F00  /* SPD1_CHNUM2 */
> +#define ARIZONA_SPD1_CHNUM2_SHIFT                     8  /* SPD1_CHNUM2 */
> +#define ARIZONA_SPD1_CHNUM2_WIDTH                     4  /* SPD1_CHNUM2 */
> +#define ARIZONA_SPD1_CHNUM1_MASK                 0x00F0  /* SPD1_CHNUM1 */
> +#define ARIZONA_SPD1_CHNUM1_SHIFT                     4  /* SPD1_CHNUM1 */
> +#define ARIZONA_SPD1_CHNUM1_WIDTH                     4  /* SPD1_CHNUM1 */
> +#define ARIZONA_SPD1_SRCNUM_MASK                 0x000F  /* SPD1_SRCNUM */
> +#define ARIZONA_SPD1_SRCNUM_SHIFT                     0  /* SPD1_SRCNUM */
> +#define ARIZONA_SPD1_SRCNUM_WIDTH                     4  /* SPD1_SRCNUM */
> +
> +/*
> + * R1475 (0x5C5) - SPD1 TX Channel Status 3
> + */
> +#define ARIZONA_SPD1_ORGSAMP_MASK                 0x0F00  /* SPD1_ORGSAMP */
> +#define ARIZONA_SPD1_ORGSAMP_SHIFT                     8  /* SPD1_ORGSAMP */
> +#define ARIZONA_SPD1_ORGSAMP_WIDTH                     4  /* SPD1_ORGSAMP */
> +#define ARIZONA_SPD1_TXWL_MASK                    0x00E0  /* SPD1_TXWL */
> +#define ARIZONA_SPD1_TXWL_SHIFT                        5  /* SPD1_TXWL */
> +#define ARIZONA_SPD1_TXWL_WIDTH                        3  /* SPD1_TXWL */
> +#define ARIZONA_SPD1_MAXWL                        0x0010  /* SPD1_MAXWL */
> +#define ARIZONA_SPD1_MAXWL_MASK                   0x0010  /* SPD1_MAXWL */
> +#define ARIZONA_SPD1_MAXWL_SHIFT                       4  /* SPD1_MAXWL */
> +#define ARIZONA_SPD1_MAXWL_WIDTH                       1  /* SPD1_MAXWL */
> +#define ARIZONA_SPD1_CS31_30_MASK                 0x000C  /* SPD1_CS31_30 */
> +#define ARIZONA_SPD1_CS31_30_SHIFT                     2  /* SPD1_CS31_30 */
> +#define ARIZONA_SPD1_CS31_30_WIDTH                     2  /* SPD1_CS31_30 */
> +#define ARIZONA_SPD1_CLKACU_MASK                  0x0003  /* SPD1_CLKACU */
> +#define ARIZONA_SPD1_CLKACU_SHIFT                      2  /* SPD1_CLKACU */
> +#define ARIZONA_SPD1_CLKACU_WIDTH                      0  /* SPD1_CLKACU */
> +
> +/*
>   * R1507 (0x5E3) - SLIMbus Framer Ref Gear
>   */
>  #define ARIZONA_SLIMCLK_SRC                      0x0010  /* SLIMCLK_SRC */
> @@ -4562,6 +4771,13 @@
>  #define ARIZONA_GP_DBTIME_WIDTH                       4  /* GP_DBTIME - [15:12] */
>  
>  /*
> + * R3096 (0xC18) - GP Switch 1
> + */
> +#define ARIZONA_SW1_MODE_MASK                    0x0003  /* SW1_MODE - [1:0] */
> +#define ARIZONA_SW1_MODE_SHIFT                        0  /* SW1_MODE - [1:0] */
> +#define ARIZONA_SW1_MODE_WIDTH                        2  /* SW1_MODE - [1:0] */
> +
> +/*
>   * R3104 (0xC20) - Misc Pad Ctrl 1
>   */
>  #define ARIZONA_LDO1ENA_PD                       0x8000  /* LDO1ENA_PD */
> @@ -6301,6 +6517,10 @@
>  /*
>   * R3366 (0xD26) - Interrupt Raw Status 8
>   */
> +#define ARIZONA_SPDIF_OVERCLOCKED_STS            0x8000  /* SPDIF_OVERCLOCKED_STS */
> +#define ARIZONA_SPDIF_OVERCLOCKED_STS_MASK       0x8000  /* SPDIF_OVERCLOCKED_STS */
> +#define ARIZONA_SPDIF_OVERCLOCKED_STS_SHIFT          15  /* SPDIF_OVERCLOCKED_STS */
> +#define ARIZONA_SPDIF_OVERCLOCKED_STS_WIDTH           1  /* SPDIF_OVERCLOCKED_STS */
>  #define ARIZONA_AIF3_UNDERCLOCKED_STS            0x0400  /* AIF3_UNDERCLOCKED_STS */
>  #define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK       0x0400  /* AIF3_UNDERCLOCKED_STS */
>  #define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT          10  /* AIF3_UNDERCLOCKED_STS */
Richard Fitzgerald May 8, 2015, 9:11 a.m. UTC | #5
On Thu, May 07, 2015 at 09:52:38AM +0100, Lee Jones wrote:
> On Fri, 01 May 2015, Richard Fitzgerald wrote:
> 
> > Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
> > ---
> >  drivers/mfd/Kconfig                   |    6 +
> >  drivers/mfd/Makefile                  |    3 +
> >  drivers/mfd/arizona-core.c            |  105 ++-
> >  drivers/mfd/arizona-i2c.c             |    8 +
> >  drivers/mfd/arizona-irq.c             |    9 +
> >  drivers/mfd/arizona.h                 |    5 +
> >  drivers/mfd/wm8998-tables.c           | 1592 +++++++++++++++++++++++++++++++++
> >  include/linux/mfd/arizona/core.h      |    3 +
> >  include/linux/mfd/arizona/pdata.h     |    2 +
> >  include/linux/mfd/arizona/registers.h |  220 +++++
> >  10 files changed, 1945 insertions(+), 8 deletions(-)
> >  create mode 100644 drivers/mfd/wm8998-tables.c
> 
> How orthogonal is this patch?  Can I just take it?
> 
> For my own reference:
>   Acked-by: Lee Jones <lee.jones@linaro.org>


This patches code added by patch 1 "mfd: arizona: Split INx_MODE into two fields" so you'll
need to take that one as well. But if you are ok with that change too then yes it's ok to
take both of them into mfd.

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 048f5bf..d2e549b 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1359,6 +1359,12 @@  config MFD_WM8997
 	help
 	  Support for Wolfson Microelectronics WM8997 low power audio SoC
 
+config MFD_WM8998
+	bool "Wolfson Microelectronics WM8998"
+	depends on MFD_ARIZONA
+	help
+	  Support for Wolfson Microelectronics WM8998 low power audio SoC
+
 config MFD_WM8400
 	bool "Wolfson Microelectronics WM8400"
 	select MFD_CORE
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index ca6d184..2755adf 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -50,6 +50,9 @@  endif
 ifneq ($(CONFIG_MFD_WM8997),n)
 obj-$(CONFIG_MFD_ARIZONA)	+= wm8997-tables.o
 endif
+ifneq ($(CONFIG_MFD_WM8998),n)
+obj-$(CONFIG_MFD_ARIZONA)	+= wm8998-tables.o
+endif
 obj-$(CONFIG_MFD_WM8400)	+= wm8400-core.o
 wm831x-objs			:= wm831x-core.o wm831x-irq.o wm831x-otp.o
 wm831x-objs			+= wm831x-auxadc.o
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index 33fa5b5..dadf9b4 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -146,17 +146,31 @@  static irqreturn_t arizona_underclocked(int irq, void *data)
 static irqreturn_t arizona_overclocked(int irq, void *data)
 {
 	struct arizona *arizona = data;
-	unsigned int val[2];
+	unsigned int val[3];
 	int ret;
 	
 	ret = regmap_bulk_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_6,
-			       &val[0], 2);
+			       &val[0], 3);
 	if (ret != 0) {
 		dev_err(arizona->dev, "Failed to read overclock status: %d\n",
 			ret);
 		return IRQ_NONE;
 	}
 
+	switch (arizona->type) {
+	case WM8998:
+	case WM1814:
+		/* Some bits are shifted on WM8998,
+		 * rearrange to match the standard bit layout
+		 */
+		val[0] = ((val[0] & 0x60e0) >> 1) |
+			 ((val[0] & 0x1e00) >> 2) |
+			 (val[0] & 0x000f);
+		break;
+	default:
+		break;
+	}
+
 	if (val[0] & ARIZONA_PWM_OVERCLOCKED_STS)
 		dev_err(arizona->dev, "PWM overclocked\n");
 	if (val[0] & ARIZONA_FX_CORE_OVERCLOCKED_STS)
@@ -201,6 +215,9 @@  static irqreturn_t arizona_overclocked(int irq, void *data)
 	if (val[1] & ARIZONA_ISRC1_OVERCLOCKED_STS)
 		dev_err(arizona->dev, "ISRC1 overclocked\n");
 
+	if (val[2] & ARIZONA_SPDIF_OVERCLOCKED_STS)
+		dev_err(arizona->dev, "SPDIF overclocked\n");
+
 	return IRQ_HANDLED;
 }
 
@@ -579,6 +596,8 @@  const struct of_device_id arizona_of_match[] = {
 	{ .compatible = "wlf,wm5110", .data = (void *)WM5110 },
 	{ .compatible = "wlf,wm8280", .data = (void *)WM8280 },
 	{ .compatible = "wlf,wm8997", .data = (void *)WM8997 },
+	{ .compatible = "wlf,wm8998", .data = (void *)WM8998 },
+	{ .compatible = "wlf,wm1814", .data = (void *)WM1814 },
 	{},
 };
 EXPORT_SYMBOL_GPL(arizona_of_match);
@@ -660,11 +679,28 @@  static const struct mfd_cell wm8997_devs[] = {
 	},
 };
 
+static const struct mfd_cell wm8998_devs[] = {
+	{
+		.name = "arizona-extcon",
+		.parent_supplies = wm5102_supplies,
+		.num_parent_supplies = 1, /* We only need MICVDD */
+	},
+	{ .name = "arizona-gpio" },
+	{ .name = "arizona-haptics" },
+	{ .name = "arizona-pwm" },
+	{
+		.name = "wm8998-codec",
+		.parent_supplies = wm5102_supplies,
+		.num_parent_supplies = ARRAY_SIZE(wm5102_supplies),
+	},
+	{ .name = "arizona-micsupp" },
+};
+
 int arizona_dev_init(struct arizona *arizona)
 {
 	struct device *dev = arizona->dev;
 	const char *type_name;
-	unsigned int reg, val;
+	unsigned int reg, val, mask;
 	int (*apply_patch)(struct arizona *) = NULL;
 	int ret, i;
 
@@ -684,6 +720,8 @@  int arizona_dev_init(struct arizona *arizona)
 	case WM5110:
 	case WM8280:
 	case WM8997:
+	case WM8998:
+	case WM1814:
 		for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++)
 			arizona->core_supplies[i].supply
 				= wm5102_core_supplies[i];
@@ -768,6 +806,7 @@  int arizona_dev_init(struct arizona *arizona)
 	switch (reg) {
 	case 0x5102:
 	case 0x5110:
+	case 0x6349:
 	case 0x8997:
 		break;
 	default:
@@ -874,6 +913,27 @@  int arizona_dev_init(struct arizona *arizona)
 		apply_patch = wm8997_patch;
 		break;
 #endif
+#ifdef CONFIG_MFD_WM8998
+	case 0x6349:
+		switch (arizona->type) {
+		case WM8998:
+			type_name = "WM8998";
+			break;
+
+		case WM1814:
+			type_name = "WM1814";
+			break;
+
+		default:
+			type_name = "WM8998";
+			dev_err(arizona->dev, "WM8998 registered as %d\n",
+				arizona->type);
+			arizona->type = WM8998;
+		}
+
+		apply_patch = wm8998_patch;
+		break;
+#endif
 	default:
 		dev_err(arizona->dev, "Unknown device ID %x\n", reg);
 		goto err_reset;
@@ -979,14 +1039,38 @@  int arizona_dev_init(struct arizona *arizona)
 			<< ARIZONA_IN1_DMIC_SUP_SHIFT;
 		if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC)
 			val |= 1 << ARIZONA_IN1_MODE_SHIFT;
-		if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
-			val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT;
+
+		switch (arizona->type) {
+		case WM8998:
+		case WM1814:
+			regmap_update_bits(arizona->regmap,
+				ARIZONA_ADC_DIGITAL_VOLUME_1L + (i * 8),
+				ARIZONA_IN1L_SRC_SE_MASK,
+				(arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
+					<< ARIZONA_IN1L_SRC_SE_SHIFT);
+
+			regmap_update_bits(arizona->regmap,
+				ARIZONA_ADC_DIGITAL_VOLUME_1R + (i * 8),
+				ARIZONA_IN1R_SRC_SE_MASK,
+				(arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
+					<< ARIZONA_IN1R_SRC_SE_SHIFT);
+
+			mask = ARIZONA_IN1_DMIC_SUP_MASK |
+				ARIZONA_IN1_MODE_MASK;
+			break;
+		default:
+			if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
+				val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT;
+
+			mask = ARIZONA_IN1_DMIC_SUP_MASK |
+				ARIZONA_IN1_MODE_MASK |
+				ARIZONA_IN1_SINGLE_ENDED_MASK;
+			break;
+		}
 
 		regmap_update_bits(arizona->regmap,
 				   ARIZONA_IN1L_CONTROL + (i * 8),
-				   ARIZONA_IN1_DMIC_SUP_MASK |
-				   ARIZONA_IN1_MODE_MASK |
-				   ARIZONA_IN1_SINGLE_ENDED_MASK, val);
+				   mask, val);
 	}
 
 	for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) {
@@ -1042,6 +1126,11 @@  int arizona_dev_init(struct arizona *arizona)
 		ret = mfd_add_devices(arizona->dev, -1, wm8997_devs,
 				      ARRAY_SIZE(wm8997_devs), NULL, 0, NULL);
 		break;
+	case WM8998:
+	case WM1814:
+		ret = mfd_add_devices(arizona->dev, -1, wm8998_devs,
+				      ARRAY_SIZE(wm8998_devs), NULL, 0, NULL);
+		break;
 	}
 
 	if (ret != 0) {
diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
index ff782a5..920276f 100644
--- a/drivers/mfd/arizona-i2c.c
+++ b/drivers/mfd/arizona-i2c.c
@@ -53,6 +53,12 @@  static int arizona_i2c_probe(struct i2c_client *i2c,
 		regmap_config = &wm8997_i2c_regmap;
 		break;
 #endif
+#ifdef CONFIG_MFD_WM8998
+	case WM8998:
+	case WM1814:
+		regmap_config = &wm8998_i2c_regmap;
+		break;
+#endif
 	default:
 		dev_err(&i2c->dev, "Unknown device type %ld\n",
 			id->driver_data);
@@ -90,6 +96,8 @@  static const struct i2c_device_id arizona_i2c_id[] = {
 	{ "wm5110", WM5110 },
 	{ "wm8280", WM8280 },
 	{ "wm8997", WM8997 },
+	{ "wm8998", WM8998 },
+	{ "wm1814", WM1814 },
 	{ }
 };
 MODULE_DEVICE_TABLE(i2c, arizona_i2c_id);
diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c
index d063b94..b755244 100644
--- a/drivers/mfd/arizona-irq.c
+++ b/drivers/mfd/arizona-irq.c
@@ -234,6 +234,15 @@  int arizona_irq_init(struct arizona *arizona)
 		arizona->ctrlif_error = false;
 		break;
 #endif
+#ifdef CONFIG_MFD_WM8998
+	case WM8998:
+	case WM1814:
+		aod = &wm8998_aod;
+		irq = &wm8998_irq;
+
+		arizona->ctrlif_error = false;
+		break;
+#endif
 	default:
 		BUG_ON("Unknown Arizona class device" == NULL);
 		return -EINVAL;
diff --git a/drivers/mfd/arizona.h b/drivers/mfd/arizona.h
index fbe2843..3af12e9 100644
--- a/drivers/mfd/arizona.h
+++ b/drivers/mfd/arizona.h
@@ -27,6 +27,8 @@  extern const struct regmap_config wm5110_spi_regmap;
 
 extern const struct regmap_config wm8997_i2c_regmap;
 
+extern const struct regmap_config wm8998_i2c_regmap;
+
 extern const struct dev_pm_ops arizona_pm_ops;
 
 extern const struct of_device_id arizona_of_match[];
@@ -41,6 +43,9 @@  extern const struct regmap_irq_chip wm5110_revd_irq;
 extern const struct regmap_irq_chip wm8997_aod;
 extern const struct regmap_irq_chip wm8997_irq;
 
+extern struct regmap_irq_chip wm8998_aod;
+extern struct regmap_irq_chip wm8998_irq;
+
 int arizona_dev_init(struct arizona *arizona);
 int arizona_dev_exit(struct arizona *arizona);
 int arizona_irq_init(struct arizona *arizona);
diff --git a/drivers/mfd/wm8998-tables.c b/drivers/mfd/wm8998-tables.c
new file mode 100644
index 0000000..60e8622
--- /dev/null
+++ b/drivers/mfd/wm8998-tables.c
@@ -0,0 +1,1592 @@ 
+/*
+ * wm8998-tables.c  --  data tables for wm8998-class codecs
+ *
+ * Copyright 2014 Wolfson Microelectronics plc
+ *
+ * Author: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+
+#include <linux/mfd/arizona/core.h>
+#include <linux/mfd/arizona/registers.h>
+#include <linux/device.h>
+
+#include "arizona.h"
+
+#define WM8998_NUM_AOD_ISR 2
+#define WM8998_NUM_ISR 5
+
+static const struct reg_default wm8998_rev_a_patch[] = {
+	{ 0x0212, 0x0000 },
+	{ 0x0211, 0x0014 },
+	{ 0x04E4, 0x0E0D },
+	{ 0x04E5, 0x0E0D },
+	{ 0x04E6, 0x0E0D },
+	{ 0x04EB, 0x060E },
+	{ 0x0441, 0xC759 },
+	{ 0x0442, 0x2A08 },
+	{ 0x0443, 0x5CFA },
+	{ 0x026E, 0x0064 },
+	{ 0x026F, 0x00EA },
+	{ 0x0270, 0x1F16 },
+	{ 0x0410, 0x2080 },
+	{ 0x0418, 0x2080 },
+	{ 0x0420, 0x2080 },
+	{ 0x04B8, 0x1120 },
+	{ 0x047E, 0x080E },
+	{ 0x0448, 0x03EF },
+};
+
+/* We use a function so we can use ARRAY_SIZE() */
+int wm8998_patch(struct arizona *arizona)
+{
+	return regmap_register_patch(arizona->regmap,
+				     wm8998_rev_a_patch,
+				     ARRAY_SIZE(wm8998_rev_a_patch));
+}
+
+static const struct regmap_irq wm8998_aod_irqs[ARIZONA_NUM_IRQ] = {
+	[ARIZONA_IRQ_MICD_CLAMP_FALL] = {
+		.mask = ARIZONA_MICD_CLAMP_FALL_EINT1
+	},
+	[ARIZONA_IRQ_MICD_CLAMP_RISE] = {
+		.mask = ARIZONA_MICD_CLAMP_RISE_EINT1
+	},
+	[ARIZONA_IRQ_GP5_FALL] = { .mask = ARIZONA_GP5_FALL_EINT1 },
+	[ARIZONA_IRQ_GP5_RISE] = { .mask = ARIZONA_GP5_RISE_EINT1 },
+	[ARIZONA_IRQ_JD_FALL] = { .mask = ARIZONA_JD1_FALL_EINT1 },
+	[ARIZONA_IRQ_JD_RISE] = { .mask = ARIZONA_JD1_RISE_EINT1 },
+};
+
+struct regmap_irq_chip wm8998_aod = {
+	.name = "wm8998 AOD",
+	.status_base = ARIZONA_AOD_IRQ1,
+	.mask_base = ARIZONA_AOD_IRQ_MASK_IRQ1,
+	.ack_base = ARIZONA_AOD_IRQ1,
+	.wake_base = ARIZONA_WAKE_CONTROL,
+	.wake_invert = 1,
+	.num_regs = 1,
+	.irqs = wm8998_aod_irqs,
+	.num_irqs = ARRAY_SIZE(wm8998_aod_irqs),
+};
+
+static const struct regmap_irq wm8998_irqs[ARIZONA_NUM_IRQ] = {
+	[ARIZONA_IRQ_GP4] = { .reg_offset = 0, .mask = ARIZONA_GP4_EINT1 },
+	[ARIZONA_IRQ_GP3] = { .reg_offset = 0, .mask = ARIZONA_GP3_EINT1 },
+	[ARIZONA_IRQ_GP2] = { .reg_offset = 0, .mask = ARIZONA_GP2_EINT1 },
+	[ARIZONA_IRQ_GP1] = { .reg_offset = 0, .mask = ARIZONA_GP1_EINT1 },
+
+	[ARIZONA_IRQ_SPK_OVERHEAT_WARN] = {
+		.reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_WARN_EINT1
+	},
+	[ARIZONA_IRQ_SPK_OVERHEAT] = {
+		.reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_EINT1
+	},
+	[ARIZONA_IRQ_HPDET] = {
+		.reg_offset = 2, .mask = ARIZONA_HPDET_EINT1
+	},
+	[ARIZONA_IRQ_MICDET] = {
+		.reg_offset = 2, .mask = ARIZONA_MICDET_EINT1
+	},
+	[ARIZONA_IRQ_WSEQ_DONE] = {
+		.reg_offset = 2, .mask = ARIZONA_WSEQ_DONE_EINT1
+	},
+	[ARIZONA_IRQ_DRC1_SIG_DET] = {
+		.reg_offset = 2, .mask = ARIZONA_DRC1_SIG_DET_EINT1
+	},
+	[ARIZONA_IRQ_ASRC2_LOCK] = {
+		.reg_offset = 2, .mask = ARIZONA_ASRC2_LOCK_EINT1
+	},
+	[ARIZONA_IRQ_ASRC1_LOCK] = {
+		.reg_offset = 2, .mask = ARIZONA_ASRC1_LOCK_EINT1
+	},
+	[ARIZONA_IRQ_UNDERCLOCKED] = {
+		.reg_offset = 2, .mask = ARIZONA_UNDERCLOCKED_EINT1
+	},
+	[ARIZONA_IRQ_OVERCLOCKED] = {
+		.reg_offset = 2, .mask = ARIZONA_OVERCLOCKED_EINT1
+	},
+	[ARIZONA_IRQ_FLL2_LOCK] = {
+		.reg_offset = 2, .mask = ARIZONA_FLL2_LOCK_EINT1
+	},
+	[ARIZONA_IRQ_FLL1_LOCK] = {
+		.reg_offset = 2, .mask = ARIZONA_FLL1_LOCK_EINT1
+	},
+	[ARIZONA_IRQ_CLKGEN_ERR] = {
+		.reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_EINT1
+	},
+	[ARIZONA_IRQ_CLKGEN_ERR_ASYNC] = {
+		.reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_ASYNC_EINT1
+	},
+
+	[ARIZONA_IRQ_ASRC_CFG_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_ASRC_CFG_ERR_EINT1
+	},
+	[ARIZONA_IRQ_AIF3_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_AIF3_ERR_EINT1
+	},
+	[ARIZONA_IRQ_AIF2_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_AIF2_ERR_EINT1
+	},
+	[ARIZONA_IRQ_AIF1_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_AIF1_ERR_EINT1
+	},
+	[ARIZONA_IRQ_CTRLIF_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_CTRLIF_ERR_EINT1
+	},
+	[ARIZONA_IRQ_MIXER_DROPPED_SAMPLES] = {
+		.reg_offset = 3, .mask = ARIZONA_MIXER_DROPPED_SAMPLE_EINT1
+	},
+	[ARIZONA_IRQ_ASYNC_CLK_ENA_LOW] = {
+		.reg_offset = 3, .mask = ARIZONA_ASYNC_CLK_ENA_LOW_EINT1
+	},
+	[ARIZONA_IRQ_SYSCLK_ENA_LOW] = {
+		.reg_offset = 3, .mask = ARIZONA_SYSCLK_ENA_LOW_EINT1
+	},
+	[ARIZONA_IRQ_ISRC1_CFG_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_ISRC1_CFG_ERR_EINT1
+	},
+	[ARIZONA_IRQ_ISRC2_CFG_ERR] = {
+		.reg_offset = 3, .mask = ARIZONA_ISRC2_CFG_ERR_EINT1
+	},
+
+	[ARIZONA_IRQ_BOOT_DONE] = {
+		.reg_offset = 4, .mask = ARIZONA_BOOT_DONE_EINT1
+	},
+	[ARIZONA_IRQ_FLL2_CLOCK_OK] = {
+		.reg_offset = 4, .mask = ARIZONA_FLL2_CLOCK_OK_EINT1
+	},
+	[ARIZONA_IRQ_FLL1_CLOCK_OK] = {
+		.reg_offset = 4, .mask = ARIZONA_FLL1_CLOCK_OK_EINT1
+	},
+};
+
+struct regmap_irq_chip wm8998_irq = {
+	.name = "wm8998 IRQ",
+	.status_base = ARIZONA_INTERRUPT_STATUS_1,
+	.mask_base = ARIZONA_INTERRUPT_STATUS_1_MASK,
+	.ack_base = ARIZONA_INTERRUPT_STATUS_1,
+	.num_regs = 5,
+	.irqs = wm8998_irqs,
+	.num_irqs = ARRAY_SIZE(wm8998_irqs),
+};
+
+static const struct reg_default wm8998_reg_default[] = {
+	{ 0x00000009, 0x0001 },    /* R9     - Ctrl IF I2C1 CFG 1 */
+	{ 0x0000000B, 0x001A },    /* R11    - Ctrl IF I2C1 CFG 2 */
+	{ 0x00000020, 0x0000 },    /* R32    - Tone Generator 1 */
+	{ 0x00000021, 0x1000 },    /* R33    - Tone Generator 2 */
+	{ 0x00000022, 0x0000 },    /* R34    - Tone Generator 3 */
+	{ 0x00000023, 0x1000 },    /* R35    - Tone Generator 4 */
+	{ 0x00000024, 0x0000 },    /* R36    - Tone Generator 5 */
+	{ 0x00000030, 0x0000 },    /* R48    - PWM Drive 1 */
+	{ 0x00000031, 0x0100 },    /* R49    - PWM Drive 2 */
+	{ 0x00000032, 0x0100 },    /* R50    - PWM Drive 3 */
+	{ 0x00000040, 0x0000 },    /* R64    - Wake control */
+	{ 0x00000041, 0x0000 },    /* R65    - Sequence control */
+	{ 0x00000061, 0x01FF },    /* R97    - Sample Rate Sequence Select 1 */
+	{ 0x00000062, 0x01FF },    /* R98    - Sample Rate Sequence Select 2 */
+	{ 0x00000063, 0x01FF },    /* R99    - Sample Rate Sequence Select 3 */
+	{ 0x00000064, 0x01FF },    /* R100   - Sample Rate Sequence Select 4 */
+	{ 0x00000066, 0x01FF },    /* R102   - Always On Triggers Sequence Select 1 */
+	{ 0x00000067, 0x01FF },    /* R103   - Always On Triggers Sequence Select 2 */
+	{ 0x00000068, 0x01FF },    /* R104   - Always On Triggers Sequence Select 3 */
+	{ 0x00000069, 0x01FF },    /* R105   - Always On Triggers Sequence Select 4 */
+	{ 0x0000006A, 0x01FF },    /* R106   - Always On Triggers Sequence Select 5 */
+	{ 0x0000006B, 0x01FF },    /* R107   - Always On Triggers Sequence Select 6 */
+	{ 0x0000006E, 0x01FF },    /* R110   - Trigger Sequence Select 32 */
+	{ 0x0000006F, 0x01FF },    /* R111   - Trigger Sequence Select 33 */
+	{ 0x00000090, 0x0000 },    /* R144   - Haptics Control 1 */
+	{ 0x00000091, 0x7FFF },    /* R145   - Haptics Control 2 */
+	{ 0x00000092, 0x0000 },    /* R146   - Haptics phase 1 intensity */
+	{ 0x00000093, 0x0000 },    /* R147   - Haptics phase 1 duration */
+	{ 0x00000094, 0x0000 },    /* R148   - Haptics phase 2 intensity */
+	{ 0x00000095, 0x0000 },    /* R149   - Haptics phase 2 duration */
+	{ 0x00000096, 0x0000 },    /* R150   - Haptics phase 3 intensity */
+	{ 0x00000097, 0x0000 },    /* R151   - Haptics phase 3 duration */
+	{ 0x00000100, 0x0002 },    /* R256   - Clock 32k 1 */
+	{ 0x00000101, 0x0304 },    /* R257   - System Clock 1 */
+	{ 0x00000102, 0x0011 },    /* R258   - Sample rate 1 */
+	{ 0x00000103, 0x0011 },    /* R259   - Sample rate 2 */
+	{ 0x00000104, 0x0011 },    /* R260   - Sample rate 3 */
+	{ 0x00000112, 0x0305 },    /* R274   - Async clock 1 */
+	{ 0x00000113, 0x0011 },    /* R275   - Async sample rate 1 */
+	{ 0x00000114, 0x0011 },    /* R276   - Async sample rate 2 */
+	{ 0x00000149, 0x0000 },    /* R329   - Output system clock */
+	{ 0x0000014A, 0x0000 },    /* R330   - Output async clock */
+	{ 0x00000152, 0x0000 },    /* R338   - Rate Estimator 1 */
+	{ 0x00000153, 0x0000 },    /* R339   - Rate Estimator 2 */
+	{ 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, 0x0002 },    /* R369   - FLL1 Control 1 */
+	{ 0x00000172, 0x0008 },    /* R370   - FLL1 Control 2 */
+	{ 0x00000173, 0x0018 },    /* R371   - FLL1 Control 3 */
+	{ 0x00000174, 0x007D },    /* R372   - FLL1 Control 4 */
+	{ 0x00000175, 0x0004 },    /* R373   - FLL1 Control 5 */
+	{ 0x00000176, 0x0000 },    /* R374   - FLL1 Control 6 */
+	{ 0x00000177, 0x0181 },    /* R375   - FLL1 Loop Filter Test 1 */
+	{ 0x00000178, 0x0000 },    /* R376   - FLL1 NCO Test 0 */
+	{ 0x00000179, 0x0000 },    /* R377   - FLL1 Control 7 */
+	{ 0x00000181, 0x0000 },    /* R385   - FLL1 Synchroniser 1 */
+	{ 0x00000182, 0x0000 },    /* R386   - FLL1 Synchroniser 2 */
+	{ 0x00000183, 0x0000 },    /* R387   - FLL1 Synchroniser 3 */
+	{ 0x00000184, 0x0000 },    /* R388   - FLL1 Synchroniser 4 */
+	{ 0x00000185, 0x0000 },    /* R389   - FLL1 Synchroniser 5 */
+	{ 0x00000186, 0x0000 },    /* R390   - FLL1 Synchroniser 6 */
+	{ 0x00000187, 0x0001 },    /* R391   - FLL1 Synchroniser 7 */
+	{ 0x00000189, 0x0000 },    /* R393   - FLL1 Spread Spectrum */
+	{ 0x0000018A, 0x0004 },    /* R394   - FLL1 GPIO Clock */
+	{ 0x00000191, 0x0000 },    /* R401   - FLL2 Control 1 */
+	{ 0x00000192, 0x0008 },    /* R402   - FLL2 Control 2 */
+	{ 0x00000193, 0x0018 },    /* R403   - FLL2 Control 3 */
+	{ 0x00000194, 0x007D },    /* R404   - FLL2 Control 4 */
+	{ 0x00000195, 0x0004 },    /* R405   - FLL2 Control 5 */
+	{ 0x00000196, 0x0000 },    /* R406   - FLL2 Control 6 */
+	{ 0x00000197, 0x0000 },    /* R407   - FLL2 Loop Filter Test 1 */
+	{ 0x00000198, 0x0000 },    /* R408   - FLL2 NCO Test 0 */
+	{ 0x00000199, 0x0000 },    /* R409   - FLL2 Control 7 */
+	{ 0x000001A1, 0x0000 },    /* R417   - FLL2 Synchroniser 1 */
+	{ 0x000001A2, 0x0000 },    /* R418   - FLL2 Synchroniser 2 */
+	{ 0x000001A3, 0x0000 },    /* R419   - FLL2 Synchroniser 3 */
+	{ 0x000001A4, 0x0000 },    /* R420   - FLL2 Synchroniser 4 */
+	{ 0x000001A5, 0x0000 },    /* R421   - FLL2 Synchroniser 5 */
+	{ 0x000001A6, 0x0000 },    /* R422   - FLL2 Synchroniser 6 */
+	{ 0x000001A7, 0x0001 },    /* R423   - FLL2 Synchroniser 7 */
+	{ 0x000001A9, 0x0000 },    /* R425   - FLL2 Spread Spectrum */
+	{ 0x000001AA, 0x0004 },    /* R426   - FLL2 GPIO Clock */
+	{ 0x00000200, 0x0006 },    /* R512   - Mic Charge Pump 1 */
+	{ 0x00000210, 0x00D4 },    /* R528   - LDO1 Control 1 */
+	{ 0x00000212, 0x0000 },    /* R530   - LDO1 Control 2 */
+	{ 0x00000213, 0x0344 },    /* R531   - LDO2 Control 1 */
+	{ 0x00000218, 0x01A6 },    /* R536   - Mic Bias Ctrl 1 */
+	{ 0x00000219, 0x01A6 },    /* R537   - Mic Bias Ctrl 2 */
+	{ 0x0000021A, 0x01A6 },    /* R538   - Mic Bias Ctrl 3 */
+	{ 0x00000293, 0x0080 },    /* R659   - Accessory Detect Mode 1 */
+	{ 0x0000029B, 0x0000 },    /* R667   - Headphone Detect 1 */
+	{ 0x0000029C, 0x0000 },    /* R668   - Headphone Detect 2 */
+	{ 0x000002A2, 0x0000 },    /* R674   - Micd Clamp control */
+	{ 0x000002A3, 0x1102 },    /* R675   - Mic Detect 1 */
+	{ 0x000002A4, 0x009F },    /* R676   - Mic Detect 2 */
+	{ 0x000002A5, 0x0000 },    /* R677   - Mic Detect 3 */
+	{ 0x000002A6, 0x3737 },    /* R678   - Mic Detect Level 1 */
+	{ 0x000002A7, 0x2C37 },    /* R679   - Mic Detect Level 2 */
+	{ 0x000002A8, 0x1422 },    /* R680   - Mic Detect Level 3 */
+	{ 0x000002A9, 0x030A },    /* R681   - Mic Detect Level 4 */
+	{ 0x000002AB, 0x0000 },    /* R683   - Mic Detect 4 */
+	{ 0x000002CB, 0x0000 },    /* R715   - Isolation control */
+	{ 0x000002D3, 0x0000 },    /* R723   - Jack detect analogue */
+	{ 0x00000300, 0x0000 },    /* R768   - Input Enables */
+	{ 0x00000308, 0x0000 },    /* R776   - Input Rate */
+	{ 0x00000309, 0x0022 },    /* R777   - Input Volume Ramp */
+	{ 0x0000030C, 0x0002 },    /* R780   - HPF Control */
+	{ 0x00000310, 0x2080 },    /* R784   - IN1L Control */
+	{ 0x00000311, 0x0180 },    /* R785   - ADC Digital Volume 1L */
+	{ 0x00000312, 0x0000 },    /* R786   - DMIC1L Control */
+	{ 0x00000314, 0x0080 },    /* R788   - IN1R Control */
+	{ 0x00000315, 0x0180 },    /* R789   - ADC Digital Volume 1R */
+	{ 0x00000316, 0x0000 },    /* R790   - DMIC1R Control */
+	{ 0x00000318, 0x2080 },    /* R792   - IN2L Control */
+	{ 0x00000319, 0x0180 },    /* R793   - ADC Digital Volume 2L */
+	{ 0x0000031A, 0x0000 },    /* R794   - DMIC2L Control */
+	{ 0x00000400, 0x0000 },    /* R1024  - Output Enables 1 */
+	{ 0x00000408, 0x0000 },    /* R1032  - Output Rate 1 */
+	{ 0x00000409, 0x0022 },    /* R1033  - Output Volume Ramp */
+	{ 0x00000410, 0x2080 },    /* R1040  - Output Path Config 1L */
+	{ 0x00000411, 0x0180 },    /* R1041  - DAC Digital Volume 1L */
+	{ 0x00000413, 0x0001 },    /* R1043  - Noise Gate Select 1L */
+	{ 0x00000414, 0x0080 },    /* R1044  - Output Path Config 1R */
+	{ 0x00000415, 0x0180 },    /* R1045  - DAC Digital Volume 1R */
+	{ 0x00000417, 0x0002 },    /* R1047  - Noise Gate Select 1R */
+	{ 0x00000418, 0x2080 },    /* R1048  - Output Path Config 2L */
+	{ 0x00000419, 0x0180 },    /* R1049  - DAC Digital Volume 2L */
+	{ 0x0000041B, 0x0004 },    /* R1051  - Noise Gate Select 2L */
+	{ 0x0000041C, 0x0080 },    /* R1052  - Output Path Config 2R */
+	{ 0x0000041D, 0x0180 },    /* R1053  - DAC Digital Volume 2R */
+	{ 0x0000041F, 0x0008 },    /* R1055  - Noise Gate Select 2R */
+	{ 0x00000420, 0x2080 },    /* R1056  - Output Path Config 3L */
+	{ 0x00000421, 0x0180 },    /* R1057  - DAC Digital Volume 3L */
+	{ 0x00000423, 0x0010 },    /* R1059  - Noise Gate Select 3L */
+	{ 0x00000428, 0x0000 },    /* R1064  - Output Path Config 4L */
+	{ 0x00000429, 0x0180 },    /* R1065  - DAC Digital Volume 4L */
+	{ 0x0000042B, 0x0040 },    /* R1067  - Noise Gate Select 4L */
+	{ 0x0000042C, 0x0000 },    /* R1068  - Output Path Config 4R */
+	{ 0x0000042D, 0x0180 },    /* R1069  - DAC Digital Volume 4R */
+	{ 0x0000042F, 0x0080 },    /* R1071  - Noise Gate Select 4R */
+	{ 0x00000430, 0x0000 },    /* R1072  - Output Path Config 5L */
+	{ 0x00000431, 0x0180 },    /* R1073  - DAC Digital Volume 5L */
+	{ 0x00000433, 0x0100 },    /* R1075  - Noise Gate Select 5L */
+	{ 0x00000434, 0x0000 },    /* R1076  - Output Path Config 5R */
+	{ 0x00000435, 0x0180 },    /* R1077  - DAC Digital Volume 5R */
+	{ 0x00000437, 0x0200 },    /* R1079  - Noise Gate Select 5R */
+	{ 0x00000440, 0x8FFF },    /* R1088  - DRE Enable */
+	{ 0x00000441, 0xC759 },    /* R1089  - DRE Control 1 */
+	{ 0x00000442, 0x2A08 },    /* R1089  - DRE Control 2 */
+	{ 0x00000443, 0x5CFA },    /* R1089  - DRE Control 3 */
+	{ 0x00000448, 0x03EF },    /* R1096  - EDRE Enable */
+	{ 0x00000450, 0x0000 },    /* R1104  - DAC AEC Control 1 */
+	{ 0x00000451, 0x0000 },    /* R1105  - DAC AEC Control 2 */
+	{ 0x00000458, 0x0000 },    /* R1112  - Noise Gate Control */
+	{ 0x00000490, 0x0069 },    /* R1168  - PDM SPK1 CTRL 1 */
+	{ 0x00000491, 0x0000 },    /* R1169  - PDM SPK1 CTRL 2 */
+	{ 0x0000049A, 0x0000 },    /* R1178  - HP_TEST_CTRL_13 */
+	{ 0x00000500, 0x000C },    /* R1280  - AIF1 BCLK Ctrl */
+	{ 0x00000501, 0x0008 },    /* R1281  - AIF1 Tx Pin Ctrl */
+	{ 0x00000502, 0x0000 },    /* R1282  - AIF1 Rx Pin Ctrl */
+	{ 0x00000503, 0x0000 },    /* R1283  - AIF1 Rate Ctrl */
+	{ 0x00000504, 0x0000 },    /* R1284  - AIF1 Format */
+	{ 0x00000506, 0x0040 },    /* R1286  - AIF1 Rx BCLK Rate */
+	{ 0x00000507, 0x1818 },    /* R1287  - AIF1 Frame Ctrl 1 */
+	{ 0x00000508, 0x1818 },    /* R1288  - AIF1 Frame Ctrl 2 */
+	{ 0x00000509, 0x0000 },    /* R1289  - AIF1 Frame Ctrl 3 */
+	{ 0x0000050A, 0x0001 },    /* R1290  - AIF1 Frame Ctrl 4 */
+	{ 0x0000050B, 0x0002 },    /* R1291  - AIF1 Frame Ctrl 5 */
+	{ 0x0000050C, 0x0003 },    /* R1292  - AIF1 Frame Ctrl 6 */
+	{ 0x0000050D, 0x0004 },    /* R1293  - AIF1 Frame Ctrl 7 */
+	{ 0x0000050E, 0x0005 },    /* R1294  - AIF1 Frame Ctrl 8 */
+	{ 0x00000511, 0x0000 },    /* R1297  - AIF1 Frame Ctrl 11 */
+	{ 0x00000512, 0x0001 },    /* R1298  - AIF1 Frame Ctrl 12 */
+	{ 0x00000513, 0x0002 },    /* R1299  - AIF1 Frame Ctrl 13 */
+	{ 0x00000514, 0x0003 },    /* R1300  - AIF1 Frame Ctrl 14 */
+	{ 0x00000515, 0x0004 },    /* R1301  - AIF1 Frame Ctrl 15 */
+	{ 0x00000516, 0x0005 },    /* R1302  - AIF1 Frame Ctrl 16 */
+	{ 0x00000519, 0x0000 },    /* R1305  - AIF1 Tx Enables */
+	{ 0x0000051A, 0x0000 },    /* R1306  - AIF1 Rx Enables */
+	{ 0x00000540, 0x000C },    /* R1344  - AIF2 BCLK Ctrl */
+	{ 0x00000541, 0x0008 },    /* R1345  - AIF2 Tx Pin Ctrl */
+	{ 0x00000542, 0x0000 },    /* R1346  - AIF2 Rx Pin Ctrl */
+	{ 0x00000543, 0x0000 },    /* R1347  - AIF2 Rate Ctrl */
+	{ 0x00000544, 0x0000 },    /* R1348  - AIF2 Format */
+	{ 0x00000546, 0x0040 },    /* R1350  - AIF2 Rx BCLK Rate */
+	{ 0x00000547, 0x1818 },    /* R1351  - AIF2 Frame Ctrl 1 */
+	{ 0x00000548, 0x1818 },    /* R1352  - AIF2 Frame Ctrl 2 */
+	{ 0x00000549, 0x0000 },    /* R1353  - AIF2 Frame Ctrl 3 */
+	{ 0x0000054A, 0x0001 },    /* R1354  - AIF2 Frame Ctrl 4 */
+	{ 0x0000054B, 0x0002 },    /* R1355  - AIF2 Frame Ctrl 5 */
+	{ 0x0000054C, 0x0003 },    /* R1356  - AIF2 Frame Ctrl 6 */
+	{ 0x0000054D, 0x0004 },    /* R1357  - AIF2 Frame Ctrl 7 */
+	{ 0x0000054E, 0x0005 },    /* R1358  - AIF2 Frame Ctrl 8 */
+	{ 0x00000551, 0x0000 },    /* R1361  - AIF2 Frame Ctrl 11 */
+	{ 0x00000552, 0x0001 },    /* R1362  - AIF2 Frame Ctrl 12 */
+	{ 0x00000553, 0x0002 },    /* R1363  - AIF2 Frame Ctrl 13 */
+	{ 0x00000554, 0x0003 },    /* R1364  - AIF2 Frame Ctrl 14 */
+	{ 0x00000555, 0x0004 },    /* R1365  - AIF2 Frame Ctrl 15 */
+	{ 0x00000556, 0x0005 },    /* R1366  - AIF2 Frame Ctrl 16 */
+	{ 0x00000559, 0x0000 },    /* R1369  - AIF2 Tx Enables */
+	{ 0x0000055A, 0x0000 },    /* R1370  - AIF2 Rx Enables */
+	{ 0x00000580, 0x000C },    /* R1408  - AIF3 BCLK Ctrl */
+	{ 0x00000581, 0x0008 },    /* R1409  - AIF3 Tx Pin Ctrl */
+	{ 0x00000582, 0x0000 },    /* R1410  - AIF3 Rx Pin Ctrl */
+	{ 0x00000583, 0x0000 },    /* R1411  - AIF3 Rate Ctrl */
+	{ 0x00000584, 0x0000 },    /* R1412  - AIF3 Format */
+	{ 0x00000586, 0x0040 },    /* R1414  - AIF3 Rx BCLK Rate */
+	{ 0x00000587, 0x1818 },    /* R1415  - AIF3 Frame Ctrl 1 */
+	{ 0x00000588, 0x1818 },    /* R1416  - AIF3 Frame Ctrl 2 */
+	{ 0x00000589, 0x0000 },    /* R1417  - AIF3 Frame Ctrl 3 */
+	{ 0x0000058A, 0x0001 },    /* R1418  - AIF3 Frame Ctrl 4 */
+	{ 0x00000591, 0x0000 },    /* R1425  - AIF3 Frame Ctrl 11 */
+	{ 0x00000592, 0x0001 },    /* R1426  - AIF3 Frame Ctrl 12 */
+	{ 0x00000599, 0x0000 },    /* R1433  - AIF3 Tx Enables */
+	{ 0x0000059A, 0x0000 },    /* R1434  - AIF3 Rx Enables */
+	{ 0x000005C2, 0x0000 },    /* R1474  - SPD1 TX Control */
+	{ 0x000005C3, 0x0000 },    /* R1475  - SPD1 TX Channel Status 1 */
+	{ 0x000005C4, 0x0B01 },    /* R1476  - SPD1 TX Channel Status 2 */
+	{ 0x000005C5, 0x0000 },    /* R1477  - SPD1 TX Channel Status 3 */
+	{ 0x000005E3, 0x0004 },    /* R1507  - SLIMbus Framer Ref Gear */
+	{ 0x000005E5, 0x0000 },    /* R1509  - SLIMbus Rates 1 */
+	{ 0x000005E6, 0x0000 },    /* R1510  - SLIMbus Rates 2 */
+	{ 0x000005E9, 0x0000 },    /* R1513  - SLIMbus Rates 5 */
+	{ 0x000005EA, 0x0000 },    /* R1514  - SLIMbus Rates 6 */
+	{ 0x000005EB, 0x0000 },    /* R1515  - SLIMbus Rates 7 */
+	{ 0x000005F5, 0x0000 },    /* R1525  - SLIMbus RX Channel Enable */
+	{ 0x000005F6, 0x0000 },    /* R1526  - SLIMbus TX Channel Enable */
+	{ 0x00000640, 0x0000 },    /* R1600  - PWM1MIX Input 1 Source */
+	{ 0x00000641, 0x0080 },    /* R1601  - PWM1MIX Input 1 Volume */
+	{ 0x00000642, 0x0000 },    /* R1602  - PWM1MIX Input 2 Source */
+	{ 0x00000643, 0x0080 },    /* R1603  - PWM1MIX Input 2 Volume */
+	{ 0x00000644, 0x0000 },    /* R1604  - PWM1MIX Input 3 Source */
+	{ 0x00000645, 0x0080 },    /* R1605  - PWM1MIX Input 3 Volume */
+	{ 0x00000646, 0x0000 },    /* R1606  - PWM1MIX Input 4 Source */
+	{ 0x00000647, 0x0080 },    /* R1607  - PWM1MIX Input 4 Volume */
+	{ 0x00000648, 0x0000 },    /* R1608  - PWM2MIX Input 1 Source */
+	{ 0x00000649, 0x0080 },    /* R1609  - PWM2MIX Input 1 Volume */
+	{ 0x0000064A, 0x0000 },    /* R1610  - PWM2MIX Input 2 Source */
+	{ 0x0000064B, 0x0080 },    /* R1611  - PWM2MIX Input 2 Volume */
+	{ 0x0000064C, 0x0000 },    /* R1612  - PWM2MIX Input 3 Source */
+	{ 0x0000064D, 0x0080 },    /* R1613  - PWM2MIX Input 3 Volume */
+	{ 0x0000064E, 0x0000 },    /* R1614  - PWM2MIX Input 4 Source */
+	{ 0x0000064F, 0x0080 },    /* R1615  - PWM2MIX Input 4 Volume */
+	{ 0x00000680, 0x0000 },    /* R1664  - OUT1LMIX Input 1 Source */
+	{ 0x00000681, 0x0080 },    /* R1665  - OUT1LMIX Input 1 Volume */
+	{ 0x00000682, 0x0000 },    /* R1666  - OUT1LMIX Input 2 Source */
+	{ 0x00000683, 0x0080 },    /* R1667  - OUT1LMIX Input 2 Volume */
+	{ 0x00000684, 0x0000 },    /* R1668  - OUT1LMIX Input 3 Source */
+	{ 0x00000685, 0x0080 },    /* R1669  - OUT1LMIX Input 3 Volume */
+	{ 0x00000686, 0x0000 },    /* R1670  - OUT1LMIX Input 4 Source */
+	{ 0x00000687, 0x0080 },    /* R1671  - OUT1LMIX Input 4 Volume */
+	{ 0x00000688, 0x0000 },    /* R1672  - OUT1RMIX Input 1 Source */
+	{ 0x00000689, 0x0080 },    /* R1673  - OUT1RMIX Input 1 Volume */
+	{ 0x0000068A, 0x0000 },    /* R1674  - OUT1RMIX Input 2 Source */
+	{ 0x0000068B, 0x0080 },    /* R1675  - OUT1RMIX Input 2 Volume */
+	{ 0x0000068C, 0x0000 },    /* R1676  - OUT1RMIX Input 3 Source */
+	{ 0x0000068D, 0x0080 },    /* R1677  - OUT1RMIX Input 3 Volume */
+	{ 0x0000068E, 0x0000 },    /* R1678  - OUT1RMIX Input 4 Source */
+	{ 0x0000068F, 0x0080 },    /* R1679  - OUT1RMIX Input 4 Volume */
+	{ 0x00000690, 0x0000 },    /* R1680  - OUT2LMIX Input 1 Source */
+	{ 0x00000691, 0x0080 },    /* R1681  - OUT2LMIX Input 1 Volume */
+	{ 0x00000692, 0x0000 },    /* R1682  - OUT2LMIX Input 2 Source */
+	{ 0x00000693, 0x0080 },    /* R1683  - OUT2LMIX Input 2 Volume */
+	{ 0x00000694, 0x0000 },    /* R1684  - OUT2LMIX Input 3 Source */
+	{ 0x00000695, 0x0080 },    /* R1685  - OUT2LMIX Input 3 Volume */
+	{ 0x00000696, 0x0000 },    /* R1686  - OUT2LMIX Input 4 Source */
+	{ 0x00000697, 0x0080 },    /* R1687  - OUT2LMIX Input 4 Volume */
+	{ 0x00000698, 0x0000 },    /* R1688  - OUT2RMIX Input 1 Source */
+	{ 0x00000699, 0x0080 },    /* R1689  - OUT2RMIX Input 1 Volume */
+	{ 0x0000069A, 0x0000 },    /* R1690  - OUT2RMIX Input 2 Source */
+	{ 0x0000069B, 0x0080 },    /* R1691  - OUT2RMIX Input 2 Volume */
+	{ 0x0000069C, 0x0000 },    /* R1692  - OUT2RMIX Input 3 Source */
+	{ 0x0000069D, 0x0080 },    /* R1693  - OUT2RMIX Input 3 Volume */
+	{ 0x0000069E, 0x0000 },    /* R1694  - OUT2RMIX Input 4 Source */
+	{ 0x0000069F, 0x0080 },    /* R1695  - OUT2RMIX Input 4 Volume */
+	{ 0x000006A0, 0x0000 },    /* R1696  - OUT3LMIX Input 1 Source */
+	{ 0x000006A1, 0x0080 },    /* R1697  - OUT3LMIX Input 1 Volume */
+	{ 0x000006A2, 0x0000 },    /* R1698  - OUT3LMIX Input 2 Source */
+	{ 0x000006A3, 0x0080 },    /* R1699  - OUT3LMIX Input 2 Volume */
+	{ 0x000006A4, 0x0000 },    /* R1700  - OUT3LMIX Input 3 Source */
+	{ 0x000006A5, 0x0080 },    /* R1701  - OUT3LMIX Input 3 Volume */
+	{ 0x000006A6, 0x0000 },    /* R1702  - OUT3LMIX Input 4 Source */
+	{ 0x000006A7, 0x0080 },    /* R1703  - OUT3LMIX Input 4 Volume */
+	{ 0x000006B0, 0x0000 },    /* R1712  - OUT4LMIX Input 1 Source */
+	{ 0x000006B1, 0x0080 },    /* R1713  - OUT4LMIX Input 1 Volume */
+	{ 0x000006B2, 0x0000 },    /* R1714  - OUT4LMIX Input 2 Source */
+	{ 0x000006B3, 0x0080 },    /* R1715  - OUT4LMIX Input 2 Volume */
+	{ 0x000006B4, 0x0000 },    /* R1716  - OUT4LMIX Input 3 Source */
+	{ 0x000006B5, 0x0080 },    /* R1717  - OUT4LMIX Input 3 Volume */
+	{ 0x000006B6, 0x0000 },    /* R1718  - OUT4LMIX Input 4 Source */
+	{ 0x000006B7, 0x0080 },    /* R1719  - OUT4LMIX Input 4 Volume */
+	{ 0x000006B8, 0x0000 },    /* R1720  - OUT4RMIX Input 1 Source */
+	{ 0x000006B9, 0x0080 },    /* R1721  - OUT4RMIX Input 1 Volume */
+	{ 0x000006BA, 0x0000 },    /* R1722  - OUT4RMIX Input 2 Source */
+	{ 0x000006BB, 0x0080 },    /* R1723  - OUT4RMIX Input 2 Volume */
+	{ 0x000006BC, 0x0000 },    /* R1724  - OUT4RMIX Input 3 Source */
+	{ 0x000006BD, 0x0080 },    /* R1725  - OUT4RMIX Input 3 Volume */
+	{ 0x000006BE, 0x0000 },    /* R1726  - OUT4RMIX Input 4 Source */
+	{ 0x000006BF, 0x0080 },    /* R1727  - OUT4RMIX Input 4 Volume */
+	{ 0x000006C0, 0x0000 },    /* R1728  - OUT5LMIX Input 1 Source */
+	{ 0x000006C1, 0x0080 },    /* R1729  - OUT5LMIX Input 1 Volume */
+	{ 0x000006C2, 0x0000 },    /* R1730  - OUT5LMIX Input 2 Source */
+	{ 0x000006C3, 0x0080 },    /* R1731  - OUT5LMIX Input 2 Volume */
+	{ 0x000006C4, 0x0000 },    /* R1732  - OUT5LMIX Input 3 Source */
+	{ 0x000006C5, 0x0080 },    /* R1733  - OUT5LMIX Input 3 Volume */
+	{ 0x000006C6, 0x0000 },    /* R1734  - OUT5LMIX Input 4 Source */
+	{ 0x000006C7, 0x0080 },    /* R1735  - OUT5LMIX Input 4 Volume */
+	{ 0x000006C8, 0x0000 },    /* R1736  - OUT5RMIX Input 1 Source */
+	{ 0x000006C9, 0x0080 },    /* R1737  - OUT5RMIX Input 1 Volume */
+	{ 0x000006CA, 0x0000 },    /* R1738  - OUT5RMIX Input 2 Source */
+	{ 0x000006CB, 0x0080 },    /* R1739  - OUT5RMIX Input 2 Volume */
+	{ 0x000006CC, 0x0000 },    /* R1740  - OUT5RMIX Input 3 Source */
+	{ 0x000006CD, 0x0080 },    /* R1741  - OUT5RMIX Input 3 Volume */
+	{ 0x000006CE, 0x0000 },    /* R1742  - OUT5RMIX Input 4 Source */
+	{ 0x000006CF, 0x0080 },    /* R1743  - OUT5RMIX Input 4 Volume */
+	{ 0x00000700, 0x0000 },    /* R1792  - AIF1TX1MIX Input 1 Source */
+	{ 0x00000701, 0x0080 },    /* R1793  - AIF1TX1MIX Input 1 Volume */
+	{ 0x00000702, 0x0000 },    /* R1794  - AIF1TX1MIX Input 2 Source */
+	{ 0x00000703, 0x0080 },    /* R1795  - AIF1TX1MIX Input 2 Volume */
+	{ 0x00000704, 0x0000 },    /* R1796  - AIF1TX1MIX Input 3 Source */
+	{ 0x00000705, 0x0080 },    /* R1797  - AIF1TX1MIX Input 3 Volume */
+	{ 0x00000706, 0x0000 },    /* R1798  - AIF1TX1MIX Input 4 Source */
+	{ 0x00000707, 0x0080 },    /* R1799  - AIF1TX1MIX Input 4 Volume */
+	{ 0x00000708, 0x0000 },    /* R1800  - AIF1TX2MIX Input 1 Source */
+	{ 0x00000709, 0x0080 },    /* R1801  - AIF1TX2MIX Input 1 Volume */
+	{ 0x0000070A, 0x0000 },    /* R1802  - AIF1TX2MIX Input 2 Source */
+	{ 0x0000070B, 0x0080 },    /* R1803  - AIF1TX2MIX Input 2 Volume */
+	{ 0x0000070C, 0x0000 },    /* R1804  - AIF1TX2MIX Input 3 Source */
+	{ 0x0000070D, 0x0080 },    /* R1805  - AIF1TX2MIX Input 3 Volume */
+	{ 0x0000070E, 0x0000 },    /* R1806  - AIF1TX2MIX Input 4 Source */
+	{ 0x0000070F, 0x0080 },    /* R1807  - AIF1TX2MIX Input 4 Volume */
+	{ 0x00000710, 0x0000 },    /* R1808  - AIF1TX3MIX Input 1 Source */
+	{ 0x00000711, 0x0080 },    /* R1809  - AIF1TX3MIX Input 1 Volume */
+	{ 0x00000712, 0x0000 },    /* R1810  - AIF1TX3MIX Input 2 Source */
+	{ 0x00000713, 0x0080 },    /* R1811  - AIF1TX3MIX Input 2 Volume */
+	{ 0x00000714, 0x0000 },    /* R1812  - AIF1TX3MIX Input 3 Source */
+	{ 0x00000715, 0x0080 },    /* R1813  - AIF1TX3MIX Input 3 Volume */
+	{ 0x00000716, 0x0000 },    /* R1814  - AIF1TX3MIX Input 4 Source */
+	{ 0x00000717, 0x0080 },    /* R1815  - AIF1TX3MIX Input 4 Volume */
+	{ 0x00000718, 0x0000 },    /* R1816  - AIF1TX4MIX Input 1 Source */
+	{ 0x00000719, 0x0080 },    /* R1817  - AIF1TX4MIX Input 1 Volume */
+	{ 0x0000071A, 0x0000 },    /* R1818  - AIF1TX4MIX Input 2 Source */
+	{ 0x0000071B, 0x0080 },    /* R1819  - AIF1TX4MIX Input 2 Volume */
+	{ 0x0000071C, 0x0000 },    /* R1820  - AIF1TX4MIX Input 3 Source */
+	{ 0x0000071D, 0x0080 },    /* R1821  - AIF1TX4MIX Input 3 Volume */
+	{ 0x0000071E, 0x0000 },    /* R1822  - AIF1TX4MIX Input 4 Source */
+	{ 0x0000071F, 0x0080 },    /* R1823  - AIF1TX4MIX Input 4 Volume */
+	{ 0x00000720, 0x0000 },    /* R1824  - AIF1TX5MIX Input 1 Source */
+	{ 0x00000721, 0x0080 },    /* R1825  - AIF1TX5MIX Input 1 Volume */
+	{ 0x00000722, 0x0000 },    /* R1826  - AIF1TX5MIX Input 2 Source */
+	{ 0x00000723, 0x0080 },    /* R1827  - AIF1TX5MIX Input 2 Volume */
+	{ 0x00000724, 0x0000 },    /* R1828  - AIF1TX5MIX Input 3 Source */
+	{ 0x00000725, 0x0080 },    /* R1829  - AIF1TX5MIX Input 3 Volume */
+	{ 0x00000726, 0x0000 },    /* R1830  - AIF1TX5MIX Input 4 Source */
+	{ 0x00000727, 0x0080 },    /* R1831  - AIF1TX5MIX Input 4 Volume */
+	{ 0x00000728, 0x0000 },    /* R1832  - AIF1TX6MIX Input 1 Source */
+	{ 0x00000729, 0x0080 },    /* R1833  - AIF1TX6MIX Input 1 Volume */
+	{ 0x0000072A, 0x0000 },    /* R1834  - AIF1TX6MIX Input 2 Source */
+	{ 0x0000072B, 0x0080 },    /* R1835  - AIF1TX6MIX Input 2 Volume */
+	{ 0x0000072C, 0x0000 },    /* R1836  - AIF1TX6MIX Input 3 Source */
+	{ 0x0000072D, 0x0080 },    /* R1837  - AIF1TX6MIX Input 3 Volume */
+	{ 0x0000072E, 0x0000 },    /* R1838  - AIF1TX6MIX Input 4 Source */
+	{ 0x0000072F, 0x0080 },    /* R1839  - AIF1TX6MIX Input 4 Volume */
+	{ 0x00000740, 0x0000 },    /* R1856  - AIF2TX1MIX Input 1 Source */
+	{ 0x00000741, 0x0080 },    /* R1857  - AIF2TX1MIX Input 1 Volume */
+	{ 0x00000742, 0x0000 },    /* R1858  - AIF2TX1MIX Input 2 Source */
+	{ 0x00000743, 0x0080 },    /* R1859  - AIF2TX1MIX Input 2 Volume */
+	{ 0x00000744, 0x0000 },    /* R1860  - AIF2TX1MIX Input 3 Source */
+	{ 0x00000745, 0x0080 },    /* R1861  - AIF2TX1MIX Input 3 Volume */
+	{ 0x00000746, 0x0000 },    /* R1862  - AIF2TX1MIX Input 4 Source */
+	{ 0x00000747, 0x0080 },    /* R1863  - AIF2TX1MIX Input 4 Volume */
+	{ 0x00000748, 0x0000 },    /* R1864  - AIF2TX2MIX Input 1 Source */
+	{ 0x00000749, 0x0080 },    /* R1865  - AIF2TX2MIX Input 1 Volume */
+	{ 0x0000074A, 0x0000 },    /* R1866  - AIF2TX2MIX Input 2 Source */
+	{ 0x0000074B, 0x0080 },    /* R1867  - AIF2TX2MIX Input 2 Volume */
+	{ 0x0000074C, 0x0000 },    /* R1868  - AIF2TX2MIX Input 3 Source */
+	{ 0x0000074D, 0x0080 },    /* R1869  - AIF2TX2MIX Input 3 Volume */
+	{ 0x0000074E, 0x0000 },    /* R1870  - AIF2TX2MIX Input 4 Source */
+	{ 0x0000074F, 0x0080 },    /* R1871  - AIF2TX2MIX Input 4 Volume */
+	{ 0x00000750, 0x0000 },    /* R1872  - AIF2TX3MIX Input 1 Source */
+	{ 0x00000751, 0x0080 },    /* R1873  - AIF2TX3MIX Input 1 Volume */
+	{ 0x00000752, 0x0000 },    /* R1874  - AIF2TX3MIX Input 2 Source */
+	{ 0x00000753, 0x0080 },    /* R1875  - AIF2TX3MIX Input 2 Volume */
+	{ 0x00000754, 0x0000 },    /* R1876  - AIF2TX3MIX Input 3 Source */
+	{ 0x00000755, 0x0080 },    /* R1877  - AIF2TX3MIX Input 3 Volume */
+	{ 0x00000756, 0x0000 },    /* R1878  - AIF2TX3MIX Input 4 Source */
+	{ 0x00000757, 0x0080 },    /* R1879  - AIF2TX3MIX Input 4 Volume */
+	{ 0x00000758, 0x0000 },    /* R1880  - AIF2TX4MIX Input 1 Source */
+	{ 0x00000759, 0x0080 },    /* R1881  - AIF2TX4MIX Input 1 Volume */
+	{ 0x0000075A, 0x0000 },    /* R1882  - AIF2TX4MIX Input 2 Source */
+	{ 0x0000075B, 0x0080 },    /* R1883  - AIF2TX4MIX Input 2 Volume */
+	{ 0x0000075C, 0x0000 },    /* R1884  - AIF2TX4MIX Input 3 Source */
+	{ 0x0000075D, 0x0080 },    /* R1885  - AIF2TX4MIX Input 3 Volume */
+	{ 0x0000075E, 0x0000 },    /* R1886  - AIF2TX4MIX Input 4 Source */
+	{ 0x0000075F, 0x0080 },    /* R1887  - AIF2TX4MIX Input 4 Volume */
+	{ 0x00000760, 0x0000 },    /* R1888  - AIF2TX5MIX Input 1 Source */
+	{ 0x00000761, 0x0080 },    /* R1889  - AIF2TX5MIX Input 1 Volume */
+	{ 0x00000762, 0x0000 },    /* R1890  - AIF2TX5MIX Input 2 Source */
+	{ 0x00000763, 0x0080 },    /* R1891  - AIF2TX5MIX Input 2 Volume */
+	{ 0x00000764, 0x0000 },    /* R1892  - AIF2TX5MIX Input 3 Source */
+	{ 0x00000765, 0x0080 },    /* R1893  - AIF2TX5MIX Input 3 Volume */
+	{ 0x00000766, 0x0000 },    /* R1894  - AIF2TX5MIX Input 4 Source */
+	{ 0x00000767, 0x0080 },    /* R1895  - AIF2TX5MIX Input 4 Volume */
+	{ 0x00000768, 0x0000 },    /* R1896  - AIF2TX6MIX Input 1 Source */
+	{ 0x00000769, 0x0080 },    /* R1897  - AIF2TX6MIX Input 1 Volume */
+	{ 0x0000076A, 0x0000 },    /* R1898  - AIF2TX6MIX Input 2 Source */
+	{ 0x0000076B, 0x0080 },    /* R1899  - AIF2TX6MIX Input 2 Volume */
+	{ 0x0000076C, 0x0000 },    /* R1900  - AIF2TX6MIX Input 3 Source */
+	{ 0x0000076D, 0x0080 },    /* R1901  - AIF2TX6MIX Input 3 Volume */
+	{ 0x0000076E, 0x0000 },    /* R1902  - AIF2TX6MIX Input 4 Source */
+	{ 0x0000076F, 0x0080 },    /* R1903  - AIF2TX6MIX Input 4 Volume */
+	{ 0x00000780, 0x0000 },    /* R1920  - AIF3TX1MIX Input 1 Source */
+	{ 0x00000781, 0x0080 },    /* R1921  - AIF3TX1MIX Input 1 Volume */
+	{ 0x00000782, 0x0000 },    /* R1922  - AIF3TX1MIX Input 2 Source */
+	{ 0x00000783, 0x0080 },    /* R1923  - AIF3TX1MIX Input 2 Volume */
+	{ 0x00000784, 0x0000 },    /* R1924  - AIF3TX1MIX Input 3 Source */
+	{ 0x00000785, 0x0080 },    /* R1925  - AIF3TX1MIX Input 3 Volume */
+	{ 0x00000786, 0x0000 },    /* R1926  - AIF3TX1MIX Input 4 Source */
+	{ 0x00000787, 0x0080 },    /* R1927  - AIF3TX1MIX Input 4 Volume */
+	{ 0x00000788, 0x0000 },    /* R1928  - AIF3TX2MIX Input 1 Source */
+	{ 0x00000789, 0x0080 },    /* R1929  - AIF3TX2MIX Input 1 Volume */
+	{ 0x0000078A, 0x0000 },    /* R1930  - AIF3TX2MIX Input 2 Source */
+	{ 0x0000078B, 0x0080 },    /* R1931  - AIF3TX2MIX Input 2 Volume */
+	{ 0x0000078C, 0x0000 },    /* R1932  - AIF3TX2MIX Input 3 Source */
+	{ 0x0000078D, 0x0080 },    /* R1933  - AIF3TX2MIX Input 3 Volume */
+	{ 0x0000078E, 0x0000 },    /* R1934  - AIF3TX2MIX Input 4 Source */
+	{ 0x0000078F, 0x0080 },    /* R1935  - AIF3TX2MIX Input 4 Volume */
+	{ 0x000007C0, 0x0000 },    /* R1984  - SLIMTX1MIX Input 1 Source */
+	{ 0x000007C1, 0x0080 },    /* R1985  - SLIMTX1MIX Input 1 Volume */
+	{ 0x000007C8, 0x0000 },    /* R1992  - SLIMTX2MIX Input 1 Source */
+	{ 0x000007C9, 0x0080 },    /* R1993  - SLIMTX2MIX Input 1 Volume */
+	{ 0x000007D0, 0x0000 },    /* R2000  - SLIMTX3MIX Input 1 Source */
+	{ 0x000007D1, 0x0080 },    /* R2001  - SLIMTX3MIX Input 1 Volume */
+	{ 0x000007D8, 0x0000 },    /* R2008  - SLIMTX4MIX Input 1 Source */
+	{ 0x000007D9, 0x0080 },    /* R2009  - SLIMTX4MIX Input 1 Volume */
+	{ 0x000007E0, 0x0000 },    /* R2016  - SLIMTX5MIX Input 1 Source */
+	{ 0x000007E1, 0x0080 },    /* R2017  - SLIMTX5MIX Input 1 Volume */
+	{ 0x000007E8, 0x0000 },    /* R2024  - SLIMTX6MIX Input 1 Source */
+	{ 0x000007E9, 0x0080 },    /* R2025  - SLIMTX6MIX Input 1 Volume */
+	{ 0x00000800, 0x0000 },    /* R2048  - SPDIF1TX1MIX Input 1 Source */
+	{ 0x00000801, 0x0080 },    /* R2049  - SPDIF1TX1MIX Input 1 Volume */
+	{ 0x00000808, 0x0000 },    /* R2056  - SPDIF1TX2MIX Input 1 Source */
+	{ 0x00000809, 0x0080 },    /* R2057  - SPDIF1TX2MIX Input 1 Volume */
+	{ 0x00000880, 0x0000 },    /* R2176  - EQ1MIX Input 1 Source */
+	{ 0x00000881, 0x0080 },    /* R2177  - EQ1MIX Input 1 Volume */
+	{ 0x00000888, 0x0000 },    /* R2184  - EQ2MIX Input 1 Source */
+	{ 0x00000889, 0x0080 },    /* R2185  - EQ2MIX Input 1 Volume */
+	{ 0x00000890, 0x0000 },    /* R2192  - EQ3MIX Input 1 Source */
+	{ 0x00000891, 0x0080 },    /* R2193  - EQ3MIX Input 1 Volume */
+	{ 0x00000898, 0x0000 },    /* R2200  - EQ4MIX Input 1 Source */
+	{ 0x00000899, 0x0080 },    /* R2201  - EQ4MIX Input 1 Volume */
+	{ 0x000008C0, 0x0000 },    /* R2240  - DRC1LMIX Input 1 Source */
+	{ 0x000008C1, 0x0080 },    /* R2241  - DRC1LMIX Input 1 Volume */
+	{ 0x000008C8, 0x0000 },    /* R2248  - DRC1RMIX Input 1 Source */
+	{ 0x000008C9, 0x0080 },    /* R2249  - DRC1RMIX Input 1 Volume */
+	{ 0x00000900, 0x0000 },    /* R2304  - HPLP1MIX Input 1 Source */
+	{ 0x00000901, 0x0080 },    /* R2305  - HPLP1MIX Input 1 Volume */
+	{ 0x00000902, 0x0000 },    /* R2306  - HPLP1MIX Input 2 Source */
+	{ 0x00000903, 0x0080 },    /* R2307  - HPLP1MIX Input 2 Volume */
+	{ 0x00000904, 0x0000 },    /* R2308  - HPLP1MIX Input 3 Source */
+	{ 0x00000905, 0x0080 },    /* R2309  - HPLP1MIX Input 3 Volume */
+	{ 0x00000906, 0x0000 },    /* R2310  - HPLP1MIX Input 4 Source */
+	{ 0x00000907, 0x0080 },    /* R2311  - HPLP1MIX Input 4 Volume */
+	{ 0x00000908, 0x0000 },    /* R2312  - HPLP2MIX Input 1 Source */
+	{ 0x00000909, 0x0080 },    /* R2313  - HPLP2MIX Input 1 Volume */
+	{ 0x0000090A, 0x0000 },    /* R2314  - HPLP2MIX Input 2 Source */
+	{ 0x0000090B, 0x0080 },    /* R2315  - HPLP2MIX Input 2 Volume */
+	{ 0x0000090C, 0x0000 },    /* R2316  - HPLP2MIX Input 3 Source */
+	{ 0x0000090D, 0x0080 },    /* R2317  - HPLP2MIX Input 3 Volume */
+	{ 0x0000090E, 0x0000 },    /* R2318  - HPLP2MIX Input 4 Source */
+	{ 0x0000090F, 0x0080 },    /* R2319  - HPLP2MIX Input 4 Volume */
+	{ 0x00000910, 0x0000 },    /* R2320  - HPLP3MIX Input 1 Source */
+	{ 0x00000911, 0x0080 },    /* R2321  - HPLP3MIX Input 1 Volume */
+	{ 0x00000912, 0x0000 },    /* R2322  - HPLP3MIX Input 2 Source */
+	{ 0x00000913, 0x0080 },    /* R2323  - HPLP3MIX Input 2 Volume */
+	{ 0x00000914, 0x0000 },    /* R2324  - HPLP3MIX Input 3 Source */
+	{ 0x00000915, 0x0080 },    /* R2325  - HPLP3MIX Input 3 Volume */
+	{ 0x00000916, 0x0000 },    /* R2326  - HPLP3MIX Input 4 Source */
+	{ 0x00000917, 0x0080 },    /* R2327  - HPLP3MIX Input 4 Volume */
+	{ 0x00000918, 0x0000 },    /* R2328  - HPLP4MIX Input 1 Source */
+	{ 0x00000919, 0x0080 },    /* R2329  - HPLP4MIX Input 1 Volume */
+	{ 0x0000091A, 0x0000 },    /* R2330  - HPLP4MIX Input 2 Source */
+	{ 0x0000091B, 0x0080 },    /* R2331  - HPLP4MIX Input 2 Volume */
+	{ 0x0000091C, 0x0000 },    /* R2332  - HPLP4MIX Input 3 Source */
+	{ 0x0000091D, 0x0080 },    /* R2333  - HPLP4MIX Input 3 Volume */
+	{ 0x0000091E, 0x0000 },    /* R2334  - HPLP4MIX Input 4 Source */
+	{ 0x0000091F, 0x0080 },    /* R2335  - HPLP4MIX Input 4 Volume */
+	{ 0x00000A80, 0x0000 },    /* R2688  - ASRC1LMIX Input 1 Source */
+	{ 0x00000A88, 0x0000 },    /* R2696  - ASRC1RMIX Input 1 Source */
+	{ 0x00000A90, 0x0000 },    /* R2704  - ASRC2LMIX Input 1 Source */
+	{ 0x00000A98, 0x0000 },    /* R2712  - ASRC2RMIX Input 1 Source */
+	{ 0x00000B00, 0x0000 },    /* R2816  - ISRC1DEC1MIX Input 1 Source */
+	{ 0x00000B08, 0x0000 },    /* R2824  - ISRC1DEC2MIX Input 1 Source */
+	{ 0x00000B10, 0x0000 },    /* R2832  - ISRC1DEC3MIX Input 1 Source */
+	{ 0x00000B18, 0x0000 },    /* R2840  - ISRC1DEC4MIX Input 1 Source */
+	{ 0x00000B20, 0x0000 },    /* R2848  - ISRC1INT1MIX Input 1 Source */
+	{ 0x00000B28, 0x0000 },    /* R2856  - ISRC1INT2MIX Input 1 Source */
+	{ 0x00000B30, 0x0000 },    /* R2864  - ISRC1INT3MIX Input 1 Source */
+	{ 0x00000B38, 0x0000 },    /* R2872  - ISRC1INT4MIX Input 1 Source */
+	{ 0x00000B40, 0x0000 },    /* R2880  - ISRC2DEC1MIX Input 1 Source */
+	{ 0x00000B48, 0x0000 },    /* R2888  - ISRC2DEC2MIX Input 1 Source */
+	{ 0x00000B60, 0x0000 },    /* R2912  - ISRC2INT1MIX Input 1 Source */
+	{ 0x00000B68, 0x0000 },    /* R2920  - ISRC2INT2MIX Input 1 Source */
+	{ 0x00000C00, 0xA101 },    /* R3072  - GPIO1 CTRL */
+	{ 0x00000C01, 0xA101 },    /* R3073  - GPIO2 CTRL */
+	{ 0x00000C02, 0xA101 },    /* R3074  - GPIO3 CTRL */
+	{ 0x00000C03, 0xA101 },    /* R3075  - GPIO4 CTRL */
+	{ 0x00000C04, 0xA101 },    /* R3076  - GPIO5 CTRL */
+	{ 0x00000C0F, 0x0400 },    /* R3087  - IRQ CTRL 1 */
+	{ 0x00000C10, 0x1000 },    /* R3088  - GPIO Debounce Config */
+	{ 0x00000C18, 0x0000 },    /* R3096  - GP Switch 1 */
+	{ 0x00000C20, 0x8002 },    /* R3104  - Misc Pad Ctrl 1 */
+	{ 0x00000C21, 0x8001 },    /* R3105  - Misc Pad Ctrl 2 */
+	{ 0x00000C22, 0x0000 },    /* R3106  - Misc Pad Ctrl 3 */
+	{ 0x00000C23, 0x0000 },    /* R3107  - Misc Pad Ctrl 4 */
+	{ 0x00000C24, 0x0000 },    /* R3108  - Misc Pad Ctrl 5 */
+	{ 0x00000C25, 0x0000 },    /* R3109  - Misc Pad Ctrl 6 */
+	{ 0x00000D08, 0xFFFF },    /* R3336  - Interrupt Status 1 Mask */
+	{ 0x00000D09, 0xFFFF },    /* R3337  - Interrupt Status 2 Mask */
+	{ 0x00000D0A, 0xFFFF },    /* R3338  - Interrupt Status 3 Mask */
+	{ 0x00000D0B, 0xFFFF },    /* R3339  - Interrupt Status 4 Mask */
+	{ 0x00000D0C, 0xFEFF },    /* R3340  - Interrupt Status 5 Mask */
+	{ 0x00000D0F, 0x0000 },    /* R3343  - Interrupt Control */
+	{ 0x00000D18, 0xFFFF },    /* R3352  - IRQ2 Status 1 Mask */
+	{ 0x00000D19, 0xFFFF },    /* R3353  - IRQ2 Status 2 Mask */
+	{ 0x00000D1A, 0xFFFF },    /* R3354  - IRQ2 Status 3 Mask */
+	{ 0x00000D1B, 0xFFFF },    /* R3355  - IRQ2 Status 4 Mask */
+	{ 0x00000D1C, 0xFEFF },    /* R3356  - IRQ2 Status 5 Mask */
+	{ 0x00000D1D, 0xFFFF },    /* R3357  - IRQ2 Status 6 Mask */
+	{ 0x00000D1F, 0x0000 },    /* R3359  - IRQ2 Control */
+	{ 0x00000D53, 0xFFFF },    /* R3411  - AOD IRQ Mask IRQ1 */
+	{ 0x00000D54, 0xFFFF },    /* R3412  - AOD IRQ Mask IRQ2 */
+	{ 0x00000D56, 0x0000 },    /* R3414  - Jack detect debounce */
+	{ 0x00000E00, 0x0000 },    /* R3584  - FX_Ctrl1 */
+	{ 0x00000E01, 0x0000 },    /* R3585  - FX_Ctrl2 */
+	{ 0x00000E10, 0x6318 },    /* R3600  - EQ1_1 */
+	{ 0x00000E11, 0x6300 },    /* R3601  - EQ1_2 */
+	{ 0x00000E12, 0x0FC8 },    /* R3602  - EQ1_3 */
+	{ 0x00000E13, 0x03FE },    /* R3603  - EQ1_4 */
+	{ 0x00000E14, 0x00E0 },    /* R3604  - EQ1_5 */
+	{ 0x00000E15, 0x1EC4 },    /* R3605  - EQ1_6 */
+	{ 0x00000E16, 0xF136 },    /* R3606  - EQ1_7 */
+	{ 0x00000E17, 0x0409 },    /* R3607  - EQ1_8 */
+	{ 0x00000E18, 0x04CC },    /* R3608  - EQ1_9 */
+	{ 0x00000E19, 0x1C9B },    /* R3609  - EQ1_10 */
+	{ 0x00000E1A, 0xF337 },    /* R3610  - EQ1_11 */
+	{ 0x00000E1B, 0x040B },    /* R3611  - EQ1_12 */
+	{ 0x00000E1C, 0x0CBB },    /* R3612  - EQ1_13 */
+	{ 0x00000E1D, 0x16F8 },    /* R3613  - EQ1_14 */
+	{ 0x00000E1E, 0xF7D9 },    /* R3614  - EQ1_15 */
+	{ 0x00000E1F, 0x040A },    /* R3615  - EQ1_16 */
+	{ 0x00000E20, 0x1F14 },    /* R3616  - EQ1_17 */
+	{ 0x00000E21, 0x058C },    /* R3617  - EQ1_18 */
+	{ 0x00000E22, 0x0563 },    /* R3618  - EQ1_19 */
+	{ 0x00000E23, 0x4000 },    /* R3619  - EQ1_20 */
+	{ 0x00000E24, 0x0B75 },    /* R3620  - EQ1_21 */
+	{ 0x00000E26, 0x6318 },    /* R3622  - EQ2_1 */
+	{ 0x00000E27, 0x6300 },    /* R3623  - EQ2_2 */
+	{ 0x00000E28, 0x0FC8 },    /* R3624  - EQ2_3 */
+	{ 0x00000E29, 0x03FE },    /* R3625  - EQ2_4 */
+	{ 0x00000E2A, 0x00E0 },    /* R3626  - EQ2_5 */
+	{ 0x00000E2B, 0x1EC4 },    /* R3627  - EQ2_6 */
+	{ 0x00000E2C, 0xF136 },    /* R3628  - EQ2_7 */
+	{ 0x00000E2D, 0x0409 },    /* R3629  - EQ2_8 */
+	{ 0x00000E2E, 0x04CC },    /* R3630  - EQ2_9 */
+	{ 0x00000E2F, 0x1C9B },    /* R3631  - EQ2_10 */
+	{ 0x00000E30, 0xF337 },    /* R3632  - EQ2_11 */
+	{ 0x00000E31, 0x040B },    /* R3633  - EQ2_12 */
+	{ 0x00000E32, 0x0CBB },    /* R3634  - EQ2_13 */
+	{ 0x00000E33, 0x16F8 },    /* R3635  - EQ2_14 */
+	{ 0x00000E34, 0xF7D9 },    /* R3636  - EQ2_15 */
+	{ 0x00000E35, 0x040A },    /* R3637  - EQ2_16 */
+	{ 0x00000E36, 0x1F14 },    /* R3638  - EQ2_17 */
+	{ 0x00000E37, 0x058C },    /* R3639  - EQ2_18 */
+	{ 0x00000E38, 0x0563 },    /* R3640  - EQ2_19 */
+	{ 0x00000E39, 0x4000 },    /* R3641  - EQ2_20 */
+	{ 0x00000E3A, 0x0B75 },    /* R3642  - EQ2_21 */
+	{ 0x00000E3C, 0x6318 },    /* R3644  - EQ3_1 */
+	{ 0x00000E3D, 0x6300 },    /* R3645  - EQ3_2 */
+	{ 0x00000E3E, 0x0FC8 },    /* R3646  - EQ3_3 */
+	{ 0x00000E3F, 0x03FE },    /* R3647  - EQ3_4 */
+	{ 0x00000E40, 0x00E0 },    /* R3648  - EQ3_5 */
+	{ 0x00000E41, 0x1EC4 },    /* R3649  - EQ3_6 */
+	{ 0x00000E42, 0xF136 },    /* R3650  - EQ3_7 */
+	{ 0x00000E43, 0x0409 },    /* R3651  - EQ3_8 */
+	{ 0x00000E44, 0x04CC },    /* R3652  - EQ3_9 */
+	{ 0x00000E45, 0x1C9B },    /* R3653  - EQ3_10 */
+	{ 0x00000E46, 0xF337 },    /* R3654  - EQ3_11 */
+	{ 0x00000E47, 0x040B },    /* R3655  - EQ3_12 */
+	{ 0x00000E48, 0x0CBB },    /* R3656  - EQ3_13 */
+	{ 0x00000E49, 0x16F8 },    /* R3657  - EQ3_14 */
+	{ 0x00000E4A, 0xF7D9 },    /* R3658  - EQ3_15 */
+	{ 0x00000E4B, 0x040A },    /* R3659  - EQ3_16 */
+	{ 0x00000E4C, 0x1F14 },    /* R3660  - EQ3_17 */
+	{ 0x00000E4D, 0x058C },    /* R3661  - EQ3_18 */
+	{ 0x00000E4E, 0x0563 },    /* R3662  - EQ3_19 */
+	{ 0x00000E4F, 0x4000 },    /* R3663  - EQ3_20 */
+	{ 0x00000E50, 0x0B75 },    /* R3664  - EQ3_21 */
+	{ 0x00000E52, 0x6318 },    /* R3666  - EQ4_1 */
+	{ 0x00000E53, 0x6300 },    /* R3667  - EQ4_2 */
+	{ 0x00000E54, 0x0FC8 },    /* R3668  - EQ4_3 */
+	{ 0x00000E55, 0x03FE },    /* R3669  - EQ4_4 */
+	{ 0x00000E56, 0x00E0 },    /* R3670  - EQ4_5 */
+	{ 0x00000E57, 0x1EC4 },    /* R3671  - EQ4_6 */
+	{ 0x00000E58, 0xF136 },    /* R3672  - EQ4_7 */
+	{ 0x00000E59, 0x0409 },    /* R3673  - EQ4_8 */
+	{ 0x00000E5A, 0x04CC },    /* R3674  - EQ4_9 */
+	{ 0x00000E5B, 0x1C9B },    /* R3675  - EQ4_10 */
+	{ 0x00000E5C, 0xF337 },    /* R3676  - EQ4_11 */
+	{ 0x00000E5D, 0x040B },    /* R3677  - EQ4_12 */
+	{ 0x00000E5E, 0x0CBB },    /* R3678  - EQ4_13 */
+	{ 0x00000E5F, 0x16F8 },    /* R3679  - EQ4_14 */
+	{ 0x00000E60, 0xF7D9 },    /* R3680  - EQ4_15 */
+	{ 0x00000E61, 0x040A },    /* R3681  - EQ4_16 */
+	{ 0x00000E62, 0x1F14 },    /* R3682  - EQ4_17 */
+	{ 0x00000E63, 0x058C },    /* R3683  - EQ4_18 */
+	{ 0x00000E64, 0x0563 },    /* R3684  - EQ4_19 */
+	{ 0x00000E65, 0x4000 },    /* R3685  - EQ4_20 */
+	{ 0x00000E66, 0x0B75 },    /* R3686  - EQ4_21 */
+	{ 0x00000E80, 0x0018 },    /* R3712  - DRC1 ctrl1 */
+	{ 0x00000E81, 0x0933 },    /* R3713  - DRC1 ctrl2 */
+	{ 0x00000E82, 0x0018 },    /* R3714  - DRC1 ctrl3 */
+	{ 0x00000E83, 0x0000 },    /* R3715  - DRC1 ctrl4 */
+	{ 0x00000E84, 0x0000 },    /* R3716  - DRC1 ctrl5 */
+	{ 0x00000EC0, 0x0000 },    /* R3776  - HPLPF1_1 */
+	{ 0x00000EC1, 0x0000 },    /* R3777  - HPLPF1_2 */
+	{ 0x00000EC4, 0x0000 },    /* R3780  - HPLPF2_1 */
+	{ 0x00000EC5, 0x0000 },    /* R3781  - HPLPF2_2 */
+	{ 0x00000EC8, 0x0000 },    /* R3784  - HPLPF3_1 */
+	{ 0x00000EC9, 0x0000 },    /* R3785  - HPLPF3_2 */
+	{ 0x00000ECC, 0x0000 },    /* R3788  - HPLPF4_1 */
+	{ 0x00000ECD, 0x0000 },    /* R3789  - HPLPF4_2 */
+	{ 0x00000EE0, 0x0000 },    /* R3808  - ASRC_ENABLE */
+	{ 0x00000EE2, 0x0000 },    /* R3810  - ASRC_RATE1 */
+	{ 0x00000EE3, 0x4000 },    /* R3811  - ASRC_RATE2 */
+	{ 0x00000EF0, 0x0000 },    /* R3824  - ISRC 1 CTRL 1 */
+	{ 0x00000EF1, 0x0001 },    /* R3825  - ISRC 1 CTRL 2 */
+	{ 0x00000EF2, 0x0000 },    /* R3826  - ISRC 1 CTRL 3 */
+	{ 0x00000EF3, 0x0000 },    /* R3827  - ISRC 2 CTRL 1 */
+	{ 0x00000EF4, 0x0001 },    /* R3828  - ISRC 2 CTRL 2 */
+	{ 0x00000EF5, 0x0000 },    /* R3829  - ISRC 2 CTRL 3 */
+	{ 0x00001700, 0x0000 },    /* R5888  - FRF_COEFF_1 */
+	{ 0x00001701, 0x0000 },    /* R5889  - FRF_COEFF_2 */
+	{ 0x00001702, 0x0000 },    /* R5890  - FRF_COEFF_3 */
+	{ 0x00001703, 0x0000 },    /* R5891  - FRF_COEFF_4 */
+	{ 0x00001704, 0x0000 },    /* R5892  - DAC_COMP_1 */
+	{ 0x00001705, 0x0000 },    /* R5893  - DAC_COMP_2 */
+};
+
+static bool wm8998_readable_register(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case ARIZONA_SOFTWARE_RESET:
+	case ARIZONA_DEVICE_REVISION:
+	case ARIZONA_CTRL_IF_SPI_CFG_1:
+	case ARIZONA_CTRL_IF_I2C1_CFG_1:
+	case ARIZONA_CTRL_IF_I2C1_CFG_2:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_0:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_1:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_2:
+	case ARIZONA_TONE_GENERATOR_1:
+	case ARIZONA_TONE_GENERATOR_2:
+	case ARIZONA_TONE_GENERATOR_3:
+	case ARIZONA_TONE_GENERATOR_4:
+	case ARIZONA_TONE_GENERATOR_5:
+	case ARIZONA_PWM_DRIVE_1:
+	case ARIZONA_PWM_DRIVE_2:
+	case ARIZONA_PWM_DRIVE_3:
+	case ARIZONA_WAKE_CONTROL:
+	case ARIZONA_SEQUENCE_CONTROL:
+	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1:
+	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2:
+	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3:
+	case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5:
+	case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6:
+	case ARIZONA_HAPTICS_CONTROL_1:
+	case ARIZONA_HAPTICS_CONTROL_2:
+	case ARIZONA_HAPTICS_PHASE_1_INTENSITY:
+	case ARIZONA_HAPTICS_PHASE_1_DURATION:
+	case ARIZONA_HAPTICS_PHASE_2_INTENSITY:
+	case ARIZONA_HAPTICS_PHASE_2_DURATION:
+	case ARIZONA_HAPTICS_PHASE_3_INTENSITY:
+	case ARIZONA_HAPTICS_PHASE_3_DURATION:
+	case ARIZONA_HAPTICS_STATUS:
+	case ARIZONA_CLOCK_32K_1:
+	case ARIZONA_SYSTEM_CLOCK_1:
+	case ARIZONA_SAMPLE_RATE_1:
+	case ARIZONA_SAMPLE_RATE_2:
+	case ARIZONA_SAMPLE_RATE_3:
+	case ARIZONA_SAMPLE_RATE_1_STATUS:
+	case ARIZONA_SAMPLE_RATE_2_STATUS:
+	case ARIZONA_SAMPLE_RATE_3_STATUS:
+	case ARIZONA_ASYNC_CLOCK_1:
+	case ARIZONA_ASYNC_SAMPLE_RATE_1:
+	case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
+	case ARIZONA_ASYNC_SAMPLE_RATE_2:
+	case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS:
+	case ARIZONA_OUTPUT_SYSTEM_CLOCK:
+	case ARIZONA_OUTPUT_ASYNC_CLOCK:
+	case ARIZONA_RATE_ESTIMATOR_1:
+	case ARIZONA_RATE_ESTIMATOR_2:
+	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_FLL1_CONTROL_4:
+	case ARIZONA_FLL1_CONTROL_5:
+	case ARIZONA_FLL1_CONTROL_6:
+	case ARIZONA_FLL1_CONTROL_7:
+	case ARIZONA_FLL1_LOOP_FILTER_TEST_1:
+	case ARIZONA_FLL1_NCO_TEST_0:
+	case ARIZONA_FLL1_SYNCHRONISER_1:
+	case ARIZONA_FLL1_SYNCHRONISER_2:
+	case ARIZONA_FLL1_SYNCHRONISER_3:
+	case ARIZONA_FLL1_SYNCHRONISER_4:
+	case ARIZONA_FLL1_SYNCHRONISER_5:
+	case ARIZONA_FLL1_SYNCHRONISER_6:
+	case ARIZONA_FLL1_SYNCHRONISER_7:
+	case ARIZONA_FLL1_SPREAD_SPECTRUM:
+	case ARIZONA_FLL1_GPIO_CLOCK:
+	case ARIZONA_FLL2_CONTROL_1:
+	case ARIZONA_FLL2_CONTROL_2:
+	case ARIZONA_FLL2_CONTROL_3:
+	case ARIZONA_FLL2_CONTROL_4:
+	case ARIZONA_FLL2_CONTROL_5:
+	case ARIZONA_FLL2_CONTROL_6:
+	case ARIZONA_FLL2_CONTROL_7:
+	case ARIZONA_FLL2_LOOP_FILTER_TEST_1:
+	case ARIZONA_FLL2_NCO_TEST_0:
+	case ARIZONA_FLL2_SYNCHRONISER_1:
+	case ARIZONA_FLL2_SYNCHRONISER_2:
+	case ARIZONA_FLL2_SYNCHRONISER_3:
+	case ARIZONA_FLL2_SYNCHRONISER_4:
+	case ARIZONA_FLL2_SYNCHRONISER_5:
+	case ARIZONA_FLL2_SYNCHRONISER_6:
+	case ARIZONA_FLL2_SYNCHRONISER_7:
+	case ARIZONA_FLL2_SPREAD_SPECTRUM:
+	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:
+	case ARIZONA_MIC_BIAS_CTRL_3:
+	case ARIZONA_ACCESSORY_DETECT_MODE_1:
+	case ARIZONA_HEADPHONE_DETECT_1:
+	case ARIZONA_HEADPHONE_DETECT_2:
+	case ARIZONA_MICD_CLAMP_CONTROL:
+	case ARIZONA_MIC_DETECT_1:
+	case ARIZONA_MIC_DETECT_2:
+	case ARIZONA_MIC_DETECT_3:
+	case ARIZONA_MIC_DETECT_4:
+	case ARIZONA_MIC_DETECT_LEVEL_1:
+	case ARIZONA_MIC_DETECT_LEVEL_2:
+	case ARIZONA_MIC_DETECT_LEVEL_3:
+	case ARIZONA_MIC_DETECT_LEVEL_4:
+	case ARIZONA_ISOLATION_CONTROL:
+	case ARIZONA_JACK_DETECT_ANALOGUE:
+	case ARIZONA_INPUT_ENABLES:
+	case ARIZONA_INPUT_ENABLES_STATUS:
+	case ARIZONA_INPUT_RATE:
+	case ARIZONA_INPUT_VOLUME_RAMP:
+	case ARIZONA_HPF_CONTROL:
+	case ARIZONA_IN1L_CONTROL:
+	case ARIZONA_ADC_DIGITAL_VOLUME_1L:
+	case ARIZONA_DMIC1L_CONTROL:
+	case ARIZONA_IN1R_CONTROL:
+	case ARIZONA_ADC_DIGITAL_VOLUME_1R:
+	case ARIZONA_DMIC1R_CONTROL:
+	case ARIZONA_IN2L_CONTROL:
+	case ARIZONA_ADC_DIGITAL_VOLUME_2L:
+	case ARIZONA_DMIC2L_CONTROL:
+	case ARIZONA_OUTPUT_ENABLES_1:
+	case ARIZONA_OUTPUT_STATUS_1:
+	case ARIZONA_RAW_OUTPUT_STATUS_1:
+	case ARIZONA_OUTPUT_RATE_1:
+	case ARIZONA_OUTPUT_VOLUME_RAMP:
+	case ARIZONA_OUTPUT_PATH_CONFIG_1L:
+	case ARIZONA_DAC_DIGITAL_VOLUME_1L:
+	case ARIZONA_NOISE_GATE_SELECT_1L:
+	case ARIZONA_OUTPUT_PATH_CONFIG_1R:
+	case ARIZONA_DAC_DIGITAL_VOLUME_1R:
+	case ARIZONA_NOISE_GATE_SELECT_1R:
+	case ARIZONA_OUTPUT_PATH_CONFIG_2L:
+	case ARIZONA_DAC_DIGITAL_VOLUME_2L:
+	case ARIZONA_NOISE_GATE_SELECT_2L:
+	case ARIZONA_OUTPUT_PATH_CONFIG_2R:
+	case ARIZONA_DAC_DIGITAL_VOLUME_2R:
+	case ARIZONA_NOISE_GATE_SELECT_2R:
+	case ARIZONA_OUTPUT_PATH_CONFIG_3L:
+	case ARIZONA_DAC_DIGITAL_VOLUME_3L:
+	case ARIZONA_NOISE_GATE_SELECT_3L:
+	case ARIZONA_OUTPUT_PATH_CONFIG_4L:
+	case ARIZONA_DAC_DIGITAL_VOLUME_4L:
+	case ARIZONA_NOISE_GATE_SELECT_4L:
+	case ARIZONA_OUTPUT_PATH_CONFIG_4R:
+	case ARIZONA_DAC_DIGITAL_VOLUME_4R:
+	case ARIZONA_NOISE_GATE_SELECT_4R:
+	case ARIZONA_OUTPUT_PATH_CONFIG_5L:
+	case ARIZONA_DAC_DIGITAL_VOLUME_5L:
+	case ARIZONA_NOISE_GATE_SELECT_5L:
+	case ARIZONA_OUTPUT_PATH_CONFIG_5R:
+	case ARIZONA_DAC_DIGITAL_VOLUME_5R:
+	case ARIZONA_NOISE_GATE_SELECT_5R:
+	case ARIZONA_DRE_ENABLE:
+	case ARIZONA_DRE_CONTROL_1:
+	case ARIZONA_DRE_CONTROL_2:
+	case ARIZONA_DRE_CONTROL_3:
+	case ARIZONA_EDRE_ENABLE:
+	case ARIZONA_DAC_AEC_CONTROL_1:
+	case ARIZONA_DAC_AEC_CONTROL_2:
+	case ARIZONA_NOISE_GATE_CONTROL:
+	case ARIZONA_PDM_SPK1_CTRL_1:
+	case ARIZONA_PDM_SPK1_CTRL_2:
+	case ARIZONA_HP_TEST_CTRL_13:
+	case ARIZONA_AIF1_BCLK_CTRL:
+	case ARIZONA_AIF1_TX_PIN_CTRL:
+	case ARIZONA_AIF1_RX_PIN_CTRL:
+	case ARIZONA_AIF1_RATE_CTRL:
+	case ARIZONA_AIF1_FORMAT:
+	case ARIZONA_AIF1_RX_BCLK_RATE:
+	case ARIZONA_AIF1_FRAME_CTRL_1:
+	case ARIZONA_AIF1_FRAME_CTRL_2:
+	case ARIZONA_AIF1_FRAME_CTRL_3:
+	case ARIZONA_AIF1_FRAME_CTRL_4:
+	case ARIZONA_AIF1_FRAME_CTRL_5:
+	case ARIZONA_AIF1_FRAME_CTRL_6:
+	case ARIZONA_AIF1_FRAME_CTRL_7:
+	case ARIZONA_AIF1_FRAME_CTRL_8:
+	case ARIZONA_AIF1_FRAME_CTRL_11:
+	case ARIZONA_AIF1_FRAME_CTRL_12:
+	case ARIZONA_AIF1_FRAME_CTRL_13:
+	case ARIZONA_AIF1_FRAME_CTRL_14:
+	case ARIZONA_AIF1_FRAME_CTRL_15:
+	case ARIZONA_AIF1_FRAME_CTRL_16:
+	case ARIZONA_AIF1_TX_ENABLES:
+	case ARIZONA_AIF1_RX_ENABLES:
+	case ARIZONA_AIF2_BCLK_CTRL:
+	case ARIZONA_AIF2_TX_PIN_CTRL:
+	case ARIZONA_AIF2_RX_PIN_CTRL:
+	case ARIZONA_AIF2_RATE_CTRL:
+	case ARIZONA_AIF2_FORMAT:
+	case ARIZONA_AIF2_RX_BCLK_RATE:
+	case ARIZONA_AIF2_FRAME_CTRL_1:
+	case ARIZONA_AIF2_FRAME_CTRL_2:
+	case ARIZONA_AIF2_FRAME_CTRL_3:
+	case ARIZONA_AIF2_FRAME_CTRL_4:
+	case ARIZONA_AIF2_FRAME_CTRL_5:
+	case ARIZONA_AIF2_FRAME_CTRL_6:
+	case ARIZONA_AIF2_FRAME_CTRL_7:
+	case ARIZONA_AIF2_FRAME_CTRL_8:
+	case ARIZONA_AIF2_FRAME_CTRL_11:
+	case ARIZONA_AIF2_FRAME_CTRL_12:
+	case ARIZONA_AIF2_FRAME_CTRL_13:
+	case ARIZONA_AIF2_FRAME_CTRL_14:
+	case ARIZONA_AIF2_FRAME_CTRL_15:
+	case ARIZONA_AIF2_FRAME_CTRL_16:
+	case ARIZONA_AIF2_TX_ENABLES:
+	case ARIZONA_AIF2_RX_ENABLES:
+	case ARIZONA_AIF3_BCLK_CTRL:
+	case ARIZONA_AIF3_TX_PIN_CTRL:
+	case ARIZONA_AIF3_RX_PIN_CTRL:
+	case ARIZONA_AIF3_RATE_CTRL:
+	case ARIZONA_AIF3_FORMAT:
+	case ARIZONA_AIF3_RX_BCLK_RATE:
+	case ARIZONA_AIF3_FRAME_CTRL_1:
+	case ARIZONA_AIF3_FRAME_CTRL_2:
+	case ARIZONA_AIF3_FRAME_CTRL_3:
+	case ARIZONA_AIF3_FRAME_CTRL_4:
+	case ARIZONA_AIF3_FRAME_CTRL_11:
+	case ARIZONA_AIF3_FRAME_CTRL_12:
+	case ARIZONA_AIF3_TX_ENABLES:
+	case ARIZONA_AIF3_RX_ENABLES:
+	case ARIZONA_SPD1_TX_CONTROL:
+	case ARIZONA_SPD1_TX_CHANNEL_STATUS_1:
+	case ARIZONA_SPD1_TX_CHANNEL_STATUS_2:
+	case ARIZONA_SPD1_TX_CHANNEL_STATUS_3:
+	case ARIZONA_SLIMBUS_FRAMER_REF_GEAR:
+	case ARIZONA_SLIMBUS_RATES_1:
+	case ARIZONA_SLIMBUS_RATES_2:
+	case ARIZONA_SLIMBUS_RATES_5:
+	case ARIZONA_SLIMBUS_RATES_6:
+	case ARIZONA_SLIMBUS_RATES_7:
+	case ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE:
+	case ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE:
+	case ARIZONA_SLIMBUS_RX_PORT_STATUS:
+	case ARIZONA_SLIMBUS_TX_PORT_STATUS:
+	case ARIZONA_PWM1MIX_INPUT_1_SOURCE:
+	case ARIZONA_PWM1MIX_INPUT_1_VOLUME:
+	case ARIZONA_PWM1MIX_INPUT_2_SOURCE:
+	case ARIZONA_PWM1MIX_INPUT_2_VOLUME:
+	case ARIZONA_PWM1MIX_INPUT_3_SOURCE:
+	case ARIZONA_PWM1MIX_INPUT_3_VOLUME:
+	case ARIZONA_PWM1MIX_INPUT_4_SOURCE:
+	case ARIZONA_PWM1MIX_INPUT_4_VOLUME:
+	case ARIZONA_PWM2MIX_INPUT_1_SOURCE:
+	case ARIZONA_PWM2MIX_INPUT_1_VOLUME:
+	case ARIZONA_PWM2MIX_INPUT_2_SOURCE:
+	case ARIZONA_PWM2MIX_INPUT_2_VOLUME:
+	case ARIZONA_PWM2MIX_INPUT_3_SOURCE:
+	case ARIZONA_PWM2MIX_INPUT_3_VOLUME:
+	case ARIZONA_PWM2MIX_INPUT_4_SOURCE:
+	case ARIZONA_PWM2MIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT1LMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT1LMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT1LMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT1LMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT1LMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT1LMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT1LMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT1LMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT1RMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT1RMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT1RMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT1RMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT1RMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT1RMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT1RMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT1RMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT2LMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT2LMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT2LMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT2LMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT2LMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT2LMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT2LMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT2LMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT2RMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT2RMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT2RMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT2RMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT2RMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT2RMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT2RMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT2RMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT3LMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT3LMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT3LMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT3LMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT3LMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT3LMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT3LMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT3LMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT4LMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT4LMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT4LMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT4LMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT4LMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT4LMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT4LMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT4LMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT4RMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT4RMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT4RMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT4RMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT4RMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT4RMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT4RMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT4RMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT5LMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT5LMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT5LMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT5LMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT5LMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT5LMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT5LMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT5LMIX_INPUT_4_VOLUME:
+	case ARIZONA_OUT5RMIX_INPUT_1_SOURCE:
+	case ARIZONA_OUT5RMIX_INPUT_1_VOLUME:
+	case ARIZONA_OUT5RMIX_INPUT_2_SOURCE:
+	case ARIZONA_OUT5RMIX_INPUT_2_VOLUME:
+	case ARIZONA_OUT5RMIX_INPUT_3_SOURCE:
+	case ARIZONA_OUT5RMIX_INPUT_3_VOLUME:
+	case ARIZONA_OUT5RMIX_INPUT_4_SOURCE:
+	case ARIZONA_OUT5RMIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX3MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX3MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX3MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX3MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX3MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX3MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX3MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX4MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX4MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX4MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX4MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX4MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX4MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX4MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX5MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX5MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX5MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX5MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX5MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX5MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX5MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF2TX6MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF2TX6MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF2TX6MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF2TX6MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF2TX6MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF2TX6MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF2TX6MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME:
+	case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE:
+	case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME:
+	case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE:
+	case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME:
+	case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE:
+	case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME:
+	case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE:
+	case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME:
+	case ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME:
+	case ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME:
+	case ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME:
+	case ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME:
+	case ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME:
+	case ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE:
+	case ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME:
+	case ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE:
+	case ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME:
+	case ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE:
+	case ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME:
+	case ARIZONA_EQ1MIX_INPUT_1_SOURCE:
+	case ARIZONA_EQ1MIX_INPUT_1_VOLUME:
+	case ARIZONA_EQ2MIX_INPUT_1_SOURCE:
+	case ARIZONA_EQ2MIX_INPUT_1_VOLUME:
+	case ARIZONA_EQ3MIX_INPUT_1_SOURCE:
+	case ARIZONA_EQ3MIX_INPUT_1_VOLUME:
+	case ARIZONA_EQ4MIX_INPUT_1_SOURCE:
+	case ARIZONA_EQ4MIX_INPUT_1_VOLUME:
+	case ARIZONA_DRC1LMIX_INPUT_1_SOURCE:
+	case ARIZONA_DRC1LMIX_INPUT_1_VOLUME:
+	case ARIZONA_DRC1RMIX_INPUT_1_SOURCE:
+	case ARIZONA_DRC1RMIX_INPUT_1_VOLUME:
+	case ARIZONA_HPLP1MIX_INPUT_1_SOURCE:
+	case ARIZONA_HPLP1MIX_INPUT_1_VOLUME:
+	case ARIZONA_HPLP1MIX_INPUT_2_SOURCE:
+	case ARIZONA_HPLP1MIX_INPUT_2_VOLUME:
+	case ARIZONA_HPLP1MIX_INPUT_3_SOURCE:
+	case ARIZONA_HPLP1MIX_INPUT_3_VOLUME:
+	case ARIZONA_HPLP1MIX_INPUT_4_SOURCE:
+	case ARIZONA_HPLP1MIX_INPUT_4_VOLUME:
+	case ARIZONA_HPLP2MIX_INPUT_1_SOURCE:
+	case ARIZONA_HPLP2MIX_INPUT_1_VOLUME:
+	case ARIZONA_HPLP2MIX_INPUT_2_SOURCE:
+	case ARIZONA_HPLP2MIX_INPUT_2_VOLUME:
+	case ARIZONA_HPLP2MIX_INPUT_3_SOURCE:
+	case ARIZONA_HPLP2MIX_INPUT_3_VOLUME:
+	case ARIZONA_HPLP2MIX_INPUT_4_SOURCE:
+	case ARIZONA_HPLP2MIX_INPUT_4_VOLUME:
+	case ARIZONA_HPLP3MIX_INPUT_1_SOURCE:
+	case ARIZONA_HPLP3MIX_INPUT_1_VOLUME:
+	case ARIZONA_HPLP3MIX_INPUT_2_SOURCE:
+	case ARIZONA_HPLP3MIX_INPUT_2_VOLUME:
+	case ARIZONA_HPLP3MIX_INPUT_3_SOURCE:
+	case ARIZONA_HPLP3MIX_INPUT_3_VOLUME:
+	case ARIZONA_HPLP3MIX_INPUT_4_SOURCE:
+	case ARIZONA_HPLP3MIX_INPUT_4_VOLUME:
+	case ARIZONA_HPLP4MIX_INPUT_1_SOURCE:
+	case ARIZONA_HPLP4MIX_INPUT_1_VOLUME:
+	case ARIZONA_HPLP4MIX_INPUT_2_SOURCE:
+	case ARIZONA_HPLP4MIX_INPUT_2_VOLUME:
+	case ARIZONA_HPLP4MIX_INPUT_3_SOURCE:
+	case ARIZONA_HPLP4MIX_INPUT_3_VOLUME:
+	case ARIZONA_HPLP4MIX_INPUT_4_SOURCE:
+	case ARIZONA_HPLP4MIX_INPUT_4_VOLUME:
+	case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE:
+	case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE:
+	case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE:
+	case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE:
+	case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE:
+	case ARIZONA_GPIO1_CTRL:
+	case ARIZONA_GPIO2_CTRL:
+	case ARIZONA_GPIO3_CTRL:
+	case ARIZONA_GPIO4_CTRL:
+	case ARIZONA_GPIO5_CTRL:
+	case ARIZONA_IRQ_CTRL_1:
+	case ARIZONA_GPIO_DEBOUNCE_CONFIG:
+	case ARIZONA_GP_SWITCH_1:
+	case ARIZONA_MISC_PAD_CTRL_1:
+	case ARIZONA_MISC_PAD_CTRL_2:
+	case ARIZONA_MISC_PAD_CTRL_3:
+	case ARIZONA_MISC_PAD_CTRL_4:
+	case ARIZONA_MISC_PAD_CTRL_5:
+	case ARIZONA_MISC_PAD_CTRL_6:
+	case ARIZONA_INTERRUPT_STATUS_1:
+	case ARIZONA_INTERRUPT_STATUS_2:
+	case ARIZONA_INTERRUPT_STATUS_3:
+	case ARIZONA_INTERRUPT_STATUS_4:
+	case ARIZONA_INTERRUPT_STATUS_5:
+	case ARIZONA_INTERRUPT_STATUS_1_MASK:
+	case ARIZONA_INTERRUPT_STATUS_2_MASK:
+	case ARIZONA_INTERRUPT_STATUS_3_MASK:
+	case ARIZONA_INTERRUPT_STATUS_4_MASK:
+	case ARIZONA_INTERRUPT_STATUS_5_MASK:
+	case ARIZONA_INTERRUPT_CONTROL:
+	case ARIZONA_IRQ2_STATUS_1:
+	case ARIZONA_IRQ2_STATUS_2:
+	case ARIZONA_IRQ2_STATUS_3:
+	case ARIZONA_IRQ2_STATUS_4:
+	case ARIZONA_IRQ2_STATUS_5:
+	case ARIZONA_IRQ2_STATUS_1_MASK:
+	case ARIZONA_IRQ2_STATUS_2_MASK:
+	case ARIZONA_IRQ2_STATUS_3_MASK:
+	case ARIZONA_IRQ2_STATUS_4_MASK:
+	case ARIZONA_IRQ2_STATUS_5_MASK:
+	case ARIZONA_IRQ2_CONTROL:
+	case ARIZONA_INTERRUPT_RAW_STATUS_2:
+	case ARIZONA_INTERRUPT_RAW_STATUS_3:
+	case ARIZONA_INTERRUPT_RAW_STATUS_4:
+	case ARIZONA_INTERRUPT_RAW_STATUS_5:
+	case ARIZONA_INTERRUPT_RAW_STATUS_6:
+	case ARIZONA_INTERRUPT_RAW_STATUS_7:
+	case ARIZONA_INTERRUPT_RAW_STATUS_8:
+	case ARIZONA_IRQ_PIN_STATUS:
+	case ARIZONA_AOD_WKUP_AND_TRIG:
+	case ARIZONA_AOD_IRQ1:
+	case ARIZONA_AOD_IRQ2:
+	case ARIZONA_AOD_IRQ_MASK_IRQ1:
+	case ARIZONA_AOD_IRQ_MASK_IRQ2:
+	case ARIZONA_AOD_IRQ_RAW_STATUS:
+	case ARIZONA_JACK_DETECT_DEBOUNCE:
+	case ARIZONA_FX_CTRL1:
+	case ARIZONA_FX_CTRL2:
+	case ARIZONA_EQ1_1:
+	case ARIZONA_EQ1_2:
+	case ARIZONA_EQ1_3:
+	case ARIZONA_EQ1_4:
+	case ARIZONA_EQ1_5:
+	case ARIZONA_EQ1_6:
+	case ARIZONA_EQ1_7:
+	case ARIZONA_EQ1_8:
+	case ARIZONA_EQ1_9:
+	case ARIZONA_EQ1_10:
+	case ARIZONA_EQ1_11:
+	case ARIZONA_EQ1_12:
+	case ARIZONA_EQ1_13:
+	case ARIZONA_EQ1_14:
+	case ARIZONA_EQ1_15:
+	case ARIZONA_EQ1_16:
+	case ARIZONA_EQ1_17:
+	case ARIZONA_EQ1_18:
+	case ARIZONA_EQ1_19:
+	case ARIZONA_EQ1_20:
+	case ARIZONA_EQ1_21:
+	case ARIZONA_EQ2_1:
+	case ARIZONA_EQ2_2:
+	case ARIZONA_EQ2_3:
+	case ARIZONA_EQ2_4:
+	case ARIZONA_EQ2_5:
+	case ARIZONA_EQ2_6:
+	case ARIZONA_EQ2_7:
+	case ARIZONA_EQ2_8:
+	case ARIZONA_EQ2_9:
+	case ARIZONA_EQ2_10:
+	case ARIZONA_EQ2_11:
+	case ARIZONA_EQ2_12:
+	case ARIZONA_EQ2_13:
+	case ARIZONA_EQ2_14:
+	case ARIZONA_EQ2_15:
+	case ARIZONA_EQ2_16:
+	case ARIZONA_EQ2_17:
+	case ARIZONA_EQ2_18:
+	case ARIZONA_EQ2_19:
+	case ARIZONA_EQ2_20:
+	case ARIZONA_EQ2_21:
+	case ARIZONA_EQ3_1:
+	case ARIZONA_EQ3_2:
+	case ARIZONA_EQ3_3:
+	case ARIZONA_EQ3_4:
+	case ARIZONA_EQ3_5:
+	case ARIZONA_EQ3_6:
+	case ARIZONA_EQ3_7:
+	case ARIZONA_EQ3_8:
+	case ARIZONA_EQ3_9:
+	case ARIZONA_EQ3_10:
+	case ARIZONA_EQ3_11:
+	case ARIZONA_EQ3_12:
+	case ARIZONA_EQ3_13:
+	case ARIZONA_EQ3_14:
+	case ARIZONA_EQ3_15:
+	case ARIZONA_EQ3_16:
+	case ARIZONA_EQ3_17:
+	case ARIZONA_EQ3_18:
+	case ARIZONA_EQ3_19:
+	case ARIZONA_EQ3_20:
+	case ARIZONA_EQ3_21:
+	case ARIZONA_EQ4_1:
+	case ARIZONA_EQ4_2:
+	case ARIZONA_EQ4_3:
+	case ARIZONA_EQ4_4:
+	case ARIZONA_EQ4_5:
+	case ARIZONA_EQ4_6:
+	case ARIZONA_EQ4_7:
+	case ARIZONA_EQ4_8:
+	case ARIZONA_EQ4_9:
+	case ARIZONA_EQ4_10:
+	case ARIZONA_EQ4_11:
+	case ARIZONA_EQ4_12:
+	case ARIZONA_EQ4_13:
+	case ARIZONA_EQ4_14:
+	case ARIZONA_EQ4_15:
+	case ARIZONA_EQ4_16:
+	case ARIZONA_EQ4_17:
+	case ARIZONA_EQ4_18:
+	case ARIZONA_EQ4_19:
+	case ARIZONA_EQ4_20:
+	case ARIZONA_EQ4_21:
+	case ARIZONA_DRC1_CTRL1:
+	case ARIZONA_DRC1_CTRL2:
+	case ARIZONA_DRC1_CTRL3:
+	case ARIZONA_DRC1_CTRL4:
+	case ARIZONA_DRC1_CTRL5:
+	case ARIZONA_HPLPF1_1:
+	case ARIZONA_HPLPF1_2:
+	case ARIZONA_HPLPF2_1:
+	case ARIZONA_HPLPF2_2:
+	case ARIZONA_HPLPF3_1:
+	case ARIZONA_HPLPF3_2:
+	case ARIZONA_HPLPF4_1:
+	case ARIZONA_HPLPF4_2:
+	case ARIZONA_ASRC_ENABLE:
+	case ARIZONA_ASRC_STATUS:
+	case ARIZONA_ASRC_RATE1:
+	case ARIZONA_ASRC_RATE2:
+	case ARIZONA_ISRC_1_CTRL_1:
+	case ARIZONA_ISRC_1_CTRL_2:
+	case ARIZONA_ISRC_1_CTRL_3:
+	case ARIZONA_ISRC_2_CTRL_1:
+	case ARIZONA_ISRC_2_CTRL_2:
+	case ARIZONA_ISRC_2_CTRL_3:
+	case ARIZONA_FRF_COEFF_1:
+	case ARIZONA_FRF_COEFF_2:
+	case ARIZONA_FRF_COEFF_3:
+	case ARIZONA_FRF_COEFF_4:
+	case ARIZONA_V2_DAC_COMP_1:
+	case ARIZONA_V2_DAC_COMP_2:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static bool wm8998_volatile_register(struct device *dev, unsigned int reg)
+{
+	switch (reg) {
+	case ARIZONA_SOFTWARE_RESET:
+	case ARIZONA_DEVICE_REVISION:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_0:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_1:
+	case ARIZONA_WRITE_SEQUENCER_CTRL_2:
+	case ARIZONA_HAPTICS_STATUS:
+	case ARIZONA_SAMPLE_RATE_1_STATUS:
+	case ARIZONA_SAMPLE_RATE_2_STATUS:
+	case ARIZONA_SAMPLE_RATE_3_STATUS:
+	case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
+	case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS:
+	case ARIZONA_MIC_DETECT_3:
+	case ARIZONA_MIC_DETECT_4:
+	case ARIZONA_HEADPHONE_DETECT_2:
+	case ARIZONA_INPUT_ENABLES_STATUS:
+	case ARIZONA_OUTPUT_STATUS_1:
+	case ARIZONA_RAW_OUTPUT_STATUS_1:
+	case ARIZONA_SLIMBUS_RX_PORT_STATUS:
+	case ARIZONA_SLIMBUS_TX_PORT_STATUS:
+	case ARIZONA_INTERRUPT_STATUS_1:
+	case ARIZONA_INTERRUPT_STATUS_2:
+	case ARIZONA_INTERRUPT_STATUS_3:
+	case ARIZONA_INTERRUPT_STATUS_4:
+	case ARIZONA_INTERRUPT_STATUS_5:
+	case ARIZONA_IRQ2_STATUS_1:
+	case ARIZONA_IRQ2_STATUS_2:
+	case ARIZONA_IRQ2_STATUS_3:
+	case ARIZONA_IRQ2_STATUS_4:
+	case ARIZONA_IRQ2_STATUS_5:
+	case ARIZONA_INTERRUPT_RAW_STATUS_2:
+	case ARIZONA_INTERRUPT_RAW_STATUS_3:
+	case ARIZONA_INTERRUPT_RAW_STATUS_4:
+	case ARIZONA_INTERRUPT_RAW_STATUS_5:
+	case ARIZONA_INTERRUPT_RAW_STATUS_6:
+	case ARIZONA_INTERRUPT_RAW_STATUS_7:
+	case ARIZONA_INTERRUPT_RAW_STATUS_8:
+	case ARIZONA_IRQ_PIN_STATUS:
+	case ARIZONA_AOD_WKUP_AND_TRIG:
+	case ARIZONA_AOD_IRQ1:
+	case ARIZONA_AOD_IRQ2:
+	case ARIZONA_AOD_IRQ_RAW_STATUS:
+	case ARIZONA_FX_CTRL2:
+	case ARIZONA_ASRC_STATUS:
+		return true;
+	default:
+		return false;
+	}
+}
+
+#define WM8998_MAX_REGISTER 0x31ff
+
+const struct regmap_config wm8998_i2c_regmap = {
+	.reg_bits = 32,
+	.val_bits = 16,
+
+	.max_register = WM8998_MAX_REGISTER,
+	.readable_reg = wm8998_readable_register,
+	.volatile_reg = wm8998_volatile_register,
+
+	.cache_type = REGCACHE_RBTREE,
+	.reg_defaults = wm8998_reg_default,
+	.num_reg_defaults = ARRAY_SIZE(wm8998_reg_default),
+};
+EXPORT_SYMBOL_GPL(wm8998_i2c_regmap);
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
index 16a498f..8a12a3b 100644
--- a/include/linux/mfd/arizona/core.h
+++ b/include/linux/mfd/arizona/core.h
@@ -25,6 +25,8 @@  enum arizona_type {
 	WM5110 = 2,
 	WM8997 = 3,
 	WM8280 = 4,
+	WM8998 = 5,
+	WM1814 = 6,
 };
 
 #define ARIZONA_IRQ_GP1                    0
@@ -156,6 +158,7 @@  int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
 int wm5102_patch(struct arizona *arizona);
 int wm5110_patch(struct arizona *arizona);
 int wm8997_patch(struct arizona *arizona);
+int wm8998_patch(struct arizona *arizona);
 
 extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
 				     bool mandatory);
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
index f672267..691f020 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -159,6 +159,8 @@  struct arizona_pdata {
 	/**
 	 * Mode of input structures
 	 * One of the ARIZONA_INMODE_xxx values
+	 * wm5102/wm5110/wm8280/wm8997: [0]=IN1 [1]=IN2 [2]=IN3 [3]=IN4
+	 * wm8998: [0]=IN1A [1]=IN2A [2]=IN1B [3]=IN2B
 	 */
 	int inmode[ARIZONA_MAX_INPUT];
 
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h
index 3499d36..5c39dc5 100644
--- a/include/linux/mfd/arizona/registers.h
+++ b/include/linux/mfd/arizona/registers.h
@@ -139,6 +139,7 @@ 
 #define ARIZONA_MIC_DETECT_LEVEL_2		 0x2A7
 #define ARIZONA_MIC_DETECT_LEVEL_3		 0x2A8
 #define ARIZONA_MIC_DETECT_LEVEL_4		 0x2A9
+#define ARIZONA_MIC_DETECT_4                     0x2AB
 #define ARIZONA_MIC_NOISE_MIX_CONTROL_1          0x2C3
 #define ARIZONA_ISOLATION_CONTROL                0x2CB
 #define ARIZONA_JACK_DETECT_ANALOGUE             0x2D3
@@ -225,14 +226,18 @@ 
 #define ARIZONA_DAC_VOLUME_LIMIT_6R              0x43E
 #define ARIZONA_NOISE_GATE_SELECT_6R             0x43F
 #define ARIZONA_DRE_ENABLE                       0x440
+#define ARIZONA_DRE_CONTROL_1                    0x441
 #define ARIZONA_DRE_CONTROL_2                    0x442
 #define ARIZONA_DRE_CONTROL_3                    0x443
+#define ARIZONA_EDRE_ENABLE                      0x448
 #define ARIZONA_DAC_AEC_CONTROL_1                0x450
+#define ARIZONA_DAC_AEC_CONTROL_2                0x451
 #define ARIZONA_NOISE_GATE_CONTROL               0x458
 #define ARIZONA_PDM_SPK1_CTRL_1                  0x490
 #define ARIZONA_PDM_SPK1_CTRL_2                  0x491
 #define ARIZONA_PDM_SPK2_CTRL_1                  0x492
 #define ARIZONA_PDM_SPK2_CTRL_2                  0x493
+#define ARIZONA_HP_TEST_CTRL_13                  0x49A
 #define ARIZONA_HP1_SHORT_CIRCUIT_CTRL           0x4A0
 #define ARIZONA_HP2_SHORT_CIRCUIT_CTRL           0x4A1
 #define ARIZONA_HP3_SHORT_CIRCUIT_CTRL           0x4A2
@@ -310,6 +315,10 @@ 
 #define ARIZONA_AIF3_TX_ENABLES                  0x599
 #define ARIZONA_AIF3_RX_ENABLES                  0x59A
 #define ARIZONA_AIF3_FORCE_WRITE                 0x59B
+#define ARIZONA_SPD1_TX_CONTROL                  0x5C2
+#define ARIZONA_SPD1_TX_CHANNEL_STATUS_1         0x5C3
+#define ARIZONA_SPD1_TX_CHANNEL_STATUS_2         0x5C4
+#define ARIZONA_SPD1_TX_CHANNEL_STATUS_3         0x5C5
 #define ARIZONA_SLIMBUS_FRAMER_REF_GEAR          0x5E3
 #define ARIZONA_SLIMBUS_RATES_1                  0x5E5
 #define ARIZONA_SLIMBUS_RATES_2                  0x5E6
@@ -643,6 +652,10 @@ 
 #define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME        0x7FD
 #define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE        0x7FE
 #define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME        0x7FF
+#define ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE       0x800
+#define ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME       0x801
+#define ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE       0x808
+#define ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME       0x809
 #define ARIZONA_EQ1MIX_INPUT_1_SOURCE            0x880
 #define ARIZONA_EQ1MIX_INPUT_1_VOLUME            0x881
 #define ARIZONA_EQ1MIX_INPUT_2_SOURCE            0x882
@@ -868,6 +881,7 @@ 
 #define ARIZONA_GPIO5_CTRL                       0xC04
 #define ARIZONA_IRQ_CTRL_1                       0xC0F
 #define ARIZONA_GPIO_DEBOUNCE_CONFIG             0xC10
+#define ARIZONA_GP_SWITCH_1                      0xC18
 #define ARIZONA_MISC_PAD_CTRL_1                  0xC20
 #define ARIZONA_MISC_PAD_CTRL_2                  0xC21
 #define ARIZONA_MISC_PAD_CTRL_3                  0xC22
@@ -1169,6 +1183,13 @@ 
 #define ARIZONA_DSP4_SCRATCH_1                   0x1441
 #define ARIZONA_DSP4_SCRATCH_2                   0x1442
 #define ARIZONA_DSP4_SCRATCH_3                   0x1443
+#define ARIZONA_FRF_COEFF_1                      0x1700
+#define ARIZONA_FRF_COEFF_2                      0x1701
+#define ARIZONA_FRF_COEFF_3                      0x1702
+#define ARIZONA_FRF_COEFF_4                      0x1703
+#define ARIZONA_V2_DAC_COMP_1                    0x1704
+#define ARIZONA_V2_DAC_COMP_2                    0x1705
+
 
 /*
  * Field Definitions.
@@ -2325,6 +2346,9 @@ 
 #define ARIZONA_HP_IDAC_STEER_MASK               0x0004  /* HP_IDAC_STEER */
 #define ARIZONA_HP_IDAC_STEER_SHIFT                   2  /* HP_IDAC_STEER */
 #define ARIZONA_HP_IDAC_STEER_WIDTH                   1  /* HP_IDAC_STEER */
+#define WM8998_HP_RATE_MASK                      0x0006  /* HP_RATE - [2:1] */
+#define WM8998_HP_RATE_SHIFT                          1  /* HP_RATE - [2:1] */
+#define WM8998_HP_RATE_WIDTH                          2  /* HP_RATE - [2:1] */
 #define ARIZONA_HP_RATE                          0x0002  /* HP_RATE */
 #define ARIZONA_HP_RATE_MASK                     0x0002  /* HP_RATE */
 #define ARIZONA_HP_RATE_SHIFT                         1  /* HP_RATE */
@@ -2413,6 +2437,16 @@ 
 #define ARIZONA_MICD_STS_WIDTH                        1  /* MICD_STS */
 
 /*
+ * R683 (0x2AB) - Mic Detect 4
+ */
+#define ARIZONA_MICDET_ADCVAL_DIFF_MASK          0xFF00  /* MICDET_ADCVAL_DIFF - [15:8] */
+#define ARIZONA_MICDET_ADCVAL_DIFF_SHIFT              8  /* MICDET_ADCVAL_DIFF - [15:8] */
+#define ARIZONA_MICDET_ADCVAL_DIFF_WIDTH              8  /* MICDET_ADCVAL_DIFF - [15:8] */
+#define ARIZONA_MICDET_ADCVAL_MASK               0x007F  /* MICDET_ADCVAL - [15:8] */
+#define ARIZONA_MICDET_ADCVAL_SHIFT                   0  /* MICDET_ADCVAL - [15:8] */
+#define ARIZONA_MICDET_ADCVAL_WIDTH                   7  /* MICDET_ADCVAL - [15:8] */
+
+/*
  * R707 (0x2C3) - Mic noise mix control 1
  */
 #define ARIZONA_MICMUTE_RATE_MASK                0x7800  /* MICMUTE_RATE - [14:11] */
@@ -2528,6 +2562,12 @@ 
 /*
  * R785 (0x311) - ADC Digital Volume 1L
  */
+#define ARIZONA_IN1L_SRC_MASK                    0x4000  /* IN1L_SRC - [14] */
+#define ARIZONA_IN1L_SRC_SHIFT                       14  /* IN1L_SRC - [14] */
+#define ARIZONA_IN1L_SRC_WIDTH                        1  /* IN1L_SRC - [14] */
+#define ARIZONA_IN1L_SRC_SE_MASK                 0x2000  /* IN1L_SRC - [13] */
+#define ARIZONA_IN1L_SRC_SE_SHIFT                    13  /* IN1L_SRC - [13] */
+#define ARIZONA_IN1L_SRC_SE_WIDTH                     1  /* IN1L_SRC - [13] */
 #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
@@ -2560,6 +2600,12 @@ 
 /*
  * R789 (0x315) - ADC Digital Volume 1R
  */
+#define ARIZONA_IN1R_SRC_MASK                    0x4000  /* IN1R_SRC - [14] */
+#define ARIZONA_IN1R_SRC_SHIFT                       14  /* IN1R_SRC - [14] */
+#define ARIZONA_IN1R_SRC_WIDTH                        1  /* IN1R_SRC - [14] */
+#define ARIZONA_IN1R_SRC_SE_MASK                 0x2000  /* IN1R_SRC - [13] */
+#define ARIZONA_IN1R_SRC_SE_SHIFT                    13  /* IN1R_SRC - [13] */
+#define ARIZONA_IN1R_SRC_SE_WIDTH                     1  /* IN1R_SRC - [13] */
 #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
@@ -2604,6 +2650,12 @@ 
 /*
  * R793 (0x319) - ADC Digital Volume 2L
  */
+#define ARIZONA_IN2L_SRC_MASK                    0x4000  /* IN2L_SRC - [14] */
+#define ARIZONA_IN2L_SRC_SHIFT                       14  /* IN2L_SRC - [14] */
+#define ARIZONA_IN2L_SRC_WIDTH                        1  /* IN2L_SRC - [14] */
+#define ARIZONA_IN2L_SRC_SE_MASK                 0x2000  /* IN2L_SRC - [13] */
+#define ARIZONA_IN2L_SRC_SE_SHIFT                    13  /* IN2L_SRC - [13] */
+#define ARIZONA_IN2L_SRC_SE_WIDTH                     1  /* IN2L_SRC - [13] */
 #define ARIZONA_IN_VU                            0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_MASK                       0x0200  /* IN_VU */
 #define ARIZONA_IN_VU_SHIFT                           9  /* IN_VU */
@@ -3412,11 +3464,45 @@ 
 #define ARIZONA_DRE1L_ENA_WIDTH                       1  /* DRE1L_ENA */
 
 /*
+ * R1088 (0x440) - DRE Enable (WM8998)
+ */
+#define WM8998_DRE3L_ENA                          0x0020  /* DRE3L_ENA */
+#define WM8998_DRE3L_ENA_MASK                     0x0020  /* DRE3L_ENA */
+#define WM8998_DRE3L_ENA_SHIFT                         5  /* DRE3L_ENA */
+#define WM8998_DRE3L_ENA_WIDTH                         1  /* DRE3L_ENA */
+#define WM8998_DRE2L_ENA                          0x0008  /* DRE2L_ENA */
+#define WM8998_DRE2L_ENA_MASK                     0x0008  /* DRE2L_ENA */
+#define WM8998_DRE2L_ENA_SHIFT                         3  /* DRE2L_ENA */
+#define WM8998_DRE2L_ENA_WIDTH                         1  /* DRE2L_ENA */
+#define WM8998_DRE2R_ENA                          0x0004  /* DRE2R_ENA */
+#define WM8998_DRE2R_ENA_MASK                     0x0004  /* DRE2R_ENA */
+#define WM8998_DRE2R_ENA_SHIFT                         2  /* DRE2R_ENA */
+#define WM8998_DRE2R_ENA_WIDTH                         1  /* DRE2R_ENA */
+#define WM8998_DRE1L_ENA                          0x0002  /* DRE1L_ENA */
+#define WM8998_DRE1L_ENA_MASK                     0x0002  /* DRE1L_ENA */
+#define WM8998_DRE1L_ENA_SHIFT                         1  /* DRE1L_ENA */
+#define WM8998_DRE1L_ENA_WIDTH                         1  /* DRE1L_ENA */
+#define WM8998_DRE1R_ENA                          0x0001  /* DRE1R_ENA */
+#define WM8998_DRE1R_ENA_MASK                     0x0001  /* DRE1R_ENA */
+#define WM8998_DRE1R_ENA_SHIFT                         0  /* DRE1R_ENA */
+#define WM8998_DRE1R_ENA_WIDTH                         1  /* DRE1R_ENA */
+
+/*
+ * R1089 (0x441) - DRE Control 1
+ */
+#define ARIZONA_DRE_ENV_TC_FAST_MASK             0x0F00  /* DRE_ENV_TC_FAST - [11:8] */
+#define ARIZONA_DRE_ENV_TC_FAST_SHIFT                 8  /* DRE_ENV_TC_FAST - [11:8] */
+#define ARIZONA_DRE_ENV_TC_FAST_WIDTH                 4  /* DRE_ENV_TC_FAST - [11:8] */
+
+/*
  * R1090 (0x442) - DRE Control 2
  */
 #define ARIZONA_DRE_T_LOW_MASK                   0x3F00  /* DRE_T_LOW - [13:8] */
 #define ARIZONA_DRE_T_LOW_SHIFT                       8  /* DRE_T_LOW - [13:8] */
 #define ARIZONA_DRE_T_LOW_WIDTH                       6  /* DRE_T_LOW - [13:8] */
+#define ARIZONA_DRE_ALOG_VOL_DELAY_MASK          0x000F  /* DRE_ALOG_VOL_DELAY - [3:0] */
+#define ARIZONA_DRE_ALOG_VOL_DELAY_SHIFT              0  /* DRE_ALOG_VOL_DELAY - [3:0] */
+#define ARIZONA_DRE_ALOG_VOL_DELAY_WIDTH              4  /* DRE_ALOG_VOL_DELAY - [3:0] */
 
 /*
  * R1091 (0x443) - DRE Control 3
@@ -3428,6 +3514,49 @@ 
 #define ARIZONA_DRE_LOW_LEVEL_ABS_SHIFT               0  /* LOW_LEVEL_ABS - [3:0] */
 #define ARIZONA_DRE_LOW_LEVEL_ABS_WIDTH               4  /* LOW_LEVEL_ABS - [3:0] */
 
+/* R486 (0x448) - EDRE_Enable
+ */
+#define ARIZONA_EDRE_OUT4L_THR2_ENA              0x0200  /* EDRE_OUT4L_THR2_ENA */
+#define ARIZONA_EDRE_OUT4L_THR2_ENA_MASK         0x0200  /* EDRE_OUT4L_THR2_ENA */
+#define ARIZONA_EDRE_OUT4L_THR2_ENA_SHIFT             9  /* EDRE_OUT4L_THR2_ENA */
+#define ARIZONA_EDRE_OUT4L_THR2_ENA_WIDTH             1  /* EDRE_OUT4L_THR2_ENA */
+#define ARIZONA_EDRE_OUT4R_THR2_ENA              0x0100  /* EDRE_OUT4R_THR2_ENA */
+#define ARIZONA_EDRE_OUT4R_THR2_ENA_MASK         0x0100  /* EDRE_OUT4R_THR2_ENA */
+#define ARIZONA_EDRE_OUT4R_THR2_ENA_SHIFT             8  /* EDRE_OUT4R_THR2_ENA */
+#define ARIZONA_EDRE_OUT4R_THR2_ENA_WIDTH             1  /* EDRE_OUT4R_THR2_ENA */
+#define ARIZONA_EDRE_OUT4L_THR1_ENA              0x0080  /* EDRE_OUT4L_THR1_ENA */
+#define ARIZONA_EDRE_OUT4L_THR1_ENA_MASK         0x0080  /* EDRE_OUT4L_THR1_ENA */
+#define ARIZONA_EDRE_OUT4L_THR1_ENA_SHIFT             7  /* EDRE_OUT4L_THR1_ENA */
+#define ARIZONA_EDRE_OUT4L_THR1_ENA_WIDTH             1  /* EDRE_OUT4L_THR1_ENA */
+#define ARIZONA_EDRE_OUT4R_THR1_ENA              0x0040  /* EDRE_OUT4R_THR1_ENA */
+#define ARIZONA_EDRE_OUT4R_THR1_ENA_MASK         0x0040  /* EDRE_OUT4R_THR1_ENA */
+#define ARIZONA_EDRE_OUT4R_THR1_ENA_SHIFT             6  /* EDRE_OUT4R_THR1_ENA */
+#define ARIZONA_EDRE_OUT4R_THR1_ENA_WIDTH             1  /* EDRE_OUT4R_THR1_ENA */
+#define ARIZONA_EDRE_OUT3L_THR1_ENA              0x0020  /* EDRE_OUT3L_THR1_ENA */
+#define ARIZONA_EDRE_OUT3L_THR1_ENA_MASK         0x0020  /* EDRE_OUT3L_THR1_ENA */
+#define ARIZONA_EDRE_OUT3L_THR1_ENA_SHIFT             5  /* EDRE_OUT3L_THR1_ENA */
+#define ARIZONA_EDRE_OUT3L_THR1_ENA_WIDTH             1  /* EDRE_OUT3L_THR1_ENA */
+#define ARIZONA_EDRE_OUT3R_THR1_ENA              0x0010  /* EDRE_OUT3R_THR1_ENA */
+#define ARIZONA_EDRE_OUT3R_THR1_ENA_MASK         0x0010  /* EDRE_OUT3R_THR1_ENA */
+#define ARIZONA_EDRE_OUT3R_THR1_ENA_SHIFT             4  /* EDRE_OUT3R_THR1_ENA */
+#define ARIZONA_EDRE_OUT3R_THR1_ENA_WIDTH             1  /* EDRE_OUT3R_THR1_ENA */
+#define ARIZONA_EDRE_OUT2L_THR1_ENA              0x0008  /* EDRE_OUT2L_THR1_ENA */
+#define ARIZONA_EDRE_OUT2L_THR1_ENA_MASK         0x0008  /* EDRE_OUT2L_THR1_ENA */
+#define ARIZONA_EDRE_OUT2L_THR1_ENA_SHIFT             3  /* EDRE_OUT2L_THR1_ENA */
+#define ARIZONA_EDRE_OUT2L_THR1_ENA_WIDTH             1  /* EDRE_OUT2L_THR1_ENA */
+#define ARIZONA_EDRE_OUT2R_THR1_ENA              0x0004  /* EDRE_OUT2R_THR1_ENA */
+#define ARIZONA_EDRE_OUT2R_THR1_ENA_MASK         0x0004  /* EDRE_OUT2R_THR1_ENA */
+#define ARIZONA_EDRE_OUT2R_THR1_ENA_SHIFT             2  /* EDRE_OUT2R_THR1_ENA */
+#define ARIZONA_EDRE_OUT2R_THR1_ENA_WIDTH             1  /* EDRE_OUT2R_THR1_ENA */
+#define ARIZONA_EDRE_OUT1L_THR1_ENA              0x0002  /* EDRE_OUT1L_THR1_ENA */
+#define ARIZONA_EDRE_OUT1L_THR1_ENA_MASK         0x0002  /* EDRE_OUT1L_THR1_ENA */
+#define ARIZONA_EDRE_OUT1L_THR1_ENA_SHIFT             1  /* EDRE_OUT1L_THR1_ENA */
+#define ARIZONA_EDRE_OUT1L_THR1_ENA_WIDTH             1  /* EDRE_OUT1L_THR1_ENA */
+#define ARIZONA_EDRE_OUT1R_THR1_ENA              0x0001  /* EDRE_OUT1R_THR1_ENA */
+#define ARIZONA_EDRE_OUT1R_THR1_ENA_MASK         0x0001  /* EDRE_OUT1R_THR1_ENA */
+#define ARIZONA_EDRE_OUT1R_THR1_ENA_SHIFT             0  /* EDRE_OUT1R_THR1_ENA */
+#define ARIZONA_EDRE_OUT1R_THR1_ENA_WIDTH             1  /* EDRE_OUT1R_THR1_ENA */
+
 /*
  * R1104 (0x450) - DAC AEC Control 1
  */
@@ -4308,6 +4437,86 @@ 
 #define ARIZONA_AIF3_FRC_WR_WIDTH                     1  /* AIF3_FRC_WR */
 
 /*
+ * R1474 (0x5C2) - SPD1 TX Control
+ */
+#define ARIZONA_SPD1_VAL2                        0x2000  /* SPD1_VAL2 */
+#define ARIZONA_SPD1_VAL2_MASK                   0x2000  /* SPD1_VAL2 */
+#define ARIZONA_SPD1_VAL2_SHIFT                      13  /* SPD1_VAL2 */
+#define ARIZONA_SPD1_VAL2_WIDTH                       1  /* SPD1_VAL2 */
+#define ARIZONA_SPD1_VAL1                        0x1000  /* SPD1_VAL1 */
+#define ARIZONA_SPD1_VAL1_MASK                   0x1000  /* SPD1_VAL1 */
+#define ARIZONA_SPD1_VAL1_SHIFT                      12  /* SPD1_VAL1 */
+#define ARIZONA_SPD1_VAL1_WIDTH                       1  /* SPD1_VAL1 */
+#define ARIZONA_SPD1_RATE_MASK                   0x00F0  /* SPD1_RATE */
+#define ARIZONA_SPD1_RATE_SHIFT                       4  /* SPD1_RATE */
+#define ARIZONA_SPD1_RATE_WIDTH                       4  /* SPD1_RATE */
+#define ARIZONA_SPD1_ENA                         0x0001  /* SPD1_ENA */
+#define ARIZONA_SPD1_ENA_MASK                    0x0001  /* SPD1_ENA */
+#define ARIZONA_SPD1_ENA_SHIFT                        0  /* SPD1_ENA */
+#define ARIZONA_SPD1_ENA_WIDTH                        1  /* SPD1_ENA */
+
+/*
+ * R1475 (0x5C3) - SPD1 TX Channel Status 1
+ */
+#define ARIZONA_SPD1_CATCODE_MASK                0xFF00  /* SPD1_CATCODE */
+#define ARIZONA_SPD1_CATCODE_SHIFT                    8  /* SPD1_CATCODE */
+#define ARIZONA_SPD1_CATCODE_WIDTH                    8  /* SPD1_CATCODE */
+#define ARIZONA_SPD1_CHSTMODE_MASK               0x00C0  /* SPD1_CHSTMODE */
+#define ARIZONA_SPD1_CHSTMODE_SHIFT                   6  /* SPD1_CHSTMODE */
+#define ARIZONA_SPD1_CHSTMODE_WIDTH                   2  /* SPD1_CHSTMODE */
+#define ARIZONA_SPD1_PREEMPH_MASK                0x0038  /* SPD1_PREEMPH */
+#define ARIZONA_SPD1_PREEMPH_SHIFT                    3  /* SPD1_PREEMPH */
+#define ARIZONA_SPD1_PREEMPH_WIDTH                    3  /* SPD1_PREEMPH */
+#define ARIZONA_SPD1_NOCOPY                      0x0004  /* SPD1_NOCOPY */
+#define ARIZONA_SPD1_NOCOPY_MASK                 0x0004  /* SPD1_NOCOPY */
+#define ARIZONA_SPD1_NOCOPY_SHIFT                     2  /* SPD1_NOCOPY */
+#define ARIZONA_SPD1_NOCOPY_WIDTH                     1  /* SPD1_NOCOPY */
+#define ARIZONA_SPD1_NOAUDIO                     0x0002  /* SPD1_NOAUDIO */
+#define ARIZONA_SPD1_NOAUDIO_MASK                0x0002  /* SPD1_NOAUDIO */
+#define ARIZONA_SPD1_NOAUDIO_SHIFT                    1  /* SPD1_NOAUDIO */
+#define ARIZONA_SPD1_NOAUDIO_WIDTH                    1  /* SPD1_NOAUDIO */
+#define ARIZONA_SPD1_PRO                         0x0001  /* SPD1_PRO */
+#define ARIZONA_SPD1_PRO_MASK                    0x0001  /* SPD1_PRO */
+#define ARIZONA_SPD1_PRO_SHIFT                        0  /* SPD1_PRO */
+#define ARIZONA_SPD1_PRO_WIDTH                        1  /* SPD1_PRO */
+
+/*
+ * R1475 (0x5C4) - SPD1 TX Channel Status 2
+ */
+#define ARIZONA_SPD1_FREQ_MASK                   0xF000  /* SPD1_FREQ */
+#define ARIZONA_SPD1_FREQ_SHIFT                      12  /* SPD1_FREQ */
+#define ARIZONA_SPD1_FREQ_WIDTH                       4  /* SPD1_FREQ */
+#define ARIZONA_SPD1_CHNUM2_MASK                 0x0F00  /* SPD1_CHNUM2 */
+#define ARIZONA_SPD1_CHNUM2_SHIFT                     8  /* SPD1_CHNUM2 */
+#define ARIZONA_SPD1_CHNUM2_WIDTH                     4  /* SPD1_CHNUM2 */
+#define ARIZONA_SPD1_CHNUM1_MASK                 0x00F0  /* SPD1_CHNUM1 */
+#define ARIZONA_SPD1_CHNUM1_SHIFT                     4  /* SPD1_CHNUM1 */
+#define ARIZONA_SPD1_CHNUM1_WIDTH                     4  /* SPD1_CHNUM1 */
+#define ARIZONA_SPD1_SRCNUM_MASK                 0x000F  /* SPD1_SRCNUM */
+#define ARIZONA_SPD1_SRCNUM_SHIFT                     0  /* SPD1_SRCNUM */
+#define ARIZONA_SPD1_SRCNUM_WIDTH                     4  /* SPD1_SRCNUM */
+
+/*
+ * R1475 (0x5C5) - SPD1 TX Channel Status 3
+ */
+#define ARIZONA_SPD1_ORGSAMP_MASK                 0x0F00  /* SPD1_ORGSAMP */
+#define ARIZONA_SPD1_ORGSAMP_SHIFT                     8  /* SPD1_ORGSAMP */
+#define ARIZONA_SPD1_ORGSAMP_WIDTH                     4  /* SPD1_ORGSAMP */
+#define ARIZONA_SPD1_TXWL_MASK                    0x00E0  /* SPD1_TXWL */
+#define ARIZONA_SPD1_TXWL_SHIFT                        5  /* SPD1_TXWL */
+#define ARIZONA_SPD1_TXWL_WIDTH                        3  /* SPD1_TXWL */
+#define ARIZONA_SPD1_MAXWL                        0x0010  /* SPD1_MAXWL */
+#define ARIZONA_SPD1_MAXWL_MASK                   0x0010  /* SPD1_MAXWL */
+#define ARIZONA_SPD1_MAXWL_SHIFT                       4  /* SPD1_MAXWL */
+#define ARIZONA_SPD1_MAXWL_WIDTH                       1  /* SPD1_MAXWL */
+#define ARIZONA_SPD1_CS31_30_MASK                 0x000C  /* SPD1_CS31_30 */
+#define ARIZONA_SPD1_CS31_30_SHIFT                     2  /* SPD1_CS31_30 */
+#define ARIZONA_SPD1_CS31_30_WIDTH                     2  /* SPD1_CS31_30 */
+#define ARIZONA_SPD1_CLKACU_MASK                  0x0003  /* SPD1_CLKACU */
+#define ARIZONA_SPD1_CLKACU_SHIFT                      2  /* SPD1_CLKACU */
+#define ARIZONA_SPD1_CLKACU_WIDTH                      0  /* SPD1_CLKACU */
+
+/*
  * R1507 (0x5E3) - SLIMbus Framer Ref Gear
  */
 #define ARIZONA_SLIMCLK_SRC                      0x0010  /* SLIMCLK_SRC */
@@ -4562,6 +4771,13 @@ 
 #define ARIZONA_GP_DBTIME_WIDTH                       4  /* GP_DBTIME - [15:12] */
 
 /*
+ * R3096 (0xC18) - GP Switch 1
+ */
+#define ARIZONA_SW1_MODE_MASK                    0x0003  /* SW1_MODE - [1:0] */
+#define ARIZONA_SW1_MODE_SHIFT                        0  /* SW1_MODE - [1:0] */
+#define ARIZONA_SW1_MODE_WIDTH                        2  /* SW1_MODE - [1:0] */
+
+/*
  * R3104 (0xC20) - Misc Pad Ctrl 1
  */
 #define ARIZONA_LDO1ENA_PD                       0x8000  /* LDO1ENA_PD */
@@ -6301,6 +6517,10 @@ 
 /*
  * R3366 (0xD26) - Interrupt Raw Status 8
  */
+#define ARIZONA_SPDIF_OVERCLOCKED_STS            0x8000  /* SPDIF_OVERCLOCKED_STS */
+#define ARIZONA_SPDIF_OVERCLOCKED_STS_MASK       0x8000  /* SPDIF_OVERCLOCKED_STS */
+#define ARIZONA_SPDIF_OVERCLOCKED_STS_SHIFT          15  /* SPDIF_OVERCLOCKED_STS */
+#define ARIZONA_SPDIF_OVERCLOCKED_STS_WIDTH           1  /* SPDIF_OVERCLOCKED_STS */
 #define ARIZONA_AIF3_UNDERCLOCKED_STS            0x0400  /* AIF3_UNDERCLOCKED_STS */
 #define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK       0x0400  /* AIF3_UNDERCLOCKED_STS */
 #define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT          10  /* AIF3_UNDERCLOCKED_STS */