]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/blobdiff - drivers/mfd/wm5102-tables.c
Merge tag 'mfd-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
[android-sdk/kernel-video.git] / drivers / mfd / wm5102-tables.c
index 3141c4a173a7c8e9285931be1f330f420f0ce69e..088872ab63389e49d04dd3f38fb02664fdc929ba 100644 (file)
@@ -56,6 +56,18 @@ static const struct reg_default wm5102_reva_patch[] = {
        { 0x80, 0x0000 },
 };
 
+static const struct reg_default wm5102_revb_patch[] = {
+       { 0x80, 0x0003 },
+       { 0x081, 0xE022 },
+       { 0x410, 0x6080 },
+       { 0x418, 0x6080 },
+       { 0x420, 0x6080 },
+       { 0x428, 0xC000 },
+       { 0x441, 0x8014 },
+       { 0x458, 0x000b },
+       { 0x80, 0x0000 },
+};
+
 /* We use a function so we can use ARRAY_SIZE() */
 int wm5102_patch(struct arizona *arizona)
 {
@@ -65,7 +77,9 @@ int wm5102_patch(struct arizona *arizona)
                                             wm5102_reva_patch,
                                             ARRAY_SIZE(wm5102_reva_patch));
        default:
-               return 0;
+               return regmap_register_patch(arizona->regmap,
+                                            wm5102_revb_patch,
+                                            ARRAY_SIZE(wm5102_revb_patch));
        }
 }
 
@@ -291,6 +305,7 @@ static const struct reg_default wm5102_reg_default[] = {
        { 0x000001AA, 0x0004 },   /* R426   - FLL2 GPIO Clock */ 
        { 0x00000200, 0x0006 },   /* R512   - Mic Charge Pump 1 */ 
        { 0x00000210, 0x00D4 },   /* R528   - LDO1 Control 1 */ 
+       { 0x00000212, 0x0001 },   /* R530   - LDO1 Control 2 */
        { 0x00000213, 0x0344 },   /* R531   - LDO2 Control 1 */ 
        { 0x00000218, 0x01A6 },   /* R536   - Mic Bias Ctrl 1 */ 
        { 0x00000219, 0x01A6 },   /* R537   - Mic Bias Ctrl 2 */ 
@@ -1056,6 +1071,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
        case ARIZONA_FLL1_CONTROL_5:
        case ARIZONA_FLL1_CONTROL_6:
        case ARIZONA_FLL1_LOOP_FILTER_TEST_1:
+       case ARIZONA_FLL1_NCO_TEST_0:
        case ARIZONA_FLL1_SYNCHRONISER_1:
        case ARIZONA_FLL1_SYNCHRONISER_2:
        case ARIZONA_FLL1_SYNCHRONISER_3:
@@ -1071,6 +1087,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
        case ARIZONA_FLL2_CONTROL_5:
        case ARIZONA_FLL2_CONTROL_6:
        case ARIZONA_FLL2_LOOP_FILTER_TEST_1:
+       case ARIZONA_FLL2_NCO_TEST_0:
        case ARIZONA_FLL2_SYNCHRONISER_1:
        case ARIZONA_FLL2_SYNCHRONISER_2:
        case ARIZONA_FLL2_SYNCHRONISER_3:
@@ -1805,6 +1822,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
        case ARIZONA_DSP1_CLOCKING_1:
        case ARIZONA_DSP1_STATUS_1:
        case ARIZONA_DSP1_STATUS_2:
+       case ARIZONA_DSP1_STATUS_3:
                return true;
        default:
                return false;
@@ -1813,15 +1831,23 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
 
 static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
 {
+       if (reg > 0xffff)
+               return true;
+
        switch (reg) {
        case ARIZONA_SOFTWARE_RESET:
        case ARIZONA_DEVICE_REVISION:
        case ARIZONA_OUTPUT_STATUS_1:
+       case ARIZONA_RAW_OUTPUT_STATUS_1:
+       case ARIZONA_SLIMBUS_RX_PORT_STATUS:
+       case ARIZONA_SLIMBUS_TX_PORT_STATUS:
        case ARIZONA_SAMPLE_RATE_1_STATUS:
        case ARIZONA_SAMPLE_RATE_2_STATUS:
        case ARIZONA_SAMPLE_RATE_3_STATUS:
        case ARIZONA_HAPTICS_STATUS:
        case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
+       case ARIZONA_FLL1_NCO_TEST_0:
+       case ARIZONA_FLL2_NCO_TEST_0:
        case ARIZONA_FX_CTRL2:
        case ARIZONA_INTERRUPT_STATUS_1:
        case ARIZONA_INTERRUPT_STATUS_2:
@@ -1847,6 +1873,7 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
        case ARIZONA_AOD_IRQ_RAW_STATUS:
        case ARIZONA_DSP1_STATUS_1:
        case ARIZONA_DSP1_STATUS_2:
+       case ARIZONA_DSP1_STATUS_3:
        case ARIZONA_HEADPHONE_DETECT_2:
        case ARIZONA_MIC_DETECT_3:
                return true;
@@ -1855,12 +1882,14 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
        }
 }
 
+#define WM5102_MAX_REGISTER 0x1a8fff
+
 const struct regmap_config wm5102_spi_regmap = {
        .reg_bits = 32,
        .pad_bits = 16,
        .val_bits = 16,
 
-       .max_register = ARIZONA_DSP1_STATUS_2,
+       .max_register = WM5102_MAX_REGISTER,
        .readable_reg = wm5102_readable_register,
        .volatile_reg = wm5102_volatile_register,
 
@@ -1874,7 +1903,7 @@ const struct regmap_config wm5102_i2c_regmap = {
        .reg_bits = 32,
        .val_bits = 16,
 
-       .max_register = ARIZONA_DSP1_STATUS_2,
+       .max_register = WM5102_MAX_REGISTER,
        .readable_reg = wm5102_readable_register,
        .volatile_reg = wm5102_volatile_register,