Re: [PATCH RESEND 1/2] i2c: prepare runtime PM support for I2Cclient devices

From: Mika Westerberg
Date: Tue Sep 10 2013 - 03:45:52 EST


On Mon, Sep 09, 2013 at 04:40:28PM +0100, Mark Brown wrote:
> On Mon, Sep 09, 2013 at 04:34:38PM +0300, Mika Westerberg wrote:
>
> > + /*
> > + * Enable runtime PM for the client device. If the client wants to
> > + * participate on runtime PM it should call pm_runtime_put() in its
> > + * probe() callback.
> > + *
> > + * User still needs to allow the PM runtime before it can actually
> > + * happen.
> > + */
> > + pm_runtime_forbid(&client->dev);
> > + pm_runtime_get_noresume(&client->dev);
> > + pm_runtime_set_active(&client->dev);
> > + pm_runtime_enable(&client->dev);
>
> How is this going to interact with client devices which are already
> enabling runtime PM for themselves, and what are the advantages of doing
> this over having the client device enable runtime PM for itself (given
> that the client still needs an explicit put() adding)?

My understanding is that you can call pm_runtime_enable() several times
(provided that pm_runtime_disable() is called as many times). So that
should have no effect on the current drivers that already take advantage of
runtime PM.

There is one difference though -- runtime PM is now blocked by default and
it needs to be unblocked from the userspace per each device.

For the advantages compared to each driver handling it completely
themselves:

- Few lines less as you only need to call _put().
- It follows what is already been done for other buses, like PCI
and AMBA .
- The I2C core makes sure that the device is available (from bus
point of view) when the driver ->probe() is called.

> Given that it's relatively common for devices to have both I2C and SPI
> control it seems like it'd be sensible to keep the policy common between
> the two buses to simplify driver implementation.

Yes and IMHO if I2C and SPI follows what has already been done for other
buses it should make the driver writer's job easier as the usage is similar
from one bus to another.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/