Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[firefly-linux-kernel-4.4.55.git] / drivers / mfd / arizona-core.c
index cb8a1b2f07f177e1f8d75b4f156fbd2cd2b45afd..bebf58a06a6b2932d57798c0b5b81a31a12e9b7a 100644 (file)
@@ -1206,12 +1206,16 @@ int arizona_dev_init(struct arizona *arizona)
                /* Default for both is 0 so noop with defaults */
                val = arizona->pdata.dmic_ref[i]
                        << ARIZONA_IN1_DMIC_SUP_SHIFT;
-               val |= arizona->pdata.inmode[i] << ARIZONA_IN1_MODE_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;
 
                regmap_update_bits(arizona->regmap,
                                   ARIZONA_IN1L_CONTROL + (i * 8),
                                   ARIZONA_IN1_DMIC_SUP_MASK |
-                                  ARIZONA_IN1_MODE_MASK, val);
+                                  ARIZONA_IN1_MODE_MASK |
+                                  ARIZONA_IN1_SINGLE_ENDED_MASK, val);
        }
 
        for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) {