mfd: Initial support for the WM5110

The WM5110 is a highly-integrated low-power audio system for smartphones,
tablets and other portable audio devices. It combines an advanced DSP
feature set with a flexible, high-performance audio hub CODEC.

The support is based on the Arizona core driver.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
index 3ef32b4..dd231ac 100644
--- a/include/linux/mfd/arizona/core.h
+++ b/include/linux/mfd/arizona/core.h
@@ -22,6 +22,7 @@
 
 enum arizona_type {
 	WM5102 = 1,
+	WM5110 = 2,
 };
 
 #define ARIZONA_IRQ_GP1                    0
@@ -33,40 +34,49 @@
 #define ARIZONA_IRQ_JD_FALL                6
 #define ARIZONA_IRQ_JD_RISE                7
 #define ARIZONA_IRQ_DSP1_RAM_RDY           8
-#define ARIZONA_IRQ_DSP_IRQ1               9
-#define ARIZONA_IRQ_DSP_IRQ2              10
-#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN     11
-#define ARIZONA_IRQ_SPK_SHUTDOWN          12
-#define ARIZONA_IRQ_MICDET                13
-#define ARIZONA_IRQ_HPDET                 14
-#define ARIZONA_IRQ_WSEQ_DONE             15
-#define ARIZONA_IRQ_DRC2_SIG_DET          16
-#define ARIZONA_IRQ_DRC1_SIG_DET          17
-#define ARIZONA_IRQ_ASRC2_LOCK            18
-#define ARIZONA_IRQ_ASRC1_LOCK            19
-#define ARIZONA_IRQ_UNDERCLOCKED          20
-#define ARIZONA_IRQ_OVERCLOCKED           21
-#define ARIZONA_IRQ_FLL2_LOCK             22
-#define ARIZONA_IRQ_FLL1_LOCK             23
-#define ARIZONA_IRQ_CLKGEN_ERR            24
-#define ARIZONA_IRQ_CLKGEN_ERR_ASYNC      25
-#define ARIZONA_IRQ_ASRC_CFG_ERR          26
-#define ARIZONA_IRQ_AIF3_ERR              27
-#define ARIZONA_IRQ_AIF2_ERR              28
-#define ARIZONA_IRQ_AIF1_ERR              29
-#define ARIZONA_IRQ_CTRLIF_ERR            30
-#define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 31
-#define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW     32
-#define ARIZONA_IRQ_SYSCLK_ENA_LOW        33
-#define ARIZONA_IRQ_ISRC1_CFG_ERR         34
-#define ARIZONA_IRQ_ISRC2_CFG_ERR         35
-#define ARIZONA_IRQ_BOOT_DONE             36
-#define ARIZONA_IRQ_DCS_DAC_DONE          37
-#define ARIZONA_IRQ_DCS_HP_DONE           38
-#define ARIZONA_IRQ_FLL2_CLOCK_OK         39
-#define ARIZONA_IRQ_FLL1_CLOCK_OK         40
+#define ARIZONA_IRQ_DSP2_RAM_RDY           9
+#define ARIZONA_IRQ_DSP3_RAM_RDY          10
+#define ARIZONA_IRQ_DSP4_RAM_RDY          11
+#define ARIZONA_IRQ_DSP_IRQ1              12
+#define ARIZONA_IRQ_DSP_IRQ2              13
+#define ARIZONA_IRQ_DSP_IRQ3              14
+#define ARIZONA_IRQ_DSP_IRQ4              15
+#define ARIZONA_IRQ_DSP_IRQ5              16
+#define ARIZONA_IRQ_DSP_IRQ6              17
+#define ARIZONA_IRQ_DSP_IRQ7              18
+#define ARIZONA_IRQ_DSP_IRQ8              19
+#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN     20
+#define ARIZONA_IRQ_SPK_SHUTDOWN          21
+#define ARIZONA_IRQ_MICDET                22
+#define ARIZONA_IRQ_HPDET                 23
+#define ARIZONA_IRQ_WSEQ_DONE             24
+#define ARIZONA_IRQ_DRC2_SIG_DET          25
+#define ARIZONA_IRQ_DRC1_SIG_DET          26
+#define ARIZONA_IRQ_ASRC2_LOCK            27
+#define ARIZONA_IRQ_ASRC1_LOCK            28
+#define ARIZONA_IRQ_UNDERCLOCKED          29
+#define ARIZONA_IRQ_OVERCLOCKED           30
+#define ARIZONA_IRQ_FLL2_LOCK             31
+#define ARIZONA_IRQ_FLL1_LOCK             32
+#define ARIZONA_IRQ_CLKGEN_ERR            33
+#define ARIZONA_IRQ_CLKGEN_ERR_ASYNC      34
+#define ARIZONA_IRQ_ASRC_CFG_ERR          35
+#define ARIZONA_IRQ_AIF3_ERR              36
+#define ARIZONA_IRQ_AIF2_ERR              37
+#define ARIZONA_IRQ_AIF1_ERR              38
+#define ARIZONA_IRQ_CTRLIF_ERR            39
+#define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 40
+#define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW     41
+#define ARIZONA_IRQ_SYSCLK_ENA_LOW        42
+#define ARIZONA_IRQ_ISRC1_CFG_ERR         43
+#define ARIZONA_IRQ_ISRC2_CFG_ERR         44
+#define ARIZONA_IRQ_BOOT_DONE             45
+#define ARIZONA_IRQ_DCS_DAC_DONE          46
+#define ARIZONA_IRQ_DCS_HP_DONE           47
+#define ARIZONA_IRQ_FLL2_CLOCK_OK         48
+#define ARIZONA_IRQ_FLL1_CLOCK_OK         49
 
-#define ARIZONA_NUM_IRQ                   41
+#define ARIZONA_NUM_IRQ                   50
 
 struct arizona {
 	struct regmap *regmap;
@@ -99,5 +109,6 @@
 int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
 
 int wm5102_patch(struct arizona *arizona);
+int wm5110_patch(struct arizona *arizona);
 
 #endif
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
index 68ff91a..7ab4429 100644
--- a/include/linux/mfd/arizona/pdata.h
+++ b/include/linux/mfd/arizona/pdata.h
@@ -49,7 +49,7 @@
 #define ARIZONA_32KZ_MCLK2 2
 #define ARIZONA_32KZ_NONE  3
 
-#define ARIZONA_MAX_INPUT 3
+#define ARIZONA_MAX_INPUT 4
 
 #define ARIZONA_DMIC_MICVDD   0
 #define ARIZONA_DMIC_MICBIAS1 1
@@ -60,7 +60,7 @@
 #define ARIZONA_INMODE_SE   1
 #define ARIZONA_INMODE_DMIC 2
 
-#define ARIZONA_MAX_OUTPUT 5
+#define ARIZONA_MAX_OUTPUT 6
 
 #define ARIZONA_MAX_PDM_SPK 2