]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge tag 'sound-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 4 Sep 2015 18:46:02 +0000 (11:46 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 4 Sep 2015 18:46:02 +0000 (11:46 -0700)
Pull sound updates from Takashi Iwai:
 "There are little changes in core part, but lots of development are
  found in drivers, especially ASoC.  The diffstat shows regmap-related
  changes for a slight API additions / changes, and that's all.

  Looking at the code size statistics, the most significant addition is
  for Intel Skylake.  (Note that SKL support is still underway, the
  codec driver is missing.) Also STI controller driver is a major
  addition as well as a few new codec drivers.

  In HD-audio side, there are fewer changes than the past.  The
  noticeable change is the support of ELD notification from i915
  graphics driver.  Thus this pull request carries a few changes in
  drm/i915.

  Other than that, USB-audio got a rewrite of runtime PM code.  It was
  initiated by lockdep warning, but resulted in a good cleanup in the
  end.

  Below are the highlights:

  Common:
   - Factoring out of AC'97 reset code from ASoC into the core helper
   - A few regmap API extensions (in case it's not pulled yet)

  ASoC:
   - New drivers for Cirrus CS4349, GTM601, InvenSense ICS43432, Realtek
     RT298 and ST STI controllers
   - Machine drivers for Rockchip systems with MAX98090 and RT5645 and
     RT5650
   - Initial driver support for Intel Skylake devices
   - Lots of rsnd cleanup and enhancements
   - A few DAPM fixes and cleanups
   - A large number of cleanups in various drivers (conversion and
     standardized to regmap, component) mostly by Lars-Peter and Axel

  HD-audio:
   - Extended HD-audio core for Intel Skylake controller support
   - Quirks for Dell headsets, Alienware 15
   - Clean up of pin-based quirk tables for Realtek codecs
   - ELD notifier implenetation for Intel HDMI/DP

  USB-audio:
   - Refactor runtime PM code to make lockdep happier"

* tag 'sound-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (411 commits)
  drm/i915: Add locks around audio component bind/unbind
  drm/i915: Drop port_mst_index parameter from pin/eld callback
  ALSA: hda - Fix missing inline for dummy snd_hdac_set_codec_wakeup()
  ALSA: hda - Wake the codec up on pin/ELD notify events
  ALSA: hda - allow codecs to access the i915 pin/ELD callback
  drm/i915: Call audio pin/ELD notify function
  drm/i915: Add audio pin sense / ELD callback
  ASoC: zx296702-i2s: Fix resource leak when unload module
  ASoC: sti_uniperif: Ensure component is unregistered when unload module
  ASoC: au1x: psc-i2s: Convert to use devm_ioremap_resource
  ASoC: sh: dma-sh7760: Convert to devm_snd_soc_register_platform
  ASoC: spear_pcm: Use devm_snd_dmaengine_pcm_register to fix resource leak
  ALSA: fireworks/bebob/dice/oxfw: fix substreams counting at vmalloc failure
  ASoC: Clean up docbook warnings
  ASoC: txx9: Convert to devm_snd_soc_register_platform
  ASoC: pxa: Convert to devm_snd_soc_register_platform
  ASoC: nuc900: Convert to devm_snd_soc_register_platform
  ASoC: blackfin: Convert to devm_snd_soc_register_platform
  ASoC: au1x: Convert to devm_snd_soc_register_platform
  ASoC: qcom: Constify asoc_qcom_lpass_cpu_dai_ops
  ...

1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
drivers/mfd/arizona-core.c
drivers/mfd/twl6040.c
drivers/mfd/wm5102-tables.c
drivers/mfd/wm5110-tables.c
drivers/mfd/wm8994-core.c
drivers/mfd/wm8997-tables.c
include/linux/mfd/arizona/registers.h
sound/soc/fsl/fsl_esai.c

index 80a72099ed763453d72abc1748b8b424dab85836,66a33ae5f5bcfd01e38c1ce29e0e8694f69ac5ac..2a85b156f997e272e523a76a7eeea41285380acd
@@@ -46,7 -46,6 +46,7 @@@ chipone               ChipOn
  chipspark     ChipSPARK
  chrp  Common Hardware Reference Platform
  chunghwa      Chunghwa Picture Tubes Ltd.
 +ciaa  Computadora Industrial Abierta Argentina
  cirrus        Cirrus Logic, Inc.
  cloudengines  Cloud Engines, Inc.
  cnm   Chips&Media, Inc.
@@@ -111,9 -110,9 +111,10 @@@ ingenic   Ingenic Semiconducto
  innolux       Innolux Corporation
  intel Intel Corporation
  intercontrol  Inter Control Group
+ invensense    InvenSense Inc.
  isee  ISEE 2007 S.L.
  isil  Intersil
 +jedec JEDEC Solid State Technology Association
  karo  Ka-Ro electronics GmbH
  keymile       Keymile GmbH
  kinetic Kinetic Technologies
@@@ -137,7 -136,6 +138,7 @@@ mitsubishi Mitsubishi Electric Corporat
  mosaixtech    Mosaix Technologies, Inc.
  moxa  Moxa
  mpl   MPL AG
 +msi   Micro-Star International Co. Ltd.
  mti   Imagination Technologies Ltd. (formerly MIPS Technologies Inc.)
  mundoreader   Mundo Reader S.L.
  murata        Murata Manufacturing Co., Ltd.
@@@ -146,15 -144,14 +147,16 @@@ national        National Semiconducto
  neonode               Neonode Inc.
  netgear       NETGEAR
  netlogic      Broadcom Corporation (formerly NetLogic Microsystems)
 +netxeon               Shenzhen Netxeon Technology CO., LTD
  newhaven      Newhaven Display International
  nintendo      Nintendo
  nokia Nokia
 +nuvoton       Nuvoton Technology Corporation
  nvidia        NVIDIA
  nxp   NXP Semiconductors
  onnn  ON Semiconductor Corp.
  opencores     OpenCores.org
+ option        Option NV
  ortustech     Ortus Technology Co., Ltd.
  ovti  OmniVision Technologies
  panasonic     Panasonic Corporation
@@@ -186,7 -183,6 +188,7 @@@ sbs        Smart Battery Syste
  schindler     Schindler
  seagate       Seagate Technology PLC
  semtech       Semtech Corporation
 +sharp Sharp Corporation
  sil   Silicon Image
  silabs        Silicon Laboratories
  siliconmitus  Silicon Mitus, Inc.
index 08b36fa5b0c5cde2ca1313c7ce0addd3893ebbf2,0ce20ce170c41793d88febd54302d261b92df9db..44cfdbb295dbca2e805635c426966e21b2b71c16
@@@ -30,7 -30,7 +30,7 @@@
  
  #include "arizona.h"
  
 -static const char *wm5102_core_supplies[] = {
 +static const char * const wm5102_core_supplies[] = {
        "AVDD",
        "DBVDD1",
  };
@@@ -146,31 -146,17 +146,31 @@@ static irqreturn_t arizona_underclocked
  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)
        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;
  }
  
@@@ -409,7 -392,7 +409,7 @@@ err
   * Register patch to some of the CODECs internal write sequences
   * to ensure a clean exit from the low power sleep state.
   */
- static const struct reg_default wm5110_sleep_patch[] = {
+ static const struct reg_sequence wm5110_sleep_patch[] = {
        { 0x337A, 0xC100 },
        { 0x337B, 0x0041 },
        { 0x3300, 0xA210 },
@@@ -567,8 -550,9 +567,8 @@@ static int arizona_runtime_resume(struc
                break;
        default:
                ret = arizona_wait_for_boot(arizona);
 -              if (ret != 0) {
 +              if (ret != 0)
                        goto err;
 -              }
  
                if (arizona->external_dcvdd) {
                        ret = regmap_update_bits(arizona->regmap,
@@@ -775,8 -759,8 +775,8 @@@ static int arizona_of_get_core_pdata(st
  
        ret = of_property_read_u32_array(arizona->dev->of_node,
                                         "wlf,gpio-defaults",
 -                                       arizona->pdata.gpio_defaults,
 -                                       ARRAY_SIZE(arizona->pdata.gpio_defaults));
 +                                       pdata->gpio_defaults,
 +                                       ARRAY_SIZE(pdata->gpio_defaults));
        if (ret >= 0) {
                /*
                 * All values are literal except out of range values
                 * data which uses 0 as chip default and out of range
                 * as zero.
                 */
 -              for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) {
 -                      if (arizona->pdata.gpio_defaults[i] > 0xffff)
 -                              arizona->pdata.gpio_defaults[i] = 0;
 -                      else if (arizona->pdata.gpio_defaults[i] == 0)
 -                              arizona->pdata.gpio_defaults[i] = 0x10000;
 +              for (i = 0; i < ARRAY_SIZE(pdata->gpio_defaults); i++) {
 +                      if (pdata->gpio_defaults[i] > 0xffff)
 +                              pdata->gpio_defaults[i] = 0;
 +                      else if (pdata->gpio_defaults[i] == 0)
 +                              pdata->gpio_defaults[i] = 0x10000;
                }
        } else {
                dev_err(arizona->dev, "Failed to parse GPIO defaults: %d\n",
  
        of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop,
                                 cur, val) {
 -              if (count == ARRAY_SIZE(arizona->pdata.inmode))
 +              if (count == ARRAY_SIZE(pdata->inmode))
                        break;
  
 -              arizona->pdata.inmode[count] = val;
 +              pdata->inmode[count] = val;
                count++;
        }
  
        count = 0;
        of_property_for_each_u32(arizona->dev->of_node, "wlf,dmic-ref", prop,
                                 cur, val) {
 -              if (count == ARRAY_SIZE(arizona->pdata.dmic_ref))
 +              if (count == ARRAY_SIZE(pdata->dmic_ref))
                        break;
  
 -              arizona->pdata.dmic_ref[count] = val;
 +              pdata->dmic_ref[count] = val;
                count++;
        }
  
@@@ -822,8 -806,6 +822,8 @@@ const struct of_device_id arizona_of_ma
        { .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);
@@@ -838,7 -820,7 +838,7 @@@ static const struct mfd_cell early_devs
        { .name = "arizona-ldo1" },
  };
  
 -static const char *wm5102_supplies[] = {
 +static const char * const wm5102_supplies[] = {
        "MICVDD",
        "DBVDD2",
        "DBVDD3",
@@@ -881,7 -863,7 +881,7 @@@ static const struct mfd_cell wm5110_dev
        },
  };
  
 -static const char *wm8997_supplies[] = {
 +static const char * const wm8997_supplies[] = {
        "MICVDD",
        "DBVDD2",
        "CPVDD",
@@@ -905,28 -887,11 +905,28 @@@ static const struct mfd_cell wm8997_dev
        },
  };
  
 +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;
  
        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];
        switch (reg) {
        case 0x5102:
        case 0x5110:
 +      case 0x6349:
        case 0x8997:
                break;
        default:
                }
                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);
                        << 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++) {
                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 --combined drivers/mfd/twl6040.c
index fbc9b6eb20a2249742dc31f37ca03d1ccb249171,583dc33432f31ed056aa53e4e37582fefc4f7e71..a151ee2eed2a4dfa450bade9d35f0a953c730d42
@@@ -86,7 -86,7 +86,7 @@@ static const struct reg_default twl6040
        { 0x2E, 0x00 }, /* REG_STATUS   (ro) */
  };
  
- static struct reg_default twl6040_patch[] = {
+ static struct reg_sequence twl6040_patch[] = {
        /*
         * Select I2C bus access to dual access registers
         * Interrupt register is cleared on read
@@@ -801,6 -801,7 +801,6 @@@ MODULE_DEVICE_TABLE(i2c, twl6040_i2c_id
  static struct i2c_driver twl6040_driver = {
        .driver = {
                .name = "twl6040",
 -              .owner = THIS_MODULE,
        },
        .probe          = twl6040_probe,
        .remove         = twl6040_remove,
index a4997a5c02ceddec4fbe11a379f35e216c62c30a,423fb3730dc714f17accd85d9aa9eda9b29b8ebf..0386eaf6be32768d2b7de9f7f8fc2586b0155b2f
@@@ -21,7 -21,7 +21,7 @@@
  #define WM5102_NUM_AOD_ISR 2
  #define WM5102_NUM_ISR 5
  
- static const struct reg_default wm5102_reva_patch[] = {
+ static const struct reg_sequence wm5102_reva_patch[] = {
        { 0x80, 0x0003 },
        { 0x221, 0x0090 },
        { 0x211, 0x0014 },
@@@ -57,7 -57,7 +57,7 @@@
        { 0x80, 0x0000 },
  };
  
- static const struct reg_default wm5102_revb_patch[] = {
+ static const struct reg_sequence wm5102_revb_patch[] = {
        { 0x19, 0x0001 },
        { 0x80, 0x0003 },
        { 0x081, 0xE022 },
@@@ -80,7 -80,7 +80,7 @@@
  /* We use a function so we can use ARRAY_SIZE() */
  int wm5102_patch(struct arizona *arizona)
  {
-       const struct reg_default *wm5102_patch;
+       const struct reg_sequence *wm5102_patch;
        int patch_size;
  
        switch (arizona->rev) {
@@@ -266,6 -266,8 +266,6 @@@ static const struct reg_default wm5102_
        { 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 */
        { 0x00000070, 0x0000 },   /* R112   - Comfort Noise Generator */ 
        { 0x00000090, 0x0000 },   /* R144   - Haptics Control 1 */ 
        { 0x00000091, 0x7FFF },   /* R145   - Haptics Control 2 */ 
        { 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 */ 
        { 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 */ 
        { 0x0000021A, 0x01A6 },   /* R538   - Mic Bias Ctrl 3 */ 
        { 0x00000293, 0x0000 },   /* R659   - Accessory Detect Mode 1 */ 
        { 0x0000029B, 0x0020 },   /* R667   - Headphone Detect 1 */ 
 -      { 0x0000029C, 0x0000 },   /* R668   - Headphone Detect 2 */
 -      { 0x0000029F, 0x0000 },   /* R671   - Headphone Detect Test */
        { 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, 0x372C },   /* R679   - Mic Detect Level 2 */
        { 0x000002A8, 0x1422 },   /* R680   - Mic Detect Level 3 */
        { 0x00000D1B, 0xFFFF },   /* R3355  - IRQ2 Status 4 Mask */ 
        { 0x00000D1C, 0xFFFF },   /* R3356  - IRQ2 Status 5 Mask */ 
        { 0x00000D1F, 0x0000 },   /* R3359  - IRQ2 Control */ 
 +      { 0x00000D41, 0x0000 },   /* R3393  - ADSP2 IRQ0 */
        { 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 */ 
        { 0x00000ECD, 0x0000 },   /* R3789  - HPLPF4_2 */ 
        { 0x00000EE0, 0x0000 },   /* R3808  - ASRC_ENABLE */ 
        { 0x00000EE2, 0x0000 },   /* R3810  - ASRC_RATE1 */ 
 +      { 0x00000EE3, 0x0400 },   /* R3811  - ASRC_RATE2 */
        { 0x00000EF0, 0x0000 },   /* R3824  - ISRC 1 CTRL 1 */ 
        { 0x00000EF1, 0x0000 },   /* R3825  - ISRC 1 CTRL 2 */ 
        { 0x00000EF2, 0x0000 },   /* R3826  - ISRC 1 CTRL 3 */ 
        { 0x00000EF4, 0x0000 },   /* R3828  - ISRC 2 CTRL 2 */ 
        { 0x00000EF5, 0x0000 },   /* R3829  - ISRC 2 CTRL 3 */ 
        { 0x00001100, 0x0010 },   /* R4352  - DSP1 Control 1 */ 
 -      { 0x00001101, 0x0000 },   /* R4353  - DSP1 Clocking 1 */ 
  };
  
  static bool wm5102_readable_register(struct device *dev, unsigned int reg)
        case ARIZONA_DEVICE_REVISION:
        case ARIZONA_CTRL_IF_SPI_CFG_1:
        case ARIZONA_CTRL_IF_I2C1_CFG_1:
 -      case ARIZONA_CTRL_IF_STATUS_1:
        case ARIZONA_WRITE_SEQUENCER_CTRL_0:
        case ARIZONA_WRITE_SEQUENCER_CTRL_1:
        case ARIZONA_WRITE_SEQUENCER_CTRL_2:
        case ARIZONA_WRITE_SEQUENCER_CTRL_3:
 -      case ARIZONA_WRITE_SEQUENCER_PROM:
        case ARIZONA_TONE_GENERATOR_1:
        case ARIZONA_TONE_GENERATOR_2:
        case ARIZONA_TONE_GENERATOR_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_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_7:
 -      case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_8:
        case ARIZONA_COMFORT_NOISE_GENERATOR:
        case ARIZONA_HAPTICS_CONTROL_1:
        case ARIZONA_HAPTICS_CONTROL_2:
        case ARIZONA_DAC_DIGITAL_VOLUME_4L:
        case ARIZONA_OUT_VOLUME_4L:
        case ARIZONA_NOISE_GATE_SELECT_4L:
 -      case ARIZONA_OUTPUT_PATH_CONFIG_4R:
        case ARIZONA_DAC_DIGITAL_VOLUME_4R:
        case ARIZONA_OUT_VOLUME_4R:
        case ARIZONA_NOISE_GATE_SELECT_4R:
        case ARIZONA_DAC_DIGITAL_VOLUME_5L:
        case ARIZONA_DAC_VOLUME_LIMIT_5L:
        case ARIZONA_NOISE_GATE_SELECT_5L:
 -      case ARIZONA_OUTPUT_PATH_CONFIG_5R:
        case ARIZONA_DAC_DIGITAL_VOLUME_5R:
        case ARIZONA_DAC_VOLUME_LIMIT_5R:
        case ARIZONA_NOISE_GATE_SELECT_5R:
        case ARIZONA_NOISE_GATE_CONTROL:
        case ARIZONA_PDM_SPK1_CTRL_1:
        case ARIZONA_PDM_SPK1_CTRL_2:
 -      case ARIZONA_SPK_CTRL_2:
 -      case ARIZONA_SPK_CTRL_3:
        case ARIZONA_DAC_COMP_1:
        case ARIZONA_DAC_COMP_2:
        case ARIZONA_DAC_COMP_3:
        case ARIZONA_AIF1_FRAME_CTRL_18:
        case ARIZONA_AIF1_TX_ENABLES:
        case ARIZONA_AIF1_RX_ENABLES:
 -      case ARIZONA_AIF1_FORCE_WRITE:
        case ARIZONA_AIF2_BCLK_CTRL:
        case ARIZONA_AIF2_TX_PIN_CTRL:
        case ARIZONA_AIF2_RX_PIN_CTRL:
        case ARIZONA_AIF2_FRAME_CTRL_12:
        case ARIZONA_AIF2_TX_ENABLES:
        case ARIZONA_AIF2_RX_ENABLES:
 -      case ARIZONA_AIF2_FORCE_WRITE:
        case ARIZONA_AIF3_BCLK_CTRL:
        case ARIZONA_AIF3_TX_PIN_CTRL:
        case ARIZONA_AIF3_RX_PIN_CTRL:
        case ARIZONA_AIF3_FRAME_CTRL_12:
        case ARIZONA_AIF3_TX_ENABLES:
        case ARIZONA_AIF3_RX_ENABLES:
 -      case ARIZONA_AIF3_FORCE_WRITE:
        case ARIZONA_SLIMBUS_FRAMER_REF_GEAR:
        case ARIZONA_SLIMBUS_RATES_1:
        case ARIZONA_SLIMBUS_RATES_2:
        case ARIZONA_DRC1RMIX_INPUT_3_VOLUME:
        case ARIZONA_DRC1RMIX_INPUT_4_SOURCE:
        case ARIZONA_DRC1RMIX_INPUT_4_VOLUME:
 -      case ARIZONA_DRC2LMIX_INPUT_1_SOURCE:
 -      case ARIZONA_DRC2LMIX_INPUT_1_VOLUME:
 -      case ARIZONA_DRC2LMIX_INPUT_2_SOURCE:
 -      case ARIZONA_DRC2LMIX_INPUT_2_VOLUME:
 -      case ARIZONA_DRC2LMIX_INPUT_3_SOURCE:
 -      case ARIZONA_DRC2LMIX_INPUT_3_VOLUME:
 -      case ARIZONA_DRC2LMIX_INPUT_4_SOURCE:
 -      case ARIZONA_DRC2LMIX_INPUT_4_VOLUME:
 -      case ARIZONA_DRC2RMIX_INPUT_1_SOURCE:
 -      case ARIZONA_DRC2RMIX_INPUT_1_VOLUME:
 -      case ARIZONA_DRC2RMIX_INPUT_2_SOURCE:
 -      case ARIZONA_DRC2RMIX_INPUT_2_VOLUME:
 -      case ARIZONA_DRC2RMIX_INPUT_3_SOURCE:
 -      case ARIZONA_DRC2RMIX_INPUT_3_VOLUME:
 -      case ARIZONA_DRC2RMIX_INPUT_4_SOURCE:
 -      case ARIZONA_DRC2RMIX_INPUT_4_VOLUME:
        case ARIZONA_HPLP1MIX_INPUT_1_SOURCE:
        case ARIZONA_HPLP1MIX_INPUT_1_VOLUME:
        case ARIZONA_HPLP1MIX_INPUT_2_SOURCE:
        case ARIZONA_DRC1_CTRL3:
        case ARIZONA_DRC1_CTRL4:
        case ARIZONA_DRC1_CTRL5:
 -      case ARIZONA_DRC2_CTRL1:
 -      case ARIZONA_DRC2_CTRL2:
 -      case ARIZONA_DRC2_CTRL3:
 -      case ARIZONA_DRC2_CTRL4:
 -      case ARIZONA_DRC2_CTRL5:
        case ARIZONA_HPLPF1_1:
        case ARIZONA_HPLPF1_2:
        case ARIZONA_HPLPF2_1:
        case ARIZONA_ISRC_2_CTRL_1:
        case ARIZONA_ISRC_2_CTRL_2:
        case ARIZONA_ISRC_2_CTRL_3:
 -      case ARIZONA_ISRC_3_CTRL_1:
 -      case ARIZONA_ISRC_3_CTRL_2:
 -      case ARIZONA_ISRC_3_CTRL_3:
        case ARIZONA_DSP1_CONTROL_1:
        case ARIZONA_DSP1_CLOCKING_1:
        case ARIZONA_DSP1_STATUS_1:
@@@ -1841,6 -1883,7 +1841,6 @@@ static bool wm5102_volatile_register(st
        case ARIZONA_WRITE_SEQUENCER_CTRL_2:
        case ARIZONA_WRITE_SEQUENCER_CTRL_3:
        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_SAMPLE_RATE_1_STATUS:
@@@ -1926,8 -1969,6 +1926,8 @@@ const struct regmap_config wm5102_spi_r
        .reg_bits = 32,
        .pad_bits = 16,
        .val_bits = 16,
 +      .reg_format_endian = REGMAP_ENDIAN_BIG,
 +      .val_format_endian = REGMAP_ENDIAN_BIG,
  
        .max_register = WM5102_MAX_REGISTER,
        .readable_reg = wm5102_readable_register,
@@@ -1942,8 -1983,6 +1942,8 @@@ EXPORT_SYMBOL_GPL(wm5102_spi_regmap)
  const struct regmap_config wm5102_i2c_regmap = {
        .reg_bits = 32,
        .val_bits = 16,
 +      .reg_format_endian = REGMAP_ENDIAN_BIG,
 +      .val_format_endian = REGMAP_ENDIAN_BIG,
  
        .max_register = WM5102_MAX_REGISTER,
        .readable_reg = wm5102_readable_register,
index 19785a6bcac6b19986281057521f70ae836e2d1f,dae04dd20ff50737075cdfb6d27bb23383585edf..c4b9374efd76d6ba77f372980a9e2f4ee227abaf
@@@ -21,7 -21,7 +21,7 @@@
  #define WM5110_NUM_AOD_ISR 2
  #define WM5110_NUM_ISR 5
  
- static const struct reg_default wm5110_reva_patch[] = {
+ static const struct reg_sequence wm5110_reva_patch[] = {
        { 0x80, 0x3 },
        { 0x44, 0x20 },
        { 0x45, 0x40 },
        { 0x209, 0x002A },
  };
  
- static const struct reg_default wm5110_revb_patch[] = {
+ static const struct reg_sequence wm5110_revb_patch[] = {
        { 0x80, 0x3 },
        { 0x36e, 0x0210 },
        { 0x370, 0x0210 },
        { 0x80, 0x0 },
  };
  
- static const struct reg_default wm5110_revd_patch[] = {
+ static const struct reg_sequence wm5110_revd_patch[] = {
        { 0x80, 0x3 },
        { 0x80, 0x3 },
        { 0x393, 0x27 },
        { 0x80, 0x0 },
  };
  
+ /* Add extra headphone write sequence locations */
+ static const struct reg_default wm5110_reve_patch[] = {
+       { 0x80, 0x3 },
+       { 0x80, 0x3 },
+       { 0x4b, 0x138 },
+       { 0x4c, 0x13d },
+       { 0x80, 0x0 },
+       { 0x80, 0x0 },
+ };
  /* We use a function so we can use ARRAY_SIZE() */
  int wm5110_patch(struct arizona *arizona)
  {
                                             wm5110_revd_patch,
                                             ARRAY_SIZE(wm5110_revd_patch));
        default:
-               return 0;
+               return regmap_register_patch(arizona->regmap,
+                                            wm5110_reve_patch,
+                                            ARRAY_SIZE(wm5110_reve_patch));
        }
  }
  EXPORT_SYMBOL_GPL(wm5110_patch);
@@@ -676,6 -688,7 +688,7 @@@ static const struct reg_default wm5110_
        { 0x00000032, 0x0100 },    /* R50    - PWM Drive 3 */
        { 0x00000040, 0x0000 },    /* R64    - Wake control */
        { 0x00000041, 0x0000 },    /* R65    - Sequence control */
+       { 0x00000042, 0x0000 },    /* R66    - Spare Triggers */
        { 0x00000061, 0x01FF },    /* R97    - Sample Rate Sequence Select 1 */
        { 0x00000062, 0x01FF },    /* R98    - Sample Rate Sequence Select 2 */
        { 0x00000063, 0x01FF },    /* R99    - Sample Rate Sequence Select 3 */
        { 0x0000021A, 0x01A6 },    /* R538   - Mic Bias Ctrl 3 */
        { 0x00000293, 0x0000 },    /* R659   - Accessory Detect Mode 1 */
        { 0x0000029B, 0x0028 },    /* 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, 0x372C },    /* R679   - Mic Detect Level 2 */
        { 0x000002A8, 0x1422 },    /* R680   - Mic Detect Level 3 */
        { 0x00000440, 0x8FFF },    /* R1088  - DRE Enable */
        { 0x00000450, 0x0000 },    /* R1104  - DAC AEC Control 1 */
        { 0x00000458, 0x0000 },    /* R1112  - Noise Gate Control */
 -      { 0x00000480, 0x0040 },    /* R1152  - Class W ANC Threshold 1 */
 -      { 0x00000481, 0x0040 },    /* R1153  - Class W ANC Threshold 2 */
        { 0x00000490, 0x0069 },    /* R1168  - PDM SPK1 CTRL 1 */
        { 0x00000491, 0x0000 },    /* R1169  - PDM SPK1 CTRL 2 */
        { 0x00000492, 0x0069 },    /* R1170  - PDM SPK2 CTRL 1 */
        { 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 */
        { 0x00000F00, 0x0000 },    /* R3840  - Clock Control */
        { 0x00000F01, 0x0000 },    /* R3841  - ANC_SRC */
        { 0x00001100, 0x0010 },    /* R4352  - DSP1 Control 1 */
 -      { 0x00001101, 0x0000 },    /* R4353  - DSP1 Clocking 1 */
        { 0x00001200, 0x0010 },    /* R4608  - DSP2 Control 1 */
 -      { 0x00001201, 0x0000 },    /* R4609  - DSP2 Clocking 1 */
        { 0x00001300, 0x0010 },    /* R4864  - DSP3 Control 1 */
 -      { 0x00001301, 0x0000 },    /* R4865  - DSP3 Clocking 1 */
        { 0x00001400, 0x0010 },    /* R5120  - DSP4 Control 1 */
 -      { 0x00001401, 0x0000 },    /* R5121  - DSP4 Clocking 1 */
 -      { 0x00001404, 0x0000 },    /* R5124  - DSP4 Status 1 */
  };
  
  static bool wm5110_is_rev_b_adsp_memory(unsigned int reg)
@@@ -1706,6 -1729,7 +1719,7 @@@ static bool wm5110_readable_register(st
        case ARIZONA_PWM_DRIVE_3:
        case ARIZONA_WAKE_CONTROL:
        case ARIZONA_SEQUENCE_CONTROL:
+       case ARIZONA_SPARE_TRIGGERS:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3:
@@@ -2997,8 -3021,6 +3011,8 @@@ const struct regmap_config wm5110_spi_r
        .reg_bits = 32,
        .pad_bits = 16,
        .val_bits = 16,
 +      .reg_format_endian = REGMAP_ENDIAN_BIG,
 +      .val_format_endian = REGMAP_ENDIAN_BIG,
  
        .max_register = WM5110_MAX_REGISTER,
        .readable_reg = wm5110_readable_register,
@@@ -3013,8 -3035,6 +3027,8 @@@ EXPORT_SYMBOL_GPL(wm5110_spi_regmap)
  const struct regmap_config wm5110_i2c_regmap = {
        .reg_bits = 32,
        .val_bits = 16,
 +      .reg_format_endian = REGMAP_ENDIAN_BIG,
 +      .val_format_endian = REGMAP_ENDIAN_BIG,
  
        .max_register = WM5110_MAX_REGISTER,
        .readable_reg = wm5110_readable_register,
index 213da341677808a6a77d15d39e6c932a09379f67,0f4169a3a5d4c181017ab22ac40a1cb1dfd1fad2..7eec619a6023c717803d05e318537e0589f6967e
@@@ -243,21 -243,21 +243,21 @@@ static int wm8994_ldo_in_use(struct wm8
  }
  #endif
  
- static const struct reg_default wm8994_revc_patch[] = {
+ static const struct reg_sequence wm8994_revc_patch[] = {
        { 0x102, 0x3 },
        { 0x56, 0x3 },
        { 0x817, 0x0 },
        { 0x102, 0x0 },
  };
  
- static const struct reg_default wm8958_reva_patch[] = {
+ static const struct reg_sequence wm8958_reva_patch[] = {
        { 0x102, 0x3 },
        { 0xcb, 0x81 },
        { 0x817, 0x0 },
        { 0x102, 0x0 },
  };
  
- static const struct reg_default wm1811_reva_patch[] = {
+ static const struct reg_sequence wm1811_reva_patch[] = {
        { 0x102, 0x3 },
        { 0x56, 0xc07 },
        { 0x5d, 0x7e },
@@@ -326,7 -326,7 +326,7 @@@ static int wm8994_device_init(struct wm
  {
        struct wm8994_pdata *pdata;
        struct regmap_config *regmap_config;
-       const struct reg_default *regmap_patch = NULL;
+       const struct reg_sequence *regmap_patch = NULL;
        const char *devname;
        int ret, i, patch_regs = 0;
        int pulls = 0;
@@@ -677,6 -677,7 +677,6 @@@ static const struct dev_pm_ops wm8994_p
  static struct i2c_driver wm8994_i2c_driver = {
        .driver = {
                .name = "wm8994",
 -              .owner = THIS_MODULE,
                .pm = &wm8994_pm_ops,
                .of_match_table = of_match_ptr(wm8994_of_match),
        },
index 2a91473dc1ee33b641aeac72afb4346816dafb8e,cab2c68f17378eff6efd0a0da54153a094584b73..ca41a561bfd3d04823845389f05a24a68f403ec0
@@@ -17,7 -17,7 +17,7 @@@
  
  #include "arizona.h"
  
- static const struct reg_default wm8997_reva_patch[] = {
+ static const struct reg_sequence wm8997_reva_patch[] = {
        { 0x80, 0x0003 },
        { 0x214, 0x0008 },
        { 0x458, 0x0000 },
@@@ -243,6 -243,7 +243,6 @@@ static const struct reg_default wm8997_
        { 0x0000029B, 0x0020 },    /* R667   - Headphone Detect 1 */
        { 0x000002A3, 0x1102 },    /* R675   - Mic Detect 1 */
        { 0x000002A4, 0x009F },    /* R676   - Mic Detect 2 */
 -      { 0x000002A5, 0x0000 },    /* R677   - Mic Detect 3 */
        { 0x000002C3, 0x0000 },    /* R707   - Mic noise mix control 1 */
        { 0x000002CB, 0x0000 },    /* R715   - Isolation control */
        { 0x000002D3, 0x0000 },    /* R723   - Jack detect analogue */
        { 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 */
        { 0x00000EF3, 0x0000 },    /* R3827  - ISRC 2 CTRL 1 */
        { 0x00000EF4, 0x0000 },    /* R3828  - ISRC 2 CTRL 2 */
        { 0x00000EF5, 0x0000 },    /* R3829  - ISRC 2 CTRL 3 */
 -      { 0x00001100, 0x0010 },    /* R4352  - DSP1 Control 1 */
 -      { 0x00001101, 0x0000 },    /* R4353  - DSP1 Clocking 1 */
  };
  
  static bool wm8997_readable_register(struct device *dev, unsigned int reg)
@@@ -1476,8 -1480,6 +1476,8 @@@ static bool wm8997_volatile_register(st
        case ARIZONA_SAMPLE_RATE_2_STATUS:
        case ARIZONA_SAMPLE_RATE_3_STATUS:
        case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
 +      case ARIZONA_FLL1_NCO_TEST_0:
 +      case ARIZONA_FLL2_NCO_TEST_0:
        case ARIZONA_MIC_DETECT_3:
        case ARIZONA_HP_CTRL_1L:
        case ARIZONA_HP_CTRL_1R:
  const struct regmap_config wm8997_i2c_regmap = {
        .reg_bits = 32,
        .val_bits = 16,
 +      .reg_format_endian = REGMAP_ENDIAN_BIG,
 +      .val_format_endian = REGMAP_ENDIAN_BIG,
  
        .max_register = WM8997_MAX_REGISTER,
        .readable_reg = wm8997_readable_register,
index 5c39dc5d279ef8d5ab69770a4839a4036b744704,11affb3c2768a10b09d44e71c43cddb68bc879d4..fdd70b3c7418368180af30cf210ace251a2c4cb8
@@@ -39,6 -39,7 +39,7 @@@
  #define ARIZONA_PWM_DRIVE_3                      0x32
  #define ARIZONA_WAKE_CONTROL                     0x40
  #define ARIZONA_SEQUENCE_CONTROL                 0x41
+ #define ARIZONA_SPARE_TRIGGERS                   0x42
  #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1    0x61
  #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2    0x62
  #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3    0x63
  #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
  #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
  #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
  #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
  #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
  #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.
  #define ARIZONA_WSEQ_ENA_JD2_RISE_SHIFT               0  /* WSEQ_ENA_JD2_RISE */
  #define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH               1  /* WSEQ_ENA_JD2_RISE */
  
+ /*
+  * R66 (0x42) - Spare Triggers
+  */
+ #define ARIZONA_WS_TRG8                          0x0080  /* WS_TRG8 */
+ #define ARIZONA_WS_TRG8_MASK                     0x0080  /* WS_TRG8 */
+ #define ARIZONA_WS_TRG8_SHIFT                         7  /* WS_TRG8 */
+ #define ARIZONA_WS_TRG8_WIDTH                         1  /* WS_TRG8 */
+ #define ARIZONA_WS_TRG7                          0x0040  /* WS_TRG7 */
+ #define ARIZONA_WS_TRG7_MASK                     0x0040  /* WS_TRG7 */
+ #define ARIZONA_WS_TRG7_SHIFT                         6  /* WS_TRG7 */
+ #define ARIZONA_WS_TRG7_WIDTH                         1  /* WS_TRG7 */
+ #define ARIZONA_WS_TRG6                          0x0020  /* WS_TRG6 */
+ #define ARIZONA_WS_TRG6_MASK                     0x0020  /* WS_TRG6 */
+ #define ARIZONA_WS_TRG6_SHIFT                         5  /* WS_TRG6 */
+ #define ARIZONA_WS_TRG6_WIDTH                         1  /* WS_TRG6 */
+ #define ARIZONA_WS_TRG5                          0x0010  /* WS_TRG5 */
+ #define ARIZONA_WS_TRG5_MASK                     0x0010  /* WS_TRG5 */
+ #define ARIZONA_WS_TRG5_SHIFT                         4  /* WS_TRG5 */
+ #define ARIZONA_WS_TRG5_WIDTH                         1  /* WS_TRG5 */
+ #define ARIZONA_WS_TRG4                          0x0008  /* WS_TRG4 */
+ #define ARIZONA_WS_TRG4_MASK                     0x0008  /* WS_TRG4 */
+ #define ARIZONA_WS_TRG4_SHIFT                         3  /* WS_TRG4 */
+ #define ARIZONA_WS_TRG4_WIDTH                         1  /* WS_TRG4 */
+ #define ARIZONA_WS_TRG3                          0x0004  /* WS_TRG3 */
+ #define ARIZONA_WS_TRG3_MASK                     0x0004  /* WS_TRG3 */
+ #define ARIZONA_WS_TRG3_SHIFT                         2  /* WS_TRG3 */
+ #define ARIZONA_WS_TRG3_WIDTH                         1  /* WS_TRG3 */
+ #define ARIZONA_WS_TRG2                          0x0002  /* WS_TRG2 */
+ #define ARIZONA_WS_TRG2_MASK                     0x0002  /* WS_TRG2 */
+ #define ARIZONA_WS_TRG2_SHIFT                         1  /* WS_TRG2 */
+ #define ARIZONA_WS_TRG2_WIDTH                         1  /* WS_TRG2 */
+ #define ARIZONA_WS_TRG1                          0x0001  /* WS_TRG1 */
+ #define ARIZONA_WS_TRG1_MASK                     0x0001  /* WS_TRG1 */
+ #define ARIZONA_WS_TRG1_SHIFT                         0  /* WS_TRG1 */
+ #define ARIZONA_WS_TRG1_WIDTH                         1  /* WS_TRG1 */
  /*
   * R97 (0x61) - Sample Rate Sequence Select 1
   */
  #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 */
  #define ARIZONA_MICD_STS_SHIFT                        0  /* MICD_STS */
  #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
   */
  /*
   * 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 */
  /*
   * 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 */
  /*
   * 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 */
  #define ARIZONA_DRE1L_ENA_SHIFT                       0  /* DRE1L_ENA */
  #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
  #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
   */
  #define ARIZONA_AIF3_FRC_WR_SHIFT                     0  /* AIF3_FRC_WR */
  #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_GP_DBTIME_SHIFT                      12  /* GP_DBTIME - [15:12] */
  #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
   */
  /*
   * 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 */
diff --combined sound/soc/fsl/fsl_esai.c
index 45eee131c47d43cd51488615f88f9a599b94c9a9,8c2ddc1ea954c903873b02462a42012782336d62..837979ea5c922e58cfcf1044c9217cfdc2d01745
@@@ -517,7 -517,7 +517,7 @@@ static int fsl_esai_hw_params(struct sn
        u32 bclk, mask, val;
        int ret;
  
 -      /* Override slot_width if being specifially set */
 +      /* Override slot_width if being specifically set */
        if (esai_priv->slot_width)
                slot_width = esai_priv->slot_width;
  
@@@ -839,7 -839,7 +839,7 @@@ static int fsl_esai_probe(struct platfo
                return ret;
        }
  
-       ret = imx_pcm_dma_init(pdev);
+       ret = imx_pcm_dma_init(pdev, IMX_ESAI_DMABUF_SIZE);
        if (ret)
                dev_err(&pdev->dev, "failed to init imx pcm dma: %d\n", ret);