* [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable @ 2014-08-13 9:23 Charles Keepax 2014-08-13 9:23 ` [PATCH 2/2] mfd: arizona: Mark additional registers as volatile Charles Keepax 2014-08-13 10:38 ` [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Mark Brown 0 siblings, 2 replies; 3+ messages in thread From: Charles Keepax @ 2014-08-13 9:23 UTC (permalink / raw) To: lee.jones; +Cc: sameo, broonie, patches, linux-kernel From: Mark Brown <broonie@linaro.org> During init the core checks if the wm5102 has finished starting by reading register 0x19 and looking at the value. This read always fails since this is not a readable register, mark it as being one. While we're at it provide a constant for the register name (as supplied by Charles Keepax). Signed-off-by: Mark Brown <broonie@linaro.org> --- drivers/mfd/arizona-core.c | 3 ++- drivers/mfd/wm5102-tables.c | 1 + include/linux/mfd/arizona/registers.h | 1 + 3 files changed, 4 insertions(+), 1 deletions(-) diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 10a0cb9..7eabc36 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -784,7 +784,8 @@ int arizona_dev_init(struct arizona *arizona) /* Ensure device startup is complete */ switch (arizona->type) { case WM5102: - ret = regmap_read(arizona->regmap, 0x19, &val); + ret = regmap_read(arizona->regmap, + ARIZONA_WRITE_SEQUENCER_CTRL_3, &val); if (ret != 0) dev_err(dev, "Failed to check write sequencer state: %d\n", diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c index fb4d4bb..c18d527 100644 --- a/drivers/mfd/wm5102-tables.c +++ b/drivers/mfd/wm5102-tables.c @@ -1016,6 +1016,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) 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_WRITE_SEQUENCER_PROM: case ARIZONA_TONE_GENERATOR_1: case ARIZONA_TONE_GENERATOR_2: diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h index dbd23c3..68913ec 100644 --- a/include/linux/mfd/arizona/registers.h +++ b/include/linux/mfd/arizona/registers.h @@ -27,6 +27,7 @@ #define ARIZONA_WRITE_SEQUENCER_CTRL_0 0x16 #define ARIZONA_WRITE_SEQUENCER_CTRL_1 0x17 #define ARIZONA_WRITE_SEQUENCER_CTRL_2 0x18 +#define ARIZONA_WRITE_SEQUENCER_CTRL_3 0x19 #define ARIZONA_WRITE_SEQUENCER_PROM 0x1A #define ARIZONA_TONE_GENERATOR_1 0x20 #define ARIZONA_TONE_GENERATOR_2 0x21 -- 1.7.2.5 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] mfd: arizona: Mark additional registers as volatile 2014-08-13 9:23 [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Charles Keepax @ 2014-08-13 9:23 ` Charles Keepax 2014-08-13 10:38 ` [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Mark Brown 1 sibling, 0 replies; 3+ messages in thread From: Charles Keepax @ 2014-08-13 9:23 UTC (permalink / raw) To: lee.jones; +Cc: sameo, broonie, patches, linux-kernel 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> --- drivers/mfd/wm5102-tables.c | 11 ++++++++--- drivers/mfd/wm5110-tables.c | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c index c18d527..191f224 100644 --- a/drivers/mfd/wm5102-tables.c +++ b/drivers/mfd/wm5102-tables.c @@ -245,9 +245,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 */ @@ -1881,6 +1878,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: @@ -1892,6 +1893,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: diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c index 9b98ee5..beae0a3 100644 --- a/drivers/mfd/wm5110-tables.c +++ b/drivers/mfd/wm5110-tables.c @@ -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: -- 1.7.2.5 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable 2014-08-13 9:23 [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Charles Keepax 2014-08-13 9:23 ` [PATCH 2/2] mfd: arizona: Mark additional registers as volatile Charles Keepax @ 2014-08-13 10:38 ` Mark Brown 1 sibling, 0 replies; 3+ messages in thread From: Mark Brown @ 2014-08-13 10:38 UTC (permalink / raw) To: Charles Keepax; +Cc: lee.jones, sameo, patches, linux-kernel [-- Attachment #1: Type: text/plain, Size: 540 bytes --] On Wed, Aug 13, 2014 at 10:23:52AM +0100, Charles Keepax wrote: > From: Mark Brown <broonie@linaro.org> > > During init the core checks if the wm5102 has finished starting by reading > register 0x19 and looking at the value. This read always fails since this > is not a readable register, mark it as being one. While we're at it provide > a constant for the register name (as supplied by Charles Keepax). > > Signed-off-by: Mark Brown <broonie@linaro.org> > --- If you're resending my patch you need to add your own signoff. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-08-13 10:38 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-08-13 9:23 [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Charles Keepax 2014-08-13 9:23 ` [PATCH 2/2] mfd: arizona: Mark additional registers as volatile Charles Keepax 2014-08-13 10:38 ` [PATCH 1/2 RESEND] mfd: wm5102: Mark register write sequencer control 3 readable Mark Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox