From: Axel Lin Date: Fri, 22 Oct 2010 08:38:22 +0000 (+0800) Subject: regulator: twl-regulator - fix twlreg_set_mode X-Git-Tag: MMI-PSA29.97-13-9~21638^2~2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b9e26bc804e611d879353cd953cb17db1c52d307;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git regulator: twl-regulator - fix twlreg_set_mode The Singular Message is 16 bits: DEV_GRP[15:13] MT[12] RES_ID[11:4] RES_STATE[3:0] Current implementation return immedially after sucessfuly write MSB part. To properly set mode, we need to write the complete message ( MSB and LSB ). In twl.h, now we have defines for PM Master module register offsets, use it instead of hard coded 0x15/0x16. Use "message & 0xff" to ensure we send correct value for LSB. Signed-off-by: Axel Lin Acked-by: Mark Brown Tested-by: Lesly Arackal Manuel Signed-off-by: Liam Girdwood --- diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c index 7e5892efc437..a57262a4fa6c 100644 --- a/drivers/regulator/twl-regulator.c +++ b/drivers/regulator/twl-regulator.c @@ -219,12 +219,12 @@ static int twlreg_set_mode(struct regulator_dev *rdev, unsigned mode) return -EACCES; status = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, - message >> 8, 0x15 /* PB_WORD_MSB */ ); - if (status >= 0) + message >> 8, TWL4030_PM_MASTER_PB_WORD_MSB); + if (status < 0) return status; return twl_i2c_write_u8(TWL_MODULE_PM_MASTER, - message, 0x16 /* PB_WORD_LSB */ ); + message & 0xff, TWL4030_PM_MASTER_PB_WORD_LSB); } /*----------------------------------------------------------------------*/