]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: adc: meson: no devm for nvmem_cell_get
authorRosen Penev <rosenp@gmail.com>
Wed, 4 Mar 2026 04:17:16 +0000 (20:17 -0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 14 Mar 2026 12:10:21 +0000 (12:10 +0000)
There is no reason to extend the lifetime of this post removal of the
driver when it's only needed in one spot.

Moved tsc_regmap assignment to avoid two nvmem_cell_put calls.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/meson_saradc.c

index 47cd350498a0d42536445ab324cc9249966b37d0..ed91edf0e391acadb12f6b380b463439a4654ada 100644 (file)
@@ -792,7 +792,7 @@ static int meson_sar_adc_temp_sensor_init(struct iio_dev *indio_dev)
        size_t read_len;
        int ret;
 
-       temperature_calib = devm_nvmem_cell_get(dev, "temperature_calib");
+       temperature_calib = nvmem_cell_get(dev, "temperature_calib");
        if (IS_ERR(temperature_calib)) {
                ret = PTR_ERR(temperature_calib);
 
@@ -806,13 +806,9 @@ static int meson_sar_adc_temp_sensor_init(struct iio_dev *indio_dev)
                return dev_err_probe(dev, ret, "failed to get temperature_calib cell\n");
        }
 
-       priv->tsc_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "amlogic,hhi-sysctrl");
-       if (IS_ERR(priv->tsc_regmap))
-               return dev_err_probe(dev, PTR_ERR(priv->tsc_regmap),
-                                    "failed to get amlogic,hhi-sysctrl regmap\n");
-
        read_len = MESON_SAR_ADC_EFUSE_BYTES;
        buf = nvmem_cell_read(temperature_calib, &read_len);
+       nvmem_cell_put(temperature_calib);
        if (IS_ERR(buf))
                return dev_err_probe(dev, PTR_ERR(buf), "failed to read temperature_calib cell\n");
        if (read_len != MESON_SAR_ADC_EFUSE_BYTES) {
@@ -820,6 +816,11 @@ static int meson_sar_adc_temp_sensor_init(struct iio_dev *indio_dev)
                return dev_err_probe(dev, -EINVAL, "invalid read size of temperature_calib cell\n");
        }
 
+       priv->tsc_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "amlogic,hhi-sysctrl");
+       if (IS_ERR(priv->tsc_regmap))
+               return dev_err_probe(dev, PTR_ERR(priv->tsc_regmap),
+                                    "failed to get amlogic,hhi-sysctrl regmap\n");
+
        trimming_bits = priv->param->temperature_trimming_bits;
        trimming_mask = BIT(trimming_bits) - 1;