On Wed, Aug 13, 2014 at 11:47:20AM +0100, Nikesh Oswal wrote:
wm_hubs is a common driver code shared by WM8958, WM1811, WM8944 and WM8993 all these codecs have the DC Servo Values either in register 57h or 59h. Current code was reading register 58h for WM8958 and WM8994 revisions 2 and 3 but looking at the data sheet the DC Servo Values are stored in register 57h for these codecs. This patch fixes it by reading the correct register for DC Servo
Signed-off-by: Nikesh Oswal nikesh@opensource.wolfsonmicro.com
sound/soc/codecs/wm_hubs.c | 3 --- 1 file changed, 3 deletions(-)
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index 916817f..95c5d71 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c @@ -210,9 +210,6 @@ static int wm_hubs_read_dc_servo(struct snd_soc_codec *codec, case 2: dcs_reg = WM8994_DC_SERVO_4E; break;
- case 1:
dcs_reg = WM8994_DC_SERVO_READBACK;
default: dcs_reg = WM8993_DC_SERVO_3; break;break;
--
This doesn't look right, firstly if it is the same register for all versions then surely we should change the code that sets dcs_readback_mode rather than setting that to different values but treating them the same. Although obviously if nothing still uses this case we could remove it as well.
Also I think the situation is more complex for example on version 4.4 of the datasheet for wm8994 the WR_VAL fields appear to be in register 59h. Which is not consistent with this.
Thanks, Charles