From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754381AbcE3JJ1 (ORCPT ); Mon, 30 May 2016 05:09:27 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:34476 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752042AbcE3JJ0 (ORCPT ); Mon, 30 May 2016 05:09:26 -0400 Message-ID: <1464599360.12124.0.camel@ingics.com> Subject: [RFT][PATCH v2] regulator: max8973: Fix setting ramp delay From: Axel Lin To: Mark Brown Cc: Laxman Dewangan , Krzysztof Kozlowski , Mikko Perttunen , Liam Girdwood , linux-kernel@vger.kernel.org Date: Mon, 30 May 2016 17:09:20 +0800 Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.16.5-1ubuntu3.1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current code for .set_ramp_delay() rounds down the value written to register, while the implementation of .set_voltage_time_sel() works on original constraints (not rounded down). Fix the logic in .set_ramp_delay and also remove unused ret_val variable. Signed-off-by: Axel Lin --- v2: Update commit log base on Krzysztof's comment. drivers/regulator/max8973-regulator.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c index 08d2f13..3958f50 100644 --- a/drivers/regulator/max8973-regulator.c +++ b/drivers/regulator/max8973-regulator.c @@ -271,22 +271,18 @@ static int max8973_set_ramp_delay(struct regulator_dev *rdev, struct max8973_chip *max = rdev_get_drvdata(rdev); unsigned int control; int ret; - int ret_val; /* Set ramp delay */ - if (ramp_delay < 25000) { + if (ramp_delay <= 12000) control = MAX8973_RAMP_12mV_PER_US; - ret_val = 12000; - } else if (ramp_delay < 50000) { + else if (ramp_delay <= 25000) control = MAX8973_RAMP_25mV_PER_US; - ret_val = 25000; - } else if (ramp_delay < 200000) { + else if (ramp_delay <= 50000) control = MAX8973_RAMP_50mV_PER_US; - ret_val = 50000; - } else { + else if (ramp_delay <= 200000) control = MAX8973_RAMP_200mV_PER_US; - ret_val = 200000; - } + else + return -EINVAL; ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1, MAX8973_RAMP_MASK, control); -- 2.5.0