]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/mfd/wm5110-tables.c
Merge tag 'sound-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[karo-tx-linux.git] / drivers / mfd / wm5110-tables.c
index 12cad94b40354d8d548ab8974156f8c5c625f4db..c4b9374efd76d6ba77f372980a9e2f4ee227abaf 100644 (file)
@@ -21,7 +21,7 @@
 #define WM5110_NUM_AOD_ISR 2
 #define WM5110_NUM_ISR 5
 
-static const struct reg_default wm5110_reva_patch[] = {
+static const struct reg_sequence wm5110_reva_patch[] = {
        { 0x80, 0x3 },
        { 0x44, 0x20 },
        { 0x45, 0x40 },
@@ -134,7 +134,7 @@ static const struct reg_default wm5110_reva_patch[] = {
        { 0x209, 0x002A },
 };
 
-static const struct reg_default wm5110_revb_patch[] = {
+static const struct reg_sequence wm5110_revb_patch[] = {
        { 0x80, 0x3 },
        { 0x36e, 0x0210 },
        { 0x370, 0x0210 },
@@ -224,7 +224,7 @@ static const struct reg_default wm5110_revb_patch[] = {
        { 0x80, 0x0 },
 };
 
-static const struct reg_default wm5110_revd_patch[] = {
+static const struct reg_sequence wm5110_revd_patch[] = {
        { 0x80, 0x3 },
        { 0x80, 0x3 },
        { 0x393, 0x27 },
@@ -249,6 +249,16 @@ static const struct reg_default wm5110_revd_patch[] = {
        { 0x80, 0x0 },
 };
 
+/* Add extra headphone write sequence locations */
+static const struct reg_default wm5110_reve_patch[] = {
+       { 0x80, 0x3 },
+       { 0x80, 0x3 },
+       { 0x4b, 0x138 },
+       { 0x4c, 0x13d },
+       { 0x80, 0x0 },
+       { 0x80, 0x0 },
+};
+
 /* We use a function so we can use ARRAY_SIZE() */
 int wm5110_patch(struct arizona *arizona)
 {
@@ -266,7 +276,9 @@ int wm5110_patch(struct arizona *arizona)
                                             wm5110_revd_patch,
                                             ARRAY_SIZE(wm5110_revd_patch));
        default:
-               return 0;
+               return regmap_register_patch(arizona->regmap,
+                                            wm5110_reve_patch,
+                                            ARRAY_SIZE(wm5110_reve_patch));
        }
 }
 EXPORT_SYMBOL_GPL(wm5110_patch);
@@ -676,6 +688,7 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x00000032, 0x0100 },    /* R50    - PWM Drive 3 */
        { 0x00000040, 0x0000 },    /* R64    - Wake control */
        { 0x00000041, 0x0000 },    /* R65    - Sequence control */
+       { 0x00000042, 0x0000 },    /* R66    - Spare Triggers */
        { 0x00000061, 0x01FF },    /* R97    - Sample Rate Sequence Select 1 */
        { 0x00000062, 0x01FF },    /* R98    - Sample Rate Sequence Select 2 */
        { 0x00000063, 0x01FF },    /* R99    - Sample Rate Sequence Select 3 */
@@ -754,11 +767,9 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x0000021A, 0x01A6 },    /* R538   - Mic Bias Ctrl 3 */
        { 0x00000293, 0x0000 },    /* R659   - Accessory Detect Mode 1 */
        { 0x0000029B, 0x0028 },    /* R667   - Headphone Detect 1 */
-       { 0x0000029C, 0x0000 },    /* R668   - Headphone Detect 2 */
        { 0x000002A2, 0x0000 },    /* R674   - Micd clamp control */
        { 0x000002A3, 0x1102 },    /* R675   - Mic Detect 1 */
        { 0x000002A4, 0x009F },    /* R676   - Mic Detect 2 */
-       { 0x000002A5, 0x0000 },    /* R677   - Mic Detect 3 */
        { 0x000002A6, 0x3737 },    /* R678   - Mic Detect Level 1 */
        { 0x000002A7, 0x372C },    /* R679   - Mic Detect Level 2 */
        { 0x000002A8, 0x1422 },    /* R680   - Mic Detect Level 3 */
@@ -848,8 +859,6 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x00000440, 0x8FFF },    /* R1088  - DRE Enable */
        { 0x00000450, 0x0000 },    /* R1104  - DAC AEC Control 1 */
        { 0x00000458, 0x0000 },    /* R1112  - Noise Gate Control */
-       { 0x00000480, 0x0040 },    /* R1152  - Class W ANC Threshold 1 */
-       { 0x00000481, 0x0040 },    /* R1153  - Class W ANC Threshold 2 */
        { 0x00000490, 0x0069 },    /* R1168  - PDM SPK1 CTRL 1 */
        { 0x00000491, 0x0000 },    /* R1169  - PDM SPK1 CTRL 2 */
        { 0x00000492, 0x0069 },    /* R1170  - PDM SPK2 CTRL 1 */
@@ -1508,7 +1517,6 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x00000D54, 0xFFFF },    /* R3412  - AOD IRQ Mask IRQ2 */
        { 0x00000D56, 0x0000 },    /* R3414  - Jack detect debounce */
        { 0x00000E00, 0x0000 },    /* R3584  - FX_Ctrl1 */
-       { 0x00000E01, 0x0000 },    /* R3585  - FX_Ctrl2 */
        { 0x00000E10, 0x6318 },    /* R3600  - EQ1_1 */
        { 0x00000E11, 0x6300 },    /* R3601  - EQ1_2 */
        { 0x00000E12, 0x0FC8 },    /* R3602  - EQ1_3 */
@@ -1625,14 +1633,9 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x00000F00, 0x0000 },    /* R3840  - Clock Control */
        { 0x00000F01, 0x0000 },    /* R3841  - ANC_SRC */
        { 0x00001100, 0x0010 },    /* R4352  - DSP1 Control 1 */
-       { 0x00001101, 0x0000 },    /* R4353  - DSP1 Clocking 1 */
        { 0x00001200, 0x0010 },    /* R4608  - DSP2 Control 1 */
-       { 0x00001201, 0x0000 },    /* R4609  - DSP2 Clocking 1 */
        { 0x00001300, 0x0010 },    /* R4864  - DSP3 Control 1 */
-       { 0x00001301, 0x0000 },    /* R4865  - DSP3 Clocking 1 */
        { 0x00001400, 0x0010 },    /* R5120  - DSP4 Control 1 */
-       { 0x00001401, 0x0000 },    /* R5121  - DSP4 Clocking 1 */
-       { 0x00001404, 0x0000 },    /* R5124  - DSP4 Status 1 */
 };
 
 static bool wm5110_is_rev_b_adsp_memory(unsigned int reg)
@@ -1716,6 +1719,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg)
        case ARIZONA_PWM_DRIVE_3:
        case ARIZONA_WAKE_CONTROL:
        case ARIZONA_SEQUENCE_CONTROL:
+       case ARIZONA_SPARE_TRIGGERS:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2:
        case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3:
@@ -3007,6 +3011,8 @@ const struct regmap_config wm5110_spi_regmap = {
        .reg_bits = 32,
        .pad_bits = 16,
        .val_bits = 16,
+       .reg_format_endian = REGMAP_ENDIAN_BIG,
+       .val_format_endian = REGMAP_ENDIAN_BIG,
 
        .max_register = WM5110_MAX_REGISTER,
        .readable_reg = wm5110_readable_register,
@@ -3021,6 +3027,8 @@ EXPORT_SYMBOL_GPL(wm5110_spi_regmap);
 const struct regmap_config wm5110_i2c_regmap = {
        .reg_bits = 32,
        .val_bits = 16,
+       .reg_format_endian = REGMAP_ENDIAN_BIG,
+       .val_format_endian = REGMAP_ENDIAN_BIG,
 
        .max_register = WM5110_MAX_REGISTER,
        .readable_reg = wm5110_readable_register,