Re: [PATCH v2] iio: light: ltr390: Implement runtime PM support
From: Andy Shevchenko
Date: Fri Aug 29 2025 - 11:48:48 EST
On Thu, Aug 28, 2025 at 9:47 PM Akshay Jindal <akshayaj.lkd@xxxxxxxxx> wrote:
> On Thu, Aug 28, 2025 at 7:17 AM Andy Shevchenko
> <andy.shevchenko@xxxxxxxxx> wrote:
> > On Wed, Aug 27, 2025 at 10:19 PM Akshay Jindal <akshayaj.lkd@xxxxxxxxx> wrote:
...
> > > +static int ltr390_read_raw(struct iio_dev *iio_device,
> > > + struct iio_chan_spec const *chan, int *val,
> > > + int *val2, long mask)
> > > +{
> > > + int ret, retval;
> > > + struct ltr390_data *data = iio_priv(iio_device);
> > > + struct device *dev = &data->client->dev;
> > > +
> > > + ret = pm_runtime_resume_and_get(dev);
> > > + if (ret < 0)
> > > + dev_err(dev, "runtime PM failed to resume: %d\n", ret);
> >
> > If it fails, there is no point to read the value, it will be garbage
> > or even can make the bus stuck.
> >
> My rationale behind this approach is that earlier ltr390_read_raw()
> had all the functionality
> of the .read_raw callback so the return value whether success or
> failure was of the core functionality.
> But now, since the core functionality has been relocated into
> __ltr390_read_raw(), I felt the return value
> ltr390_read_raw should be the return value of __ltr390_read_raw().
"Main" returned value. But this is not the point. The Q is, how do you
expect to get not a garbage from, e.g., powered off device, please?
> Hence I thought, it will be better to
> just print dev_err for runtime PM failures and return the retval of
> __ltr390_read_raw only.
> Let me know your thoughts on this. Will make the change accordingly in
> the next version.
--
With Best Regards,
Andy Shevchenko