Linux IIO development
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Vasileios Amoiridis <vassilisamir@gmail.com>
Cc: lars@metafoo.de, robh@kernel.org, krzk+dt@kernel.org,
	conor+dt@kernel.org, andriy.shevchenko@linux.intel.com,
	anshulusr@gmail.com, gustavograzs@gmail.com,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 13/13] iio: chemical: bme680: add power management
Date: Wed, 30 Oct 2024 20:35:14 +0000	[thread overview]
Message-ID: <20241030203514.349d8142@jic23-huawei> (raw)
In-Reply-To: <ZyF8vtLiVUEHojl4@vamoirid-laptop>


> > > +
> > >  int bme680_core_probe(struct device *dev, struct regmap *regmap,
> > >  		      const char *name)
> > >  {
> > > @@ -1164,15 +1231,60 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap,
> > >  	ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
> > >  					      iio_pollfunc_store_time,
> > >  					      bme680_trigger_handler,
> > > -					      NULL);
> > > +					      &bme680_buffer_setup_ops);
> > >  	if (ret)
> > >  		return dev_err_probe(dev, ret,
> > >  				     "iio triggered buffer setup failed\n");
> > >  
> > > +	/* Enable runtime PM */
> > > +	pm_runtime_get_noresume(dev);
> > > +	pm_runtime_set_autosuspend_delay(dev, BME680_STARTUP_TIME_US * 100);
> > > +	pm_runtime_use_autosuspend(dev);
> > > +	pm_runtime_set_active(dev);
> > > +	ret = devm_pm_runtime_enable(dev);  
> > 
> > Take a look at what this unwinds in the devm handler. You don't need to do
> > as much (or possibly anything) yourself.
> > 
> >   
> 
> Well, in general what I see that could probably be dropped here is the
> extra add_action_or_reset because of the devm_*. About the functions
> get_noresume() and put(), I feel that they could be dropped as well
> because the device registration will happen well before the autosuspend
> delay, but does it make sense to depend on something like this?

If you haven't enabled runtime pm yet all you need to do is set up the
current state  Shouldn't need the get etc as you don't care if it powers
down here anyway as you aren't talking to the device.
> 
> Cheers,
> Vasilis
> 
> > > +	if (ret)
> > > +		return ret;
> > > +
> > > +	pm_runtime_put(dev);
> > > +
> > > +	ret = devm_add_action_or_reset(dev, bme680_pm_disable, dev);
> > > +	if (ret)
> > > +		return ret;
> > > +
> > >  	return devm_iio_device_register(dev, indio_dev);
> > >  }
> > >  EXPORT_SYMBOL_NS_GPL(bme680_core_probe, IIO_BME680);
> > >  
> > > +static int bme680_runtime_suspend(struct device *dev)
> > > +{
> > > +	struct iio_dev *indio_dev = dev_get_drvdata(dev);
> > > +	struct bme680_data *data = iio_priv(indio_dev);
> > > +
> > > +	return regulator_bulk_disable(BME680_NUM_SUPPLIES, data->supplies);
> > > +}
> > > +
> > > +static int bme680_runtime_resume(struct device *dev)
> > > +{
> > > +	struct iio_dev *indio_dev = dev_get_drvdata(dev);
> > > +	struct bme680_data *data = iio_priv(indio_dev);
> > > +	int ret;
> > > +
> > > +	ret = regulator_bulk_enable(BME680_NUM_SUPPLIES, data->supplies);
> > > +	if (ret)
> > > +		return ret;
> > > +
> > > +	fsleep(BME680_STARTUP_TIME_US);
> > > +
> > > +	ret = bme680_chip_config(data);
> > > +	if (ret)
> > > +		return ret;
> > > +
> > > +	return bme680_gas_config(data);
> > > +}
> > > +
> > > +EXPORT_RUNTIME_DEV_PM_OPS(bme680_dev_pm_ops, bme680_runtime_suspend,
> > > +			  bme680_runtime_resume, NULL);
> > > +
> > >  MODULE_AUTHOR("Himanshu Jha <himanshujha199640@gmail.com>");
> > >  MODULE_DESCRIPTION("Bosch BME680 Driver");
> > >  MODULE_LICENSE("GPL v2");  
> >   


      reply	other threads:[~2024-10-30 20:35 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-21 19:53 [PATCH v2 00/13]: chemical: bme680: 2nd set of cleanup Vasileios Amoiridis
2024-10-21 19:53 ` [PATCH v2 01/13] iio: chemical: bme680: Fix missing header Vasileios Amoiridis
2024-10-21 20:13   ` Greg KH
2024-10-27  9:48     ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 02/13] iio: chemical: bme680: optimize startup time Vasileios Amoiridis
2024-10-27  9:53   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 03/13] iio: chemical: bme680: avoid using camel case Vasileios Amoiridis
2024-10-27  9:54   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 04/13] iio: chemical: bme680: refactorize set_mode() mode Vasileios Amoiridis
2024-10-27  9:56   ` Jonathan Cameron
2024-10-27  9:59   ` Jonathan Cameron
2024-10-29 23:28     ` Vasileios Amoiridis
2024-10-21 19:53 ` [PATCH v2 05/13] iio: chemical: bme680: move to fsleep() Vasileios Amoiridis
2024-10-27 10:01   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 06/13] iio: chemical: bme680: Fix indentation and unnecessary spaces Vasileios Amoiridis
2024-10-27 10:08   ` Jonathan Cameron
2024-10-27 10:10     ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 07/13] iio: chemical: bme680: generalize read_*() functions Vasileios Amoiridis
2024-10-27 10:11   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 08/13] iio: chemical: bme680: Add SCALE and RAW channels Vasileios Amoiridis
2024-10-27 10:12   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 09/13] iio: chemical: bme680: Add triggered buffer support Vasileios Amoiridis
2024-10-27 10:18   ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 10/13] iio: chemical: bme680: Add support for preheat current Vasileios Amoiridis
2024-10-21 19:53 ` [PATCH v2 11/13] dt-bindings: iio: add binding for BME680 driver Vasileios Amoiridis
2024-10-21 21:22   ` Rob Herring (Arm)
2024-10-22 13:41   ` Rob Herring
2024-10-22 17:24     ` Jonathan Cameron
2024-10-21 19:53 ` [PATCH v2 12/13] iio: chemical: bme680: add regulators Vasileios Amoiridis
2024-10-21 19:53 ` [PATCH v2 13/13] iio: chemical: bme680: add power management Vasileios Amoiridis
2024-10-27 10:30   ` Jonathan Cameron
2024-10-30  0:24     ` Vasileios Amoiridis
2024-10-30 20:35       ` Jonathan Cameron [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241030203514.349d8142@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=anshulusr@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gustavograzs@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=vassilisamir@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox