{ .name = "wm5102-codec" },
};
+static struct mfd_cell wm5110_devs[] = {
+ { .name = "arizona-extcon" },
+ { .name = "arizona-gpio" },
+ { .name = "arizona-micsupp" },
+ { .name = "arizona-pwm" },
+ { .name = "wm5110-codec" },
+};
+
int __devinit arizona_dev_init(struct arizona *arizona)
{
struct device *dev = arizona->dev;
switch (arizona->type) {
case WM5102:
+ case WM5110:
for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++)
arizona->core_supplies[i].supply
= wm5102_core_supplies[i];
}
ret = wm5102_patch(arizona);
break;
+#endif
+#ifdef CONFIG_MFD_WM5110
+ case 0x5110:
+ type_name = "WM5110";
+ if (arizona->type != WM5110) {
+ dev_err(arizona->dev, "WM5110 registered as %d\n",
+ arizona->type);
+ arizona->type = WM5110;
+ }
+ ret = wm5110_patch(arizona);
+ break;
#endif
default:
dev_err(arizona->dev, "Unknown device ID %x\n", reg);
ret = mfd_add_devices(arizona->dev, -1, wm5102_devs,
ARRAY_SIZE(wm5102_devs), NULL, 0);
break;
+ case WM5110:
+ ret = mfd_add_devices(arizona->dev, -1, wm5110_devs,
+ ARRAY_SIZE(wm5102_devs), NULL, 0);
+ break;
}
if (ret != 0) {
enum arizona_type {
WM5102 = 1,
+ WM5110 = 2,
};
#define ARIZONA_IRQ_GP1 0
#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_NUM_IRQ 41
+#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 50
struct arizona {
struct regmap *regmap;
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