Message ID | 1349687116-14463-1-git-send-email-shubhrajyoti@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Oct 08, 2012 at 02:35:14PM +0530, Shubhrajyoti D wrote: > Enable the irq in the transfer and disable it after the > transfer is done. This description is missing the most vital bits of information. In years to come, someone will wonder "why has this changed" and there's no reason given in the commit log. Commit logs which are just mere translations from patch to English are evil. Instead, good commit logs briefly state what is being done and then go on to describe _why_ the change is necessary. > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> > --- > drivers/i2c/busses/i2c-omap.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > index b6c6b95..ce41596 100644 > --- a/drivers/i2c/busses/i2c-omap.c > +++ b/drivers/i2c/busses/i2c-omap.c > @@ -625,6 +625,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > if (IS_ERR_VALUE(r)) > goto out; > > + enable_irq(dev->irq); > r = omap_i2c_wait_for_bb(dev); > if (r < 0) > goto out; > @@ -654,6 +655,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > > omap_i2c_wait_for_bb(dev); > out: > + disable_irq(dev->irq); > pm_runtime_mark_last_busy(dev->dev); > pm_runtime_put_autosuspend(dev->dev); > return r; > @@ -1179,6 +1181,7 @@ omap_i2c_probe(struct platform_device *pdev) > goto err_unuse_clocks; > } > > + disable_irq(dev->irq); > adap = &dev->adapter; > i2c_set_adapdata(adap, dev); > adap->owner = THIS_MODULE; > -- > 1.7.5.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
+Kalle, Grygorii, Huzefa Shubhrajyoti D <shubhrajyoti@ti.com> writes: > Enable the irq in the transfer and disable it after the > transfer is done. > > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> > --- > drivers/i2c/busses/i2c-omap.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > index b6c6b95..ce41596 100644 > --- a/drivers/i2c/busses/i2c-omap.c > +++ b/drivers/i2c/busses/i2c-omap.c > @@ -625,6 +625,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > if (IS_ERR_VALUE(r)) > goto out; > > + enable_irq(dev->irq); > r = omap_i2c_wait_for_bb(dev); > if (r < 0) > goto out; > @@ -654,6 +655,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > > omap_i2c_wait_for_bb(dev); > out: > + disable_irq(dev->irq); When using runtime PM with auto-suspend timeouts, why would you disable the IRQ before the runtime suspend handlers have run? If you really want to do this, you probably should have these in the runtime PM callbacks. But I'll wait until you add a more descriptive changelog before I can really tell why this is being done. Based on the discussion in the patch from Kalle, I'm assuming this is to prevent interrups when I2C is being used by co-processors. If so, plese describe in the changelog. That being said, doesn't the runtime suspend callback already disable IRQs at the device level instead of the INTC level? Kevin > pm_runtime_mark_last_busy(dev->dev); > pm_runtime_put_autosuspend(dev->dev); > return r; > @@ -1179,6 +1181,7 @@ omap_i2c_probe(struct platform_device *pdev) > goto err_unuse_clocks; > } > > + disable_irq(dev->irq); > adap = &dev->adapter; > i2c_set_adapdata(adap, dev); > adap->owner = THIS_MODULE;
+Kalle, Grygorii, Huzefa Shubhrajyoti D <shubhrajyoti@ti.com> writes: > Enable the irq in the transfer and disable it after the > transfer is done. > > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> > --- > drivers/i2c/busses/i2c-omap.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > index b6c6b95..ce41596 100644 > --- a/drivers/i2c/busses/i2c-omap.c > +++ b/drivers/i2c/busses/i2c-omap.c > @@ -625,6 +625,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > if (IS_ERR_VALUE(r)) > goto out; > > + enable_irq(dev->irq); > r = omap_i2c_wait_for_bb(dev); > if (r < 0) > goto out; > @@ -654,6 +655,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) > > omap_i2c_wait_for_bb(dev); > out: > + disable_irq(dev->irq); When using runtime PM with auto-suspend timeouts, why would you disable the IRQ before the runtime suspend handlers have run? If you really want to do this, you probably should have these in the runtime PM callbacks. But I'll wait until you add a more descriptive changelog before I can really tell why this is being done. Based on the discussion in the patch from Kalle, I'm assuming this is to prevent interrups when I2C is being used by co-processors. If so, plese describe in the changelog. That being said, doesn't the runtime suspend callback already disable IRQs at the device level instead of the INTC level? Kevin > pm_runtime_mark_last_busy(dev->dev); > pm_runtime_put_autosuspend(dev->dev); > return r; > @@ -1179,6 +1181,7 @@ omap_i2c_probe(struct platform_device *pdev) > goto err_unuse_clocks; > } > > + disable_irq(dev->irq); > adap = &dev->adapter; > i2c_set_adapdata(adap, dev); > adap->owner = THIS_MODULE;
On Friday 12 October 2012 08:01 PM, Kevin Hilman wrote: > When using runtime PM with auto-suspend timeouts, why would you disable > the IRQ before the runtime suspend handlers have run? > > If you really want to do this, you probably should have these in the > runtime PM callbacks. But I'll wait until you add a more descriptive > changelog before I can really tell why this is being done. Based on the > discussion in the patch from Kalle, I'm assuming this is to prevent > interrups when I2C is being used by co-processors. If so, plese > describe in the changelog. > > That being said, doesn't the runtime suspend callback already disable > IRQs at the device level instead of the INTC level? I thought of not relying on the intc as the registers may be reconfigured. > Kevin
On Fri, Oct 12, 2012 at 7:56 PM, Kevin Hilman <khilman@deeprootsystems.com> wrote: > +Kalle, Grygorii, Huzefa > > Shubhrajyoti D <shubhrajyoti@ti.com> writes: > >> Enable the irq in the transfer and disable it after the >> transfer is done. >> >> Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> >> --- >> drivers/i2c/busses/i2c-omap.c | 3 +++ >> 1 files changed, 3 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c >> index b6c6b95..ce41596 100644 >> --- a/drivers/i2c/busses/i2c-omap.c >> +++ b/drivers/i2c/busses/i2c-omap.c >> @@ -625,6 +625,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) >> if (IS_ERR_VALUE(r)) >> goto out; >> >> + enable_irq(dev->irq); >> r = omap_i2c_wait_for_bb(dev); >> if (r < 0) >> goto out; >> @@ -654,6 +655,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) >> >> omap_i2c_wait_for_bb(dev); >> out: >> + disable_irq(dev->irq); > > When using runtime PM with auto-suspend timeouts, why would you disable > the IRQ before the runtime suspend handlers have run? > > If you really want to do this, you probably should have these in the > runtime PM callbacks. OK. > But I'll wait until you add a more descriptive > changelog before I can really tell why this is being done. Based on the > discussion in the patch from Kalle, I'm assuming this is to prevent > interrups when I2C is being used by co-processors. If so, plese > describe in the changelog. OK. > > That being said, doesn't the runtime suspend callback already disable > IRQs at the device level instead of the INTC level? My idea is that the device may get reconfigured by the other processor. I felt intc is the only way. do you agree? > > Kevin > >> pm_runtime_mark_last_busy(dev->dev); >> pm_runtime_put_autosuspend(dev->dev); >> return r; >> @@ -1179,6 +1181,7 @@ omap_i2c_probe(struct platform_device *pdev) >> goto err_unuse_clocks; >> } >> >> + disable_irq(dev->irq); >> adap = &dev->adapter; >> i2c_set_adapdata(adap, dev); >> adap->owner = THIS_MODULE; > -- > To unsubscribe from this list: send the line "unsubscribe linux-i2c" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index b6c6b95..ce41596 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -625,6 +625,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) if (IS_ERR_VALUE(r)) goto out; + enable_irq(dev->irq); r = omap_i2c_wait_for_bb(dev); if (r < 0) goto out; @@ -654,6 +655,7 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) omap_i2c_wait_for_bb(dev); out: + disable_irq(dev->irq); pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); return r; @@ -1179,6 +1181,7 @@ omap_i2c_probe(struct platform_device *pdev) goto err_unuse_clocks; } + disable_irq(dev->irq); adap = &dev->adapter; i2c_set_adapdata(adap, dev); adap->owner = THIS_MODULE;
Enable the irq in the transfer and disable it after the transfer is done. Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> --- drivers/i2c/busses/i2c-omap.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)