* [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
@ 2023-05-24 2:40 ` carlos.song
0 siblings, 0 replies; 7+ messages in thread
From: carlos.song @ 2023-05-24 2:40 UTC (permalink / raw)
To: aisheng.dong, shawnguo, s.hauer, kernel, festevam
Cc: carlos.song, xiaoning.wang, haibo.chen, linux-imx, linux-i2c,
linux-arm-kernel, linux-kernel
From: Gao Pan <pandy.gao@nxp.com>
A NACK flag in ISR means i2c bus error. In such codition,
there is no need to do read/write operation. It's better
to return ISR directly and then stop i2c transfer.
Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
Signed-off-by: Gao Pan <pandy.gao@nxp.com>
Signed-off-by: Carlos Song <carlos.song@nxp.com>
---
drivers/i2c/busses/i2c-imx-lpi2c.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
index 1af0a637d7f1..11240bf8e8e2 100644
--- a/drivers/i2c/busses/i2c-imx-lpi2c.c
+++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
@@ -514,15 +514,17 @@ static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
temp = readl(lpi2c_imx->base + LPI2C_MSR);
temp &= enabled;
+ if (temp & MSR_NDF) {
+ complete(&lpi2c_imx->complete);
+ goto ret;
+ }
+
if (temp & MSR_RDF)
lpi2c_imx_read_rxfifo(lpi2c_imx);
-
- if (temp & MSR_TDF)
+ else if (temp & MSR_TDF)
lpi2c_imx_write_txfifo(lpi2c_imx);
- if (temp & MSR_NDF)
- complete(&lpi2c_imx->complete);
-
+ret:
return IRQ_HANDLED;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
@ 2023-05-24 2:40 ` carlos.song
0 siblings, 0 replies; 7+ messages in thread
From: carlos.song @ 2023-05-24 2:40 UTC (permalink / raw)
To: aisheng.dong, shawnguo, s.hauer, kernel, festevam
Cc: carlos.song, xiaoning.wang, haibo.chen, linux-imx, linux-i2c,
linux-arm-kernel, linux-kernel
From: Gao Pan <pandy.gao@nxp.com>
A NACK flag in ISR means i2c bus error. In such codition,
there is no need to do read/write operation. It's better
to return ISR directly and then stop i2c transfer.
Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
Signed-off-by: Gao Pan <pandy.gao@nxp.com>
Signed-off-by: Carlos Song <carlos.song@nxp.com>
---
drivers/i2c/busses/i2c-imx-lpi2c.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
index 1af0a637d7f1..11240bf8e8e2 100644
--- a/drivers/i2c/busses/i2c-imx-lpi2c.c
+++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
@@ -514,15 +514,17 @@ static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
temp = readl(lpi2c_imx->base + LPI2C_MSR);
temp &= enabled;
+ if (temp & MSR_NDF) {
+ complete(&lpi2c_imx->complete);
+ goto ret;
+ }
+
if (temp & MSR_RDF)
lpi2c_imx_read_rxfifo(lpi2c_imx);
-
- if (temp & MSR_TDF)
+ else if (temp & MSR_TDF)
lpi2c_imx_write_txfifo(lpi2c_imx);
- if (temp & MSR_NDF)
- complete(&lpi2c_imx->complete);
-
+ret:
return IRQ_HANDLED;
}
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
2023-05-24 2:40 ` carlos.song
@ 2023-06-07 9:19 ` Wolfram Sang
-1 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2023-06-07 9:19 UTC (permalink / raw)
To: carlos.song
Cc: aisheng.dong, shawnguo, s.hauer, kernel, festevam, xiaoning.wang,
haibo.chen, linux-imx, linux-i2c, linux-arm-kernel, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 435 bytes --]
Hi Carlos Song,
> Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
> Signed-off-by: Gao Pan <pandy.gao@nxp.com>
> Signed-off-by: Carlos Song <carlos.song@nxp.com>
You sent quite some fixes for the lpi2c driver, thanks for that! Much
appreciated.
Current maintainer of this driver is Dong Aisheng. Since you are in the
same company, maybe you can notify him more directly than I can?
Happy hacking,
Wolfram
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
@ 2023-06-07 9:19 ` Wolfram Sang
0 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2023-06-07 9:19 UTC (permalink / raw)
To: carlos.song
Cc: aisheng.dong, shawnguo, s.hauer, kernel, festevam, xiaoning.wang,
haibo.chen, linux-imx, linux-i2c, linux-arm-kernel, linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 435 bytes --]
Hi Carlos Song,
> Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
> Signed-off-by: Gao Pan <pandy.gao@nxp.com>
> Signed-off-by: Carlos Song <carlos.song@nxp.com>
You sent quite some fixes for the lpi2c driver, thanks for that! Much
appreciated.
Current maintainer of this driver is Dong Aisheng. Since you are in the
same company, maybe you can notify him more directly than I can?
Happy hacking,
Wolfram
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
2023-05-24 2:40 ` carlos.song
@ 2023-06-14 0:08 ` Andi Shyti
-1 siblings, 0 replies; 7+ messages in thread
From: Andi Shyti @ 2023-06-14 0:08 UTC (permalink / raw)
To: carlos.song
Cc: aisheng.dong, shawnguo, s.hauer, kernel, festevam, xiaoning.wang,
haibo.chen, linux-imx, linux-i2c, linux-arm-kernel, linux-kernel
Hi,
On Wed, May 24, 2023 at 10:40:02AM +0800, carlos.song@nxp.com wrote:
> From: Gao Pan <pandy.gao@nxp.com>
>
> A NACK flag in ISR means i2c bus error. In such codition,
> there is no need to do read/write operation. It's better
> to return ISR directly and then stop i2c transfer.
>
> Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
> Signed-off-by: Gao Pan <pandy.gao@nxp.com>
> Signed-off-by: Carlos Song <carlos.song@nxp.com>
looks good to me, just a little note.
> ---
> drivers/i2c/busses/i2c-imx-lpi2c.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
> index 1af0a637d7f1..11240bf8e8e2 100644
> --- a/drivers/i2c/busses/i2c-imx-lpi2c.c
> +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
> @@ -514,15 +514,17 @@ static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
> temp = readl(lpi2c_imx->base + LPI2C_MSR);
> temp &= enabled;
>
> + if (temp & MSR_NDF) {
> + complete(&lpi2c_imx->complete);
> + goto ret;
> + }
> +
> if (temp & MSR_RDF)
else if () and remove goto and brackets. You have used the
"else if" below and we can keep it consistent.
This way the commit log should be a bit different as we
decide to check exclusively using else if's for the active bits.
This way we also stop processing the MSR register if a NACK is
received.
With the above I can give you a conditional r-b: are you able to
pull Dong into this review as Wolfram asked?
Thank you,
Andi
> lpi2c_imx_read_rxfifo(lpi2c_imx);
> -
> - if (temp & MSR_TDF)
> + else if (temp & MSR_TDF)
> lpi2c_imx_write_txfifo(lpi2c_imx);
>
> - if (temp & MSR_NDF)
> - complete(&lpi2c_imx->complete);
> -
> +ret:
> return IRQ_HANDLED;
> }
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
@ 2023-06-14 0:08 ` Andi Shyti
0 siblings, 0 replies; 7+ messages in thread
From: Andi Shyti @ 2023-06-14 0:08 UTC (permalink / raw)
To: carlos.song
Cc: aisheng.dong, shawnguo, s.hauer, kernel, festevam, xiaoning.wang,
haibo.chen, linux-imx, linux-i2c, linux-arm-kernel, linux-kernel
Hi,
On Wed, May 24, 2023 at 10:40:02AM +0800, carlos.song@nxp.com wrote:
> From: Gao Pan <pandy.gao@nxp.com>
>
> A NACK flag in ISR means i2c bus error. In such codition,
> there is no need to do read/write operation. It's better
> to return ISR directly and then stop i2c transfer.
>
> Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
> Signed-off-by: Gao Pan <pandy.gao@nxp.com>
> Signed-off-by: Carlos Song <carlos.song@nxp.com>
looks good to me, just a little note.
> ---
> drivers/i2c/busses/i2c-imx-lpi2c.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
> index 1af0a637d7f1..11240bf8e8e2 100644
> --- a/drivers/i2c/busses/i2c-imx-lpi2c.c
> +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
> @@ -514,15 +514,17 @@ static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
> temp = readl(lpi2c_imx->base + LPI2C_MSR);
> temp &= enabled;
>
> + if (temp & MSR_NDF) {
> + complete(&lpi2c_imx->complete);
> + goto ret;
> + }
> +
> if (temp & MSR_RDF)
else if () and remove goto and brackets. You have used the
"else if" below and we can keep it consistent.
This way the commit log should be a bit different as we
decide to check exclusively using else if's for the active bits.
This way we also stop processing the MSR register if a NACK is
received.
With the above I can give you a conditional r-b: are you able to
pull Dong into this review as Wolfram asked?
Thank you,
Andi
> lpi2c_imx_read_rxfifo(lpi2c_imx);
> -
> - if (temp & MSR_TDF)
> + else if (temp & MSR_TDF)
> lpi2c_imx_write_txfifo(lpi2c_imx);
>
> - if (temp & MSR_NDF)
> - complete(&lpi2c_imx->complete);
> -
> +ret:
> return IRQ_HANDLED;
> }
>
> --
> 2.34.1
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 7+ messages in thread* RE: [EXT] Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
2023-06-14 0:08 ` Andi Shyti
(?)
@ 2023-07-24 10:50 ` Carlos Song
-1 siblings, 0 replies; 7+ messages in thread
From: Carlos Song @ 2023-07-24 10:50 UTC (permalink / raw)
To: Andi Shyti
Cc: Aisheng Dong, shawnguo@kernel.org, s.hauer@pengutronix.de,
kernel@pengutronix.de, festevam@gmail.com, Clark Wang, Bough Chen,
dl-linux-imx, linux-i2c@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Hi, Andy
> -----Original Message-----
> From: Andi Shyti <andi.shyti@kernel.org>
> Sent: Wednesday, June 14, 2023 8:09 AM
> To: Carlos Song <carlos.song@nxp.com>
> Cc: Aisheng Dong <aisheng.dong@nxp.com>; shawnguo@kernel.org;
> s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com; Clark
> Wang <xiaoning.wang@nxp.com>; Bough Chen <haibo.chen@nxp.com>;
> dl-linux-imx <linux-imx@nxp.com>; linux-i2c@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Subject: [EXT] Re: [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report this
> email' button
>
>
> Hi,
>
> On Wed, May 24, 2023 at 10:40:02AM +0800, carlos.song@nxp.com wrote:
> > From: Gao Pan <pandy.gao@nxp.com>
> >
> > A NACK flag in ISR means i2c bus error. In such codition, there is no
> > need to do read/write operation. It's better to return ISR directly
> > and then stop i2c transfer.
> >
> > Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
> > Signed-off-by: Gao Pan <pandy.gao@nxp.com>
> > Signed-off-by: Carlos Song <carlos.song@nxp.com>
>
> looks good to me, just a little note.
>
> > ---
> > drivers/i2c/busses/i2c-imx-lpi2c.c | 12 +++++++-----
> > 1 file changed, 7 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c
> > b/drivers/i2c/busses/i2c-imx-lpi2c.c
> > index 1af0a637d7f1..11240bf8e8e2 100644
> > --- a/drivers/i2c/busses/i2c-imx-lpi2c.c
> > +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
> > @@ -514,15 +514,17 @@ static irqreturn_t lpi2c_imx_isr(int irq, void
> *dev_id)
> > temp = readl(lpi2c_imx->base + LPI2C_MSR);
> > temp &= enabled;
> >
> > + if (temp & MSR_NDF) {
> > + complete(&lpi2c_imx->complete);
> > + goto ret;
> > + }
> > +
> > if (temp & MSR_RDF)
>
> else if () and remove goto and brackets. You have used the "else if" below and
> we can keep it consistent.
>
> This way the commit log should be a bit different as we decide to check
> exclusively using else if's for the active bits.
> This way we also stop processing the MSR register if a NACK is received.
>
Carlos: I will use if else and remove goto in V2 patch.
> With the above I can give you a conditional r-b: are you able to pull Dong into
> this review as Wolfram asked?
>
Carlos: I have notified Aisheng. He will add review by.
> Thank you,
> Andi
>
> > lpi2c_imx_read_rxfifo(lpi2c_imx);
> > -
> > - if (temp & MSR_TDF)
> > + else if (temp & MSR_TDF)
> > lpi2c_imx_write_txfifo(lpi2c_imx);
> >
> > - if (temp & MSR_NDF)
> > - complete(&lpi2c_imx->complete);
> > -
> > +ret:
> > return IRQ_HANDLED;
> > }
> >
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-07-24 10:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-24 2:40 [PATCH] i2c: imx-lpi2c: directly return ISR when detect a NACK carlos.song
2023-05-24 2:40 ` carlos.song
2023-06-07 9:19 ` Wolfram Sang
2023-06-07 9:19 ` Wolfram Sang
2023-06-14 0:08 ` Andi Shyti
2023-06-14 0:08 ` Andi Shyti
2023-07-24 10:50 ` [EXT] " Carlos Song
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.