]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/mfd/wm8994-regmap.c
mfd: Correct readability of WM8994 DC servo 4E register
[mv-sheeva.git] / drivers / mfd / wm8994-regmap.c
index d98a70e260761d3afc96381ec349735f031b5a44..bc0c5096539a5bdbd874ef99babdd60dbf17a0c0 100644 (file)
@@ -12,6 +12,7 @@
  *
  */
 
+#include <linux/mfd/wm8994/core.h>
 #include <linux/mfd/wm8994/registers.h>
 #include <linux/regmap.h>
 
@@ -210,7 +211,6 @@ static struct reg_default wm1811_defaults[] = {
        { 0x0702, 0xA101 },    /* R1794 - Pull Control (BCLK2) */
        { 0x0703, 0xA101 },    /* R1795 - Pull Control (DACLRCLK2) */
        { 0x0704, 0xA101 },    /* R1796 - Pull Control (DACDAT2) */
-       { 0x0705, 0xA101 },    /* R1797 - GPIO 6 */
        { 0x0707, 0xA101 },    /* R1799 - GPIO 8 */
        { 0x0708, 0xA101 },    /* R1800 - GPIO 9 */
        { 0x0709, 0xA101 },    /* R1801 - GPIO 10 */
@@ -806,6 +806,7 @@ static bool wm1811_readable_register(struct device *dev, unsigned int reg)
        case WM8994_DC_SERVO_2:
        case WM8994_DC_SERVO_READBACK:
        case WM8994_DC_SERVO_4:
+       case WM8994_DC_SERVO_4E:
        case WM8994_ANALOGUE_HP_1:
        case WM8958_MIC_DETECT_1:
        case WM8958_MIC_DETECT_2:
@@ -1145,6 +1146,21 @@ static bool wm8994_volatile_register(struct device *dev, unsigned int reg)
        }
 }
 
+static bool wm1811_volatile_register(struct device *dev, unsigned int reg)
+{
+       struct wm8994 *wm8994 = dev_get_drvdata(dev);
+
+       switch (reg) {
+       case WM8994_GPIO_6:
+               if (wm8994->revision > 1)
+                       return true;
+               else
+                       return false;
+       default:
+               return wm8994_volatile_register(dev, reg);
+       }
+}
+
 static bool wm8958_volatile_register(struct device *dev, unsigned int reg)
 {
        switch (reg) {
@@ -1185,7 +1201,7 @@ struct regmap_config wm1811_regmap_config = {
        .num_reg_defaults = ARRAY_SIZE(wm1811_defaults),
 
        .max_register = WM8994_MAX_REGISTER,
-       .volatile_reg = wm8994_volatile_register,
+       .volatile_reg = wm1811_volatile_register,
        .readable_reg = wm1811_readable_register,
 };
 
@@ -1216,3 +1232,8 @@ struct regmap_config wm8958_regmap_config = {
        .volatile_reg = wm8958_volatile_register,
        .readable_reg = wm8958_readable_register,
 };
+
+struct regmap_config wm8994_base_regmap_config = {
+       .reg_bits = 16,
+       .val_bits = 16,
+};