Re: [PATCH v2] iio: pac1921: remove unnecessary explicit casts

From: Jonathan Cameron
Date: Tue Oct 01 2024 - 15:28:16 EST


On Mon, 30 Sep 2024 11:49:01 +0200
Matteo Martelli <matteomartelli3@xxxxxxxxx> wrote:

> Many explicit casts were introduced to address Wconversion and
> Wsign-compare warnings. Remove them to improve readability.
>
> Signed-off-by: Matteo Martelli <matteomartelli3@xxxxxxxxx>
> ---
> Link: https://lore.kernel.org/linux-iio/1fa4ab12-0939-477d-bc92-306fd32e4fd9@stanley.mountain/
Looks good to me.
I kept this link in the tags block as it's useful background on why
this patch exists

Applied to the togreg branch of iio.git and pushed out as testing
for now.

Thanks,

Jonathan

> ---
> Changes in v2:
> - Reintroduce two necessary explicit casts that avoid 32-bit int overflow.
> - Link to v1: https://lore.kernel.org/r/20240916-iio-pac1921-nocast-v1-1-a0f96d321eee@xxxxxxxxx
> ---
> drivers/iio/adc/pac1921.c | 39 +++++++++++++++++++--------------------
> 1 file changed, 19 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/iio/adc/pac1921.c b/drivers/iio/adc/pac1921.c
> index 4c2a1c07bc399028f0334885fc9cd4552d5892b1..a10b87b409c0149c88d7a5ad6e98e7b273c59a1f 100644
> --- a/drivers/iio/adc/pac1921.c
> +++ b/drivers/iio/adc/pac1921.c
> @@ -241,7 +241,7 @@ static inline void pac1921_calc_scale(int dividend, int divisor, int *val,
> s64 tmp;
>
> tmp = div_s64(dividend * (s64)NANO, divisor);
> - *val = (int)div_s64_rem(tmp, NANO, val2);
> + *val = div_s64_rem(tmp, NANO, val2);
> }
>
> /*
> @@ -260,7 +260,7 @@ static void pac1921_calc_current_scales(struct pac1921_priv *priv)
> int max = (PAC1921_MAX_VSENSE_MV * MICRO) >> i;
> int vsense_lsb = DIV_ROUND_CLOSEST(max, PAC1921_RES_RESOLUTION);
>
> - pac1921_calc_scale(vsense_lsb, (int)priv->rshunt_uohm,
> + pac1921_calc_scale(vsense_lsb, priv->rshunt_uohm,
> &priv->current_scales[i][0],
> &priv->current_scales[i][1]);
> }
> @@ -314,7 +314,7 @@ static int pac1921_check_push_overflow(struct iio_dev *indio_dev, s64 timestamp)
> timestamp);
> }
>
> - priv->prev_ovf_flags = (u8)flags;
> + priv->prev_ovf_flags = flags;
>
> return 0;
> }
> @@ -329,8 +329,7 @@ static int pac1921_check_push_overflow(struct iio_dev *indio_dev, s64 timestamp)
> static int pac1921_read_res(struct pac1921_priv *priv, unsigned long reg,
> u16 *val)
> {
> - int ret = regmap_bulk_read(priv->regmap, (unsigned int)reg, val,
> - sizeof(*val));
> + int ret = regmap_bulk_read(priv->regmap, reg, val, sizeof(*val));
> if (ret)
> return ret;
>
> @@ -366,7 +365,7 @@ static int pac1921_read_raw(struct iio_dev *indio_dev,
> if (ret)
> return ret;
>
> - *val = (int)res_val;
> + *val = res_val;
>
> return IIO_VAL_INT;
> }
> @@ -400,10 +399,10 @@ static int pac1921_read_raw(struct iio_dev *indio_dev,
> s64 tmp = curr_scale[0] * (s64)NANO + curr_scale[1];
>
> /* Multiply by max_vbus (V) / dv_gain */
> - tmp *= PAC1921_MAX_VBUS_V >> (int)priv->dv_gain;
> + tmp *= PAC1921_MAX_VBUS_V >> priv->dv_gain;
>
> /* Convert back to INT_PLUS_NANO */
> - *val = (int)div_s64_rem(tmp, NANO, val2);
> + *val = div_s64_rem(tmp, NANO, val2);
>
> return IIO_VAL_INT_PLUS_NANO;
> }
> @@ -426,7 +425,7 @@ static int pac1921_read_raw(struct iio_dev *indio_dev,
> * 1/(integr_period_usecs/MICRO) = MICRO/integr_period_usecs
> */
> *val = MICRO;
> - *val2 = (int)priv->integr_period_usecs;
> + *val2 = priv->integr_period_usecs;
> return IIO_VAL_FRACTIONAL;
>
> default:
> @@ -503,7 +502,7 @@ static int pac1921_lookup_scale(const int (*const scales_tbl)[2], size_t size,
> for (unsigned int i = 0; i < size; i++)
> if (scales_tbl[i][0] == scale_val &&
> scales_tbl[i][1] == scale_val2)
> - return (int)i;
> + return i;
>
> return -EINVAL;
> }
> @@ -553,7 +552,7 @@ static int pac1921_update_gain_from_scale(struct pac1921_priv *priv,
> if (ret < 0)
> return ret;
>
> - return pac1921_update_gain(priv, &priv->dv_gain, (u8)ret,
> + return pac1921_update_gain(priv, &priv->dv_gain, ret,
> PAC1921_GAIN_DV_GAIN_MASK);
> case PAC1921_CHAN_VSENSE:
> ret = pac1921_lookup_scale(pac1921_vsense_scales,
> @@ -562,7 +561,7 @@ static int pac1921_update_gain_from_scale(struct pac1921_priv *priv,
> if (ret < 0)
> return ret;
>
> - return pac1921_update_gain(priv, &priv->di_gain, (u8)ret,
> + return pac1921_update_gain(priv, &priv->di_gain, ret,
> PAC1921_GAIN_DI_GAIN_MASK);
> case PAC1921_CHAN_CURRENT:
> ret = pac1921_lookup_scale(priv->current_scales,
> @@ -571,7 +570,7 @@ static int pac1921_update_gain_from_scale(struct pac1921_priv *priv,
> if (ret < 0)
> return ret;
>
> - return pac1921_update_gain(priv, &priv->di_gain, (u8)ret,
> + return pac1921_update_gain(priv, &priv->di_gain, ret,
> PAC1921_GAIN_DI_GAIN_MASK);
> default:
> return -EINVAL;
> @@ -586,7 +585,7 @@ static int pac1921_lookup_int_num_samples(int num_samples)
> {
> for (unsigned int i = 0; i < ARRAY_SIZE(pac1921_int_num_samples); i++)
> if (pac1921_int_num_samples[i] == num_samples)
> - return (int)i;
> + return i;
>
> return -EINVAL;
> }
> @@ -607,7 +606,7 @@ static int pac1921_update_int_num_samples(struct pac1921_priv *priv,
> if (ret < 0)
> return ret;
>
> - n_samples = (u8)ret;
> + n_samples = ret;
>
> if (priv->n_samples == n_samples)
> return 0;
> @@ -770,7 +769,7 @@ static ssize_t pac1921_read_shunt_resistor(struct iio_dev *indio_dev,
>
> guard(mutex)(&priv->lock);
>
> - vals[0] = (int)priv->rshunt_uohm;
> + vals[0] = priv->rshunt_uohm;
> vals[1] = MICRO;
>
> return iio_format_value(buf, IIO_VAL_FRACTIONAL, 1, vals);
> @@ -793,13 +792,13 @@ static ssize_t pac1921_write_shunt_resistor(struct iio_dev *indio_dev,
> if (ret)
> return ret;
>
> - rshunt_uohm = (u32)val * MICRO + (u32)val_fract;
> + rshunt_uohm = val * MICRO + val_fract;
> if (rshunt_uohm == 0 || rshunt_uohm > INT_MAX)
> return -EINVAL;
>
> guard(mutex)(&priv->lock);
>
> - priv->rshunt_uohm = (u32)rshunt_uohm;
> + priv->rshunt_uohm = rshunt_uohm;
>
> pac1921_calc_current_scales(priv);
>
> @@ -1168,7 +1167,7 @@ static int pac1921_probe(struct i2c_client *client)
>
> priv->regmap = devm_regmap_init_i2c(client, &pac1921_regmap_config);
> if (IS_ERR(priv->regmap))
> - return dev_err_probe(dev, (int)PTR_ERR(priv->regmap),
> + return dev_err_probe(dev, PTR_ERR(priv->regmap),
> "Cannot initialize register map\n");
>
> devm_mutex_init(dev, &priv->lock);
> @@ -1191,7 +1190,7 @@ static int pac1921_probe(struct i2c_client *client)
>
> priv->vdd = devm_regulator_get(dev, "vdd");
> if (IS_ERR(priv->vdd))
> - return dev_err_probe(dev, (int)PTR_ERR(priv->vdd),
> + return dev_err_probe(dev, PTR_ERR(priv->vdd),
> "Cannot get vdd regulator\n");
>
> ret = regulator_enable(priv->vdd);
>
> ---
> base-commit: fec496684388685647652ab4213454fbabdab099
> change-id: 20240911-iio-pac1921-nocast-5c98cdeec059
>
> Best regards,