From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Date: Wed, 1 Nov 2017 10:56:29 +0100 * Add jump targets so that two error messages are stored only once at the end of these function implementations. * Replace ten calls of the function "dev_err" by goto statements. * Adjust 12 condition checks. * Replace string literals by references to two global constant variables in five functions. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> --- drivers/power/supply/pm2301_charger.c | 94 ++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/drivers/power/supply/pm2301_charger.c b/drivers/power/supply/pm2301_charger.c index 78561b6884fc..3c9c0fe87246 100644 --- a/drivers/power/supply/pm2301_charger.c +++ b/drivers/power/supply/pm2301_charger.c @@ -112,6 +112,9 @@ static const struct i2c_device_id pm2xxx_ident[] = { { } }; +static char const read_failure[] = "%s pm2xxx read failed\n"; +static char const write_failure[] = "%s pm2xxx write failed\n"; + static void set_lpn_pin(struct pm2xxx_charger *pm2) { if (!pm2->ac.charger_connected && gpio_is_valid(pm2->lpn_pin)) { @@ -181,20 +184,20 @@ static int pm2xxx_charging_disable_mngt(struct pm2xxx_charger *pm2) /* Disable SW EOC ctrl */ ret = pm2xxx_reg_write(pm2, PM2XXX_SW_CTRL_REG, PM2XXX_SWCTRL_HW); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - return ret; - } + if (ret) + goto report_write_failure; /* Disable charging */ ret = pm2xxx_reg_write(pm2, PM2XXX_BATT_CTRL_REG2, (PM2XXX_CH_AUTO_RESUME_DIS | PM2XXX_CHARGER_DIS)); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - return ret; - } + if (ret) + goto report_write_failure; return 0; + +report_write_failure: + dev_err(pm2->dev, write_failure, __func__); + return ret; } static int pm2xxx_charger_batt_therm_mngt(struct pm2xxx_charger *pm2, int val) @@ -244,10 +247,9 @@ static int pm2xxx_charger_vbat_lsig_mngt(struct pm2xxx_charger *pm2, int val) /* Enable SW EOC ctrl */ ret = pm2xxx_reg_write(pm2, PM2XXX_SW_CTRL_REG, PM2XXX_SWCTRL_SW); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - return ret; - } + if (ret) + goto report_write_failure; + break; case PM2XXX_INT1_ITVBATLOWF: @@ -255,10 +257,9 @@ static int pm2xxx_charger_vbat_lsig_mngt(struct pm2xxx_charger *pm2, int val) /* Disable SW EOC ctrl */ ret = pm2xxx_reg_write(pm2, PM2XXX_SW_CTRL_REG, PM2XXX_SWCTRL_HW); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - return ret; - } + if (ret) + goto report_write_failure; + break; default: @@ -266,6 +267,10 @@ static int pm2xxx_charger_vbat_lsig_mngt(struct pm2xxx_charger *pm2, int val) } return 0; + +report_write_failure: + dev_err(pm2->dev, write_failure, __func__); + return ret; } static int pm2xxx_charger_bat_disc_mngt(struct pm2xxx_charger *pm2, int val) @@ -513,8 +518,8 @@ static int pm2xxx_charger_get_ac_cv(struct pm2xxx_charger *pm2) if (pm2->ac.charger_connected && pm2->ac.charger_online) { ret = pm2xxx_reg_read(pm2, PM2XXX_SRCE_REG_INT4, &val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx read failed\n", __func__); + if (ret) { + dev_err(pm2->dev, read_failure, __func__); goto out; } @@ -748,45 +753,34 @@ static int pm2xxx_charger_ac_en(struct ux500_charger *charger, } ret = pm2xxx_reg_read(pm2, PM2XXX_BATT_CTRL_REG8, &val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx read failed\n", __func__); - goto error_occured; - } + if (ret) + goto report_read_failure; + val &= ~PM2XXX_CH_VOLT_MASK; val |= volt_index; ret = pm2xxx_reg_write(pm2, PM2XXX_BATT_CTRL_REG8, val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - goto error_occured; - } + if (ret) + goto report_write_failure; ret = pm2xxx_reg_read(pm2, PM2XXX_BATT_CTRL_REG6, &val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx read failed\n", __func__); - goto error_occured; - } + if (ret) + goto report_read_failure; + val &= ~PM2XXX_DIR_CH_CC_CURRENT_MASK; val |= curr_index; ret = pm2xxx_reg_write(pm2, PM2XXX_BATT_CTRL_REG6, val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", __func__); - goto error_occured; - } + if (ret) + goto report_write_failure; if (!pm2->bat->enable_overshoot) { ret = pm2xxx_reg_read(pm2, PM2XXX_LED_CTRL_REG, &val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx read failed\n", - __func__); - goto error_occured; - } + if (ret) + goto report_read_failure; + val |= PM2XXX_ANTI_OVERSHOOT_EN; ret = pm2xxx_reg_write(pm2, PM2XXX_LED_CTRL_REG, val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx write failed\n", - __func__); - goto error_occured; - } + if (ret) + goto report_write_failure; } ret = pm2xxx_charging_enable_mngt(pm2); @@ -820,6 +814,14 @@ static int pm2xxx_charger_ac_en(struct ux500_charger *charger, error_occured: return ret; + +report_read_failure: + dev_err(pm2->dev, read_failure, __func__); + return ret; + +report_write_failure: + dev_err(pm2->dev, write_failure, __func__); + return ret; } static int pm2xxx_charger_watchdog_kick(struct ux500_charger *charger) @@ -884,8 +886,8 @@ static void pm2xxx_charger_check_main_thermal_prot_work( /* Check if die temp warning is still active */ ret = pm2xxx_reg_read(pm2, PM2XXX_SRCE_REG_INT5, &val); - if (ret < 0) { - dev_err(pm2->dev, "%s pm2xxx read failed\n", __func__); + if (ret) { + dev_err(pm2->dev, read_failure, __func__); return; } if (val & (PM2XXX_INT5_S_ITTHERMALWARNINGRISE -- 2.14.3 -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html