regulator: ad5398: Fix return value of ad5398_write_reg
Subsystems (2)
PATCH 1/1 regulator: ad5398: Fix return value of ad5398_write_reg
i2c_master_send() returns the number of bytes written on success. So current code returns 2 if ad5398_write_reg() success.
This return value is propagated to .set_current_limit, .enable and .disable callbacks of regulator_ops. This can be a problem, for example, if the users test if the return value of regulator_set_current_limit() is 0. Fix it by making ad5398_write_reg() return 0 on success.
--- drivers/regulator/ad5398.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/regulator/ad5398.c +4 -2
@@ -58,10 +58,12 @@ static int ad5398_write_reg(struct i2c_client *client, const unsigned short data val =cpu_to_be16 (data); ret =i2c_master_send (client, (char *)&val,2 ); -if (ret <0 ) +if (ret !=2 ) {dev_err (&client->dev,"I2C write error\n" ); +return ret <0 ? ret : -EIO ; + } -return ret; +return 0 ; }static int ad5398_get_current_limit (struct regulator_dev *rdev)
Signature · 1 line
2.1.4
Quoted 8 lines · Axel Lin
i2c_master_send()returns the number of bytes written on success. So current code returns 2 ifad5398_write_reg()success.
This return value is propagated to .set_current_limit, .enable and .disable callbacks ofregulator_ops. This can be a problem, for example, if the users test if the return value ofregulator_set_current_limit()is 0. Fix it by makingad5398_write_reg()return 0 on success.Signed-off-by Axel Lin <[email protected]>
Quoted 24 lines
--- drivers/regulator/ad5398.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)drivers/regulator/ad5398.c +4
-2@@ -58,10 +58,12 @@ static int ad5398_write_reg(struct i2c_client *client, const unsigned short data val =cpu_to_be16 (data); ret =i2c_master_send (client, (char *)&val,2 ); -if (ret <0 ) +if (ret !=2 ) {dev_err (&client->dev,"I2C write error\n" ); +return ret <0 ? ret : -EIO ; + } -return ret; +return 0 ; }static int ad5398_get_current_limit (struct regulator_dev *rdev)
Signature · 8 lines
Greetings, Michael -- Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368; Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif