mfd: arizona: Mark additional registers as volatile
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Wed, 13 Aug 2014 10:42:47 +0000 (11:42 +0100)
committerLee Jones <lee.jones@linaro.org>
Fri, 26 Sep 2014 07:15:39 +0000 (08:15 +0100)
Mark some additional registers as volatile. The write sequencer control
registers should not be cached, as we don't ever want their value
synchronised as this might cause a write sequence to be accidentally
initiated.

Additionally, the DAC_COMP registers require special preconditions to
write so there values wouldn't be updated accurately during a register
sync.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/wm5102-tables.c
drivers/mfd/wm5110-tables.c

index 77e16e59a45dd6081ced59f533ff82b353d396b2..6d9b7f832bf5dcbe42c88a5eda940ed7f26c54fe 100644 (file)
@@ -246,9 +246,6 @@ const struct regmap_irq_chip wm5102_irq = {
 static const struct reg_default wm5102_reg_default[] = {
        { 0x00000008, 0x0019 },   /* R8     - Ctrl IF SPI CFG 1 */ 
        { 0x00000009, 0x0001 },   /* R9     - Ctrl IF I2C1 CFG 1 */ 
-       { 0x00000016, 0x0000 },   /* R22    - Write Sequencer Ctrl 0 */ 
-       { 0x00000017, 0x0000 },   /* R23    - Write Sequencer Ctrl 1 */ 
-       { 0x00000018, 0x0000 },   /* R24    - Write Sequencer Ctrl 2 */ 
        { 0x00000020, 0x0000 },   /* R32    - Tone Generator 1 */ 
        { 0x00000021, 0x1000 },   /* R33    - Tone Generator 2 */ 
        { 0x00000022, 0x0000 },   /* R34    - Tone Generator 3 */ 
@@ -1882,6 +1879,10 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
        switch (reg) {
        case ARIZONA_SOFTWARE_RESET:
        case ARIZONA_DEVICE_REVISION:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_0:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_1:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_2:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_3:
        case ARIZONA_OUTPUT_STATUS_1:
        case ARIZONA_RAW_OUTPUT_STATUS_1:
        case ARIZONA_SLIMBUS_RX_PORT_STATUS:
@@ -1893,6 +1894,10 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
        case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS:
        case ARIZONA_FLL1_NCO_TEST_0:
        case ARIZONA_FLL2_NCO_TEST_0:
+       case ARIZONA_DAC_COMP_1:
+       case ARIZONA_DAC_COMP_2:
+       case ARIZONA_DAC_COMP_3:
+       case ARIZONA_DAC_COMP_4:
        case ARIZONA_FX_CTRL2:
        case ARIZONA_INTERRUPT_STATUS_1:
        case ARIZONA_INTERRUPT_STATUS_2:
index 9b98ee559188780057896a59078c4c98cb798b63..beae0a397ee13d51ac0bf05439f8c5c43a02d8d7 100644 (file)
@@ -666,9 +666,6 @@ static const struct reg_default wm5110_reg_default[] = {
        { 0x0000000A, 0x0001 },    /* R10    - Ctrl IF I2C2 CFG 1 */
        { 0x0000000B, 0x0036 },    /* R11    - Ctrl IF I2C1 CFG 2 */
        { 0x0000000C, 0x0036 },    /* R12    - Ctrl IF I2C2 CFG 2 */
-       { 0x00000016, 0x0000 },    /* R22    - Write Sequencer Ctrl 0 */
-       { 0x00000017, 0x0000 },    /* R23    - Write Sequencer Ctrl 1 */
-       { 0x00000018, 0x0000 },    /* R24    - Write Sequencer Ctrl 2 */
        { 0x00000020, 0x0000 },    /* R32    - Tone Generator 1 */
        { 0x00000021, 0x1000 },    /* R33    - Tone Generator 2 */
        { 0x00000022, 0x0000 },    /* R34    - Tone Generator 3 */
@@ -2815,6 +2812,9 @@ static bool wm5110_volatile_register(struct device *dev, unsigned int reg)
        switch (reg) {
        case ARIZONA_SOFTWARE_RESET:
        case ARIZONA_DEVICE_REVISION:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_0:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_1:
+       case ARIZONA_WRITE_SEQUENCER_CTRL_2:
        case ARIZONA_HAPTICS_STATUS:
        case ARIZONA_SAMPLE_RATE_1_STATUS:
        case ARIZONA_SAMPLE_RATE_2_STATUS: