mfd: Add support for multiple arizona PDM speaker outputs
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 9 Jul 2012 18:33:14 +0000 (19:33 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 10 Jul 2012 09:03:02 +0000 (11:03 +0200)
The registers have stride 2 so we can write the loop properly now.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/arizona-core.c
include/linux/mfd/arizona/pdata.h

index ffa011f4677e12bf6ce6c17a4705b0090c6f98d2..b35680dcd8c16dd61a73221071639bfaa4086a8d 100644 (file)
@@ -462,18 +462,17 @@ int __devinit arizona_dev_init(struct arizona *arizona)
                                   ARIZONA_OUT1_MONO, val);
        }
 
-       BUILD_BUG_ON(ARIZONA_MAX_PDM_SPK > 1);
        for (i = 0; i < ARIZONA_MAX_PDM_SPK; i++) {
                if (arizona->pdata.spk_mute[i])
                        regmap_update_bits(arizona->regmap,
-                                          ARIZONA_PDM_SPK1_CTRL_1,
+                                          ARIZONA_PDM_SPK1_CTRL_1 + (i * 2),
                                           ARIZONA_SPK1_MUTE_ENDIAN_MASK |
                                           ARIZONA_SPK1_MUTE_SEQ1_MASK,
                                           arizona->pdata.spk_mute[i]);
 
                if (arizona->pdata.spk_fmt[i])
                        regmap_update_bits(arizona->regmap,
-                                          ARIZONA_PDM_SPK1_CTRL_2,
+                                          ARIZONA_PDM_SPK1_CTRL_2 + (i * 2),
                                           ARIZONA_SPK1_FMT_MASK,
                                           arizona->pdata.spk_fmt[i]);
        }
index fa2cb9885d62a17f839764e1d1c8e634ff5bea80..68ff91aa3888c2741cc33d66ab604b8a4d6c6a46 100644 (file)
@@ -62,7 +62,7 @@
 
 #define ARIZONA_MAX_OUTPUT 5
 
-#define ARIZONA_MAX_PDM_SPK 1
+#define ARIZONA_MAX_PDM_SPK 2
 
 struct regulator_init_data;