Message ID | 20181210210310.12677-11-wsa+renesas@sang-engineering.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
Series | i2c: move handling of suspended adapters to the core | expand |
On 2018-12-10 22:03, Wolfram Sang wrote: > Because the adapter will be set up before every transaction anyhow, we > just need to mark it as adapted to the I2C core. mark it as "suspended", not "adapted"? Cheers, Peter > > Signed-off-by: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@renesas.com> > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > drivers/i2c/busses/i2c-rcar.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c > index 254e6219e538..30cff066e0da 100644 > --- a/drivers/i2c/busses/i2c-rcar.c > +++ b/drivers/i2c/busses/i2c-rcar.c > @@ -1017,10 +1017,35 @@ static int rcar_i2c_remove(struct platform_device *pdev) > return 0; > } > > +#ifdef CONFIG_PM_SLEEP > +static int rcar_i2c_suspend(struct device *dev) > +{ > + struct rcar_i2c_priv *priv = dev_get_drvdata(dev); > + > + i2c_mark_adapter_suspended(&priv->adap, true); > + return 0; > +} > + > +static int rcar_i2c_resume(struct device *dev) > +{ > + struct rcar_i2c_priv *priv = dev_get_drvdata(dev); > + > + i2c_mark_adapter_suspended(&priv->adap, false); > + return 0; > +} > + > +static SIMPLE_DEV_PM_OPS(rcar_i2c_pm_ops, rcar_i2c_suspend, rcar_i2c_resume); > + > +#define DEV_PM_OPS (&rcar_i2c_pm_ops) > +#else > +#define DEV_PM_OPS NULL > +#endif /* CONFIG_PM_SLEEP */ > + > static struct platform_driver rcar_i2c_driver = { > .driver = { > .name = "i2c-rcar", > .of_match_table = rcar_i2c_dt_ids, > + .pm = DEV_PM_OPS, > }, > .probe = rcar_i2c_probe, > .remove = rcar_i2c_remove, >
> > Because the adapter will be set up before every transaction anyhow, we > > just need to mark it as adapted to the I2C core. > > mark it as "suspended", not "adapted"? Sure thing :D Thanks!
diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index 254e6219e538..30cff066e0da 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c @@ -1017,10 +1017,35 @@ static int rcar_i2c_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int rcar_i2c_suspend(struct device *dev) +{ + struct rcar_i2c_priv *priv = dev_get_drvdata(dev); + + i2c_mark_adapter_suspended(&priv->adap, true); + return 0; +} + +static int rcar_i2c_resume(struct device *dev) +{ + struct rcar_i2c_priv *priv = dev_get_drvdata(dev); + + i2c_mark_adapter_suspended(&priv->adap, false); + return 0; +} + +static SIMPLE_DEV_PM_OPS(rcar_i2c_pm_ops, rcar_i2c_suspend, rcar_i2c_resume); + +#define DEV_PM_OPS (&rcar_i2c_pm_ops) +#else +#define DEV_PM_OPS NULL +#endif /* CONFIG_PM_SLEEP */ + static struct platform_driver rcar_i2c_driver = { .driver = { .name = "i2c-rcar", .of_match_table = rcar_i2c_dt_ids, + .pm = DEV_PM_OPS, }, .probe = rcar_i2c_probe, .remove = rcar_i2c_remove,