* [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G @ 2017-09-11 20:11 Franklin S Cooper Jr 2017-09-11 20:11 ` [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support Franklin S Cooper Jr ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Franklin S Cooper Jr @ 2017-09-11 20:11 UTC (permalink / raw) To: wsa, robh+dt, linux, nsekhar, linux-i2c, devicetree, linux-kernel, linux-arm-kernel, grygorii.strashko, vigneshr Cc: Franklin S Cooper Jr Add I2C support to 66AK2G. Primary requirement is to add PM Runtime support to the driver. This has been tested on following platforms by performing simple i2c test such as i2c detect and reading on board i2c devices: K2G GP evm OMAPL138 K2L GP EVM and boot tested on: K2E GP EVM K2HK GP EVM Version 2 changes: Moved ordering of pm runtime calls Version 3 changes: Dropped first patch since it was pulled in. Remove clk = NULL statements Fix error path Version 4 changes: Fix typo in commit message Fix error path Franklin S Cooper Jr (2): i2c: davinci: Add PM Runtime Support dt-bindings: i2c: i2c-davinci: Update binding for 66AK2Gx pwr dm property .../devicetree/bindings/i2c/i2c-davinci.txt | 12 ++++ drivers/i2c/busses/i2c-davinci.c | 67 ++++++++++++++++++---- 2 files changed, 67 insertions(+), 12 deletions(-) -- 2.9.4.dirty ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support 2017-09-11 20:11 [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G Franklin S Cooper Jr @ 2017-09-11 20:11 ` Franklin S Cooper Jr 2017-09-12 1:58 ` Baolin Wang [not found] ` <20170911201145.31257-2-fcooper-l0cyMroinI0@public.gmane.org> [not found] ` <20170911201145.31257-1-fcooper-l0cyMroinI0@public.gmane.org> 2017-09-18 15:58 ` [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G Sekhar Nori 2 siblings, 2 replies; 10+ messages in thread From: Franklin S Cooper Jr @ 2017-09-11 20:11 UTC (permalink / raw) To: wsa, robh+dt, linux, nsekhar, linux-i2c, devicetree, linux-kernel, linux-arm-kernel, grygorii.strashko, vigneshr Cc: Franklin S Cooper Jr 66AK2G has I2C instances that are not apart of the ALWAYS_ON power domain unlike other Keystone 2 SoCs and OMAPL138. Therefore, pm_runtime is required to insure the power domain used by the specific I2C instance is properly turned on along with its functional clock. Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com> --- Version 4 changes: Fix wording on error message Fix additional error path Version 3 changes: Remove several statements that set clk to NULL Fix error path drivers/i2c/busses/i2c-davinci.c | 67 +++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c index b8c4353..a2d9f7c 100644 --- a/drivers/i2c/busses/i2c-davinci.c +++ b/drivers/i2c/busses/i2c-davinci.c @@ -36,6 +36,7 @@ #include <linux/gpio.h> #include <linux/of_device.h> #include <linux/platform_data/i2c-davinci.h> +#include <linux/pm_runtime.h> /* ----- global defines ----------------------------------------------- */ @@ -122,6 +123,9 @@ /* set the SDA GPIO low */ #define DAVINCI_I2C_DCLR_PDCLR1 BIT(1) +/* timeout for pm runtime autosuspend */ +#define DAVINCI_I2C_PM_TIMEOUT 1000 /* ms */ + struct davinci_i2c_dev { struct device *dev; void __iomem *base; @@ -541,10 +545,17 @@ i2c_davinci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) dev_dbg(dev->dev, "%s: msgs: %d\n", __func__, num); + ret = pm_runtime_get_sync(dev->dev); + if (ret < 0) { + dev_err(dev->dev, "Failed to runtime_get device: %d\n", ret); + pm_runtime_put_noidle(dev->dev); + return ret; + } + ret = i2c_davinci_wait_bus_not_busy(dev); if (ret < 0) { dev_warn(dev->dev, "timeout waiting for bus ready\n"); - return ret; + goto out; } for (i = 0; i < num; i++) { @@ -552,14 +563,19 @@ i2c_davinci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) dev_dbg(dev->dev, "%s [%d/%d] ret: %d\n", __func__, i + 1, num, ret); if (ret < 0) - return ret; + goto out; } + ret = num; #ifdef CONFIG_CPU_FREQ complete(&dev->xfr_complete); #endif - return num; +out: + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + + return ret; } static u32 i2c_davinci_func(struct i2c_adapter *adap) @@ -599,6 +615,9 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) int count = 0; u16 w; + if (pm_runtime_suspended(dev->dev)) + return IRQ_NONE; + while ((stat = davinci_i2c_read_reg(dev, DAVINCI_I2C_IVR_REG))) { dev_dbg(dev->dev, "%s: stat=0x%x\n", __func__, stat); if (count++ == 100) { @@ -802,13 +821,24 @@ static int davinci_i2c_probe(struct platform_device *pdev) dev->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(dev->clk)) return PTR_ERR(dev->clk); - clk_prepare_enable(dev->clk); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); dev->base = devm_ioremap_resource(&pdev->dev, mem); if (IS_ERR(dev->base)) { - r = PTR_ERR(dev->base); - goto err_unuse_clocks; + return PTR_ERR(dev->base); + } + + pm_runtime_set_autosuspend_delay(dev->dev, + DAVINCI_I2C_PM_TIMEOUT); + pm_runtime_use_autosuspend(dev->dev); + + pm_runtime_enable(dev->dev); + + r = pm_runtime_get_sync(dev->dev); + if (r < 0) { + dev_err(dev->dev, "failed to runtime_get device: %d\n", r); + pm_runtime_put_noidle(dev->dev); + return r; } i2c_davinci_init(dev); @@ -849,27 +879,40 @@ static int davinci_i2c_probe(struct platform_device *pdev) if (r) goto err_unuse_clocks; + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + return 0; err_unuse_clocks: - clk_disable_unprepare(dev->clk); - dev->clk = NULL; + pm_runtime_dont_use_autosuspend(dev->dev); + pm_runtime_put_sync(dev->dev); + pm_runtime_disable(dev->dev); + return r; } static int davinci_i2c_remove(struct platform_device *pdev) { struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); + int ret; i2c_davinci_cpufreq_deregister(dev); i2c_del_adapter(&dev->adapter); - clk_disable_unprepare(dev->clk); - dev->clk = NULL; + ret = pm_runtime_get_sync(&pdev->dev); + if (ret < 0) { + pm_runtime_put_noidle(&pdev->dev); + return ret; + } davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0); + pm_runtime_dont_use_autosuspend(dev->dev); + pm_runtime_put_sync(dev->dev); + pm_runtime_disable(dev->dev); + return 0; } @@ -880,7 +923,6 @@ static int davinci_i2c_suspend(struct device *dev) /* put I2C into reset */ davinci_i2c_reset_ctrl(i2c_dev, 0); - clk_disable_unprepare(i2c_dev->clk); return 0; } @@ -889,7 +931,6 @@ static int davinci_i2c_resume(struct device *dev) { struct davinci_i2c_dev *i2c_dev = dev_get_drvdata(dev); - clk_prepare_enable(i2c_dev->clk); /* take I2C out of reset */ davinci_i2c_reset_ctrl(i2c_dev, 1); @@ -899,6 +940,8 @@ static int davinci_i2c_resume(struct device *dev) static const struct dev_pm_ops davinci_i2c_pm = { .suspend = davinci_i2c_suspend, .resume = davinci_i2c_resume, + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, + pm_runtime_force_resume) }; #define davinci_i2c_pm_ops (&davinci_i2c_pm) -- 2.9.4.dirty ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support 2017-09-11 20:11 ` [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support Franklin S Cooper Jr @ 2017-09-12 1:58 ` Baolin Wang [not found] ` <CAMz4kuLGVes6a4iCF0VbG1ErWPR5at=HKgeGv3cMr1zv7aLzJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> [not found] ` <20170911201145.31257-2-fcooper-l0cyMroinI0@public.gmane.org> 1 sibling, 1 reply; 10+ messages in thread From: Baolin Wang @ 2017-09-12 1:58 UTC (permalink / raw) To: Franklin S Cooper Jr Cc: Wolfram Sang, Rob Herring, linux, nsekhar, linux-i2c, devicetree, LKML, linux-arm-kernel, grygorii.strashko, vigneshr Hi, On 12 September 2017 at 04:11, Franklin S Cooper Jr <fcooper@ti.com> wrote: > 66AK2G has I2C instances that are not apart of the ALWAYS_ON power domain > unlike other Keystone 2 SoCs and OMAPL138. Therefore, pm_runtime > is required to insure the power domain used by the specific I2C instance is > properly turned on along with its functional clock. > > Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com> > --- > Version 4 changes: > Fix wording on error message > Fix additional error path > > Version 3 changes: > Remove several statements that set clk to NULL > Fix error path > > drivers/i2c/busses/i2c-davinci.c | 67 +++++++++++++++++++++++++++++++++------- > 1 file changed, 55 insertions(+), 12 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c > index b8c4353..a2d9f7c 100644 > --- a/drivers/i2c/busses/i2c-davinci.c > +++ b/drivers/i2c/busses/i2c-davinci.c > @@ -36,6 +36,7 @@ > #include <linux/gpio.h> > #include <linux/of_device.h> > #include <linux/platform_data/i2c-davinci.h> > +#include <linux/pm_runtime.h> > > /* ----- global defines ----------------------------------------------- */ > > @@ -122,6 +123,9 @@ > /* set the SDA GPIO low */ > #define DAVINCI_I2C_DCLR_PDCLR1 BIT(1) > > +/* timeout for pm runtime autosuspend */ > +#define DAVINCI_I2C_PM_TIMEOUT 1000 /* ms */ > + > struct davinci_i2c_dev { > struct device *dev; > void __iomem *base; > @@ -541,10 +545,17 @@ i2c_davinci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > > dev_dbg(dev->dev, "%s: msgs: %d\n", __func__, num); > > + ret = pm_runtime_get_sync(dev->dev); > + if (ret < 0) { > + dev_err(dev->dev, "Failed to runtime_get device: %d\n", ret); > + pm_runtime_put_noidle(dev->dev); > + return ret; > + } > + > ret = i2c_davinci_wait_bus_not_busy(dev); > if (ret < 0) { > dev_warn(dev->dev, "timeout waiting for bus ready\n"); > - return ret; > + goto out; > } > > for (i = 0; i < num; i++) { > @@ -552,14 +563,19 @@ i2c_davinci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > dev_dbg(dev->dev, "%s [%d/%d] ret: %d\n", __func__, i + 1, num, > ret); > if (ret < 0) > - return ret; > + goto out; > } > > + ret = num; > #ifdef CONFIG_CPU_FREQ > complete(&dev->xfr_complete); > #endif > > - return num; > +out: > + pm_runtime_mark_last_busy(dev->dev); > + pm_runtime_put_autosuspend(dev->dev); > + > + return ret; > } > > static u32 i2c_davinci_func(struct i2c_adapter *adap) > @@ -599,6 +615,9 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) > int count = 0; > u16 w; > > + if (pm_runtime_suspended(dev->dev)) > + return IRQ_NONE; > + > while ((stat = davinci_i2c_read_reg(dev, DAVINCI_I2C_IVR_REG))) { > dev_dbg(dev->dev, "%s: stat=0x%x\n", __func__, stat); > if (count++ == 100) { > @@ -802,13 +821,24 @@ static int davinci_i2c_probe(struct platform_device *pdev) > dev->clk = devm_clk_get(&pdev->dev, NULL); > if (IS_ERR(dev->clk)) > return PTR_ERR(dev->clk); > - clk_prepare_enable(dev->clk); You removed clk enable here, I think it can not work if we did not open CONFIG_PM macro. I think you should keep clk enable here, and set rpm active by pm_runtime_set_active() before issuing pm_runtime_enable(). > > mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > dev->base = devm_ioremap_resource(&pdev->dev, mem); > if (IS_ERR(dev->base)) { > - r = PTR_ERR(dev->base); > - goto err_unuse_clocks; > + return PTR_ERR(dev->base); > + } > + > + pm_runtime_set_autosuspend_delay(dev->dev, > + DAVINCI_I2C_PM_TIMEOUT); > + pm_runtime_use_autosuspend(dev->dev); > + > + pm_runtime_enable(dev->dev); > + > + r = pm_runtime_get_sync(dev->dev); > + if (r < 0) { > + dev_err(dev->dev, "failed to runtime_get device: %d\n", r); > + pm_runtime_put_noidle(dev->dev); > + return r; > } > > i2c_davinci_init(dev); > @@ -849,27 +879,40 @@ static int davinci_i2c_probe(struct platform_device *pdev) > if (r) > goto err_unuse_clocks; > > + pm_runtime_mark_last_busy(dev->dev); > + pm_runtime_put_autosuspend(dev->dev); > + > return 0; > > err_unuse_clocks: > - clk_disable_unprepare(dev->clk); > - dev->clk = NULL; > + pm_runtime_dont_use_autosuspend(dev->dev); > + pm_runtime_put_sync(dev->dev); > + pm_runtime_disable(dev->dev); > + > return r; > } > > static int davinci_i2c_remove(struct platform_device *pdev) > { > struct davinci_i2c_dev *dev = platform_get_drvdata(pdev); > + int ret; > > i2c_davinci_cpufreq_deregister(dev); > > i2c_del_adapter(&dev->adapter); > > - clk_disable_unprepare(dev->clk); > - dev->clk = NULL; > + ret = pm_runtime_get_sync(&pdev->dev); > + if (ret < 0) { > + pm_runtime_put_noidle(&pdev->dev); > + return ret; > + } > > davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, 0); > > + pm_runtime_dont_use_autosuspend(dev->dev); > + pm_runtime_put_sync(dev->dev); > + pm_runtime_disable(dev->dev); > + > return 0; > } > > @@ -880,7 +923,6 @@ static int davinci_i2c_suspend(struct device *dev) > > /* put I2C into reset */ > davinci_i2c_reset_ctrl(i2c_dev, 0); > - clk_disable_unprepare(i2c_dev->clk); > > return 0; > } > @@ -889,7 +931,6 @@ static int davinci_i2c_resume(struct device *dev) > { > struct davinci_i2c_dev *i2c_dev = dev_get_drvdata(dev); > > - clk_prepare_enable(i2c_dev->clk); > /* take I2C out of reset */ > davinci_i2c_reset_ctrl(i2c_dev, 1); > > @@ -899,6 +940,8 @@ static int davinci_i2c_resume(struct device *dev) > static const struct dev_pm_ops davinci_i2c_pm = { > .suspend = davinci_i2c_suspend, > .resume = davinci_i2c_resume, > + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, > + pm_runtime_force_resume) > }; > > #define davinci_i2c_pm_ops (&davinci_i2c_pm) > -- > 2.9.4.dirty > -- Baolin.wang Best Regards ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <CAMz4kuLGVes6a4iCF0VbG1ErWPR5at=HKgeGv3cMr1zv7aLzJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support [not found] ` <CAMz4kuLGVes6a4iCF0VbG1ErWPR5at=HKgeGv3cMr1zv7aLzJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2017-09-12 8:48 ` Sekhar Nori 2017-09-12 9:14 ` Baolin Wang 0 siblings, 1 reply; 10+ messages in thread From: Sekhar Nori @ 2017-09-12 8:48 UTC (permalink / raw) To: Baolin Wang, Franklin S Cooper Jr Cc: Wolfram Sang, Rob Herring, linux-I+IVW8TIWO2tmTQ+vhA3Yw, linux-i2c-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, LKML, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, grygorii.strashko-l0cyMroinI0, vigneshr-l0cyMroinI0 On Tuesday 12 September 2017 07:28 AM, Baolin Wang wrote: >> @@ -802,13 +821,24 @@ static int davinci_i2c_probe(struct platform_device *pdev) >> dev->clk = devm_clk_get(&pdev->dev, NULL); >> if (IS_ERR(dev->clk)) >> return PTR_ERR(dev->clk); >> - clk_prepare_enable(dev->clk); > You removed clk enable here, I think it can not work if we did not > open CONFIG_PM macro. I think you should keep clk enable here, and set What do you mean by "open CONFIG_PM macro" ? > rpm active by pm_runtime_set_active() before issuing > pm_runtime_enable(). Can you explain why you want to do this instead of relying on pm_runtime_get_sync() to enable clock? Thanks, Sekhar -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support 2017-09-12 8:48 ` Sekhar Nori @ 2017-09-12 9:14 ` Baolin Wang 2017-09-12 9:22 ` Sekhar Nori 0 siblings, 1 reply; 10+ messages in thread From: Baolin Wang @ 2017-09-12 9:14 UTC (permalink / raw) To: Sekhar Nori Cc: Franklin S Cooper Jr, Wolfram Sang, Rob Herring, linux, linux-i2c, devicetree, LKML, linux-arm-kernel, grygorii.strashko, vigneshr Hi, On 12 September 2017 at 16:48, Sekhar Nori <nsekhar@ti.com> wrote: > On Tuesday 12 September 2017 07:28 AM, Baolin Wang wrote: >>> @@ -802,13 +821,24 @@ static int davinci_i2c_probe(struct platform_device *pdev) >>> dev->clk = devm_clk_get(&pdev->dev, NULL); >>> if (IS_ERR(dev->clk)) >>> return PTR_ERR(dev->clk); >>> - clk_prepare_enable(dev->clk); > >> You removed clk enable here, I think it can not work if we did not >> open CONFIG_PM macro. I think you should keep clk enable here, and set > > What do you mean by "open CONFIG_PM macro" ? If you did not open CONFIG_PM macro, then the pm_runtime_xxx() will be dummy functions, but now the i2c driver can not work since you did not enable clock, right? > >> rpm active by pm_runtime_set_active() before issuing >> pm_runtime_enable(). > > Can you explain why you want to do this instead of relying on > pm_runtime_get_sync() to enable clock? What I mean is you should compatible whether CONFIG_PM is enabled or not. -- Baolin.wang Best Regards ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support 2017-09-12 9:14 ` Baolin Wang @ 2017-09-12 9:22 ` Sekhar Nori 0 siblings, 0 replies; 10+ messages in thread From: Sekhar Nori @ 2017-09-12 9:22 UTC (permalink / raw) To: Baolin Wang Cc: Franklin S Cooper Jr, Wolfram Sang, Rob Herring, linux, linux-i2c, devicetree, LKML, linux-arm-kernel, grygorii.strashko, vigneshr On Tuesday 12 September 2017 02:44 PM, Baolin Wang wrote: > Hi, > > On 12 September 2017 at 16:48, Sekhar Nori <nsekhar@ti.com> wrote: >> On Tuesday 12 September 2017 07:28 AM, Baolin Wang wrote: >>>> @@ -802,13 +821,24 @@ static int davinci_i2c_probe(struct platform_device *pdev) >>>> dev->clk = devm_clk_get(&pdev->dev, NULL); >>>> if (IS_ERR(dev->clk)) >>>> return PTR_ERR(dev->clk); >>>> - clk_prepare_enable(dev->clk); >> >>> You removed clk enable here, I think it can not work if we did not >>> open CONFIG_PM macro. I think you should keep clk enable here, and set >> >> What do you mean by "open CONFIG_PM macro" ? > > If you did not open CONFIG_PM macro, then the pm_runtime_xxx() will be > dummy functions, but now the i2c driver can not work since you did not > enable clock, right? Ah, okay. I am not sure thats a concern on platforms on which this driver is used. Without PM runtime support, most likely the platforms will not boot and multiple drivers will fail. Thanks, Sekhar ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <20170911201145.31257-2-fcooper-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support [not found] ` <20170911201145.31257-2-fcooper-l0cyMroinI0@public.gmane.org> @ 2017-10-17 21:46 ` Wolfram Sang 0 siblings, 0 replies; 10+ messages in thread From: Wolfram Sang @ 2017-10-17 21:46 UTC (permalink / raw) To: Franklin S Cooper Jr Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, linux-I+IVW8TIWO2tmTQ+vhA3Yw, nsekhar-l0cyMroinI0, linux-i2c-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, grygorii.strashko-l0cyMroinI0, vigneshr-l0cyMroinI0 [-- Attachment #1: Type: text/plain, Size: 466 bytes --] On Mon, Sep 11, 2017 at 03:11:44PM -0500, Franklin S Cooper Jr wrote: > 66AK2G has I2C instances that are not apart of the ALWAYS_ON power domain > unlike other Keystone 2 SoCs and OMAPL138. Therefore, pm_runtime > is required to insure the power domain used by the specific I2C instance is > properly turned on along with its functional clock. > > Signed-off-by: Franklin S Cooper Jr <fcooper-l0cyMroinI0@public.gmane.org> Applied to for-next, thanks! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <20170911201145.31257-1-fcooper-l0cyMroinI0@public.gmane.org>]
* [PATCH v4 2/2] dt-bindings: i2c: i2c-davinci: Update binding for 66AK2Gx pwr dm property [not found] ` <20170911201145.31257-1-fcooper-l0cyMroinI0@public.gmane.org> @ 2017-09-11 20:11 ` Franklin S Cooper Jr [not found] ` <20170911201145.31257-3-fcooper-l0cyMroinI0@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Franklin S Cooper Jr @ 2017-09-11 20:11 UTC (permalink / raw) To: wsa-z923LK4zBo2bacvFa/9K2g, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, linux-I+IVW8TIWO2tmTQ+vhA3Yw, nsekhar-l0cyMroinI0, linux-i2c-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, grygorii.strashko-l0cyMroinI0, vigneshr-l0cyMroinI0 Cc: Franklin S Cooper Jr Add pm-domains property which is required for 66AK2Gx. Also document 66AK2G unique clocks property usage. Signed-off-by: Franklin S Cooper Jr <fcooper-l0cyMroinI0@public.gmane.org> Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Acked-by: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org> --- Documentation/devicetree/bindings/i2c/i2c-davinci.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/i2c/i2c-davinci.txt b/Documentation/devicetree/bindings/i2c/i2c-davinci.txt index 5b123e0..64e6e65 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-davinci.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-davinci.txt @@ -6,6 +6,18 @@ davinci/keystone i2c interface contains. Required properties: - compatible: "ti,davinci-i2c" or "ti,keystone-i2c"; - reg : Offset and length of the register set for the device +- clocks: I2C functional clock phandle. + For 66AK2G this property should be set per binding, + Documentation/devicetree/bindings/clock/ti,sci-clk.txt + +SoC-specific Required Properties: + +The following are mandatory properties for Keystone 2 66AK2G SoCs only: + +- power-domains: Should contain a phandle to a PM domain provider node + and an args specifier containing the I2C device id + value. This property is as per the binding, + Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt Recommended properties : - interrupts : standard interrupt property. -- 2.9.4.dirty -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <20170911201145.31257-3-fcooper-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH v4 2/2] dt-bindings: i2c: i2c-davinci: Update binding for 66AK2Gx pwr dm property [not found] ` <20170911201145.31257-3-fcooper-l0cyMroinI0@public.gmane.org> @ 2017-10-17 21:46 ` Wolfram Sang 0 siblings, 0 replies; 10+ messages in thread From: Wolfram Sang @ 2017-10-17 21:46 UTC (permalink / raw) To: Franklin S Cooper Jr Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, linux-I+IVW8TIWO2tmTQ+vhA3Yw, nsekhar-l0cyMroinI0, linux-i2c-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, grygorii.strashko-l0cyMroinI0, vigneshr-l0cyMroinI0 [-- Attachment #1: Type: text/plain, Size: 435 bytes --] On Mon, Sep 11, 2017 at 03:11:45PM -0500, Franklin S Cooper Jr wrote: > Add pm-domains property which is required for 66AK2Gx. Also document 66AK2G > unique clocks property usage. > > Signed-off-by: Franklin S Cooper Jr <fcooper-l0cyMroinI0@public.gmane.org> > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > Acked-by: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org> Applied to for-next, thanks! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G 2017-09-11 20:11 [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G Franklin S Cooper Jr 2017-09-11 20:11 ` [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support Franklin S Cooper Jr [not found] ` <20170911201145.31257-1-fcooper-l0cyMroinI0@public.gmane.org> @ 2017-09-18 15:58 ` Sekhar Nori 2 siblings, 0 replies; 10+ messages in thread From: Sekhar Nori @ 2017-09-18 15:58 UTC (permalink / raw) To: Franklin S Cooper Jr, wsa, robh+dt, linux, linux-i2c, devicetree, linux-kernel, linux-arm-kernel, grygorii.strashko, vigneshr On Tuesday 12 September 2017 01:41 AM, Franklin S Cooper Jr wrote: > Add I2C support to 66AK2G. Primary requirement is to add PM > Runtime support to the driver. > > This has been tested on following platforms by performing simple i2c test > such as i2c detect and reading on board i2c devices: > K2G GP evm > OMAPL138 > K2L GP EVM > > and boot tested on: > K2E GP EVM > K2HK GP EVM > > Version 2 changes: > Moved ordering of pm runtime calls > > Version 3 changes: > Dropped first patch since it was pulled in. > Remove clk = NULL statements > Fix error path > > Version 4 changes: > Fix typo in commit message > Fix error path Acked-by: Sekhar Nori <nsekhar@ti.com> Tested on DA850 LCDK board with some basic i2cdetect/i2cdump and suspend/resume tests. Thanks, Sekhar ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-10-17 21:46 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-09-11 20:11 [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G Franklin S Cooper Jr 2017-09-11 20:11 ` [PATCH v4 1/2] i2c: davinci: Add PM Runtime Support Franklin S Cooper Jr 2017-09-12 1:58 ` Baolin Wang [not found] ` <CAMz4kuLGVes6a4iCF0VbG1ErWPR5at=HKgeGv3cMr1zv7aLzJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-09-12 8:48 ` Sekhar Nori 2017-09-12 9:14 ` Baolin Wang 2017-09-12 9:22 ` Sekhar Nori [not found] ` <20170911201145.31257-2-fcooper-l0cyMroinI0@public.gmane.org> 2017-10-17 21:46 ` Wolfram Sang [not found] ` <20170911201145.31257-1-fcooper-l0cyMroinI0@public.gmane.org> 2017-09-11 20:11 ` [PATCH v4 2/2] dt-bindings: i2c: i2c-davinci: Update binding for 66AK2Gx pwr dm property Franklin S Cooper Jr [not found] ` <20170911201145.31257-3-fcooper-l0cyMroinI0@public.gmane.org> 2017-10-17 21:46 ` Wolfram Sang 2017-09-18 15:58 ` [PATCH v4 0/2] i2c: davinci: Add PM Runtime Support needed by 66AK2G Sekhar Nori
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).