2024-02-21 19:31:21

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

From: Corey Minyard <[email protected]>

When being a target, NAK from the controller means that all bytes have
been transferred. So, the last byte needs also to be marked as
'processed'. Otherwise index registers of backends may not increase.

Signed-off-by: Corey Minyard <[email protected]>
Tested-by: Andrew Manley <[email protected]>
Reviewed-by: Andrew Manley <[email protected]>
Reviewed-by: Oleksij Rempel <[email protected]>
[wsa: fixed comment and commit message to properly describe the case]
Signed-off-by: Wolfram Sang <[email protected]>
---

Changes since v2:
* updated commit message and comment

In the stalled discussion[1], it seems I couldn't make my suggestions
clear. So, here are the changes how I meant them. I hope this can be
agreed on.

[1] http://patchwork.ozlabs.org/project/linux-i2c/patch/[email protected]/

drivers/i2c/busses/i2c-imx.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 88a053987403..60e813137f84 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -803,6 +803,11 @@ static irqreturn_t i2c_imx_slave_handle(struct imx_i2c_struct *i2c_imx,
ctl &= ~I2CR_MTX;
imx_i2c_write_reg(ctl, i2c_imx, IMX_I2C_I2CR);
imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR);
+
+ /* flag the last byte as processed */
+ i2c_imx_slave_event(i2c_imx,
+ I2C_SLAVE_READ_PROCESSED, &value);
+
i2c_imx_slave_finish_op(i2c_imx);
return IRQ_HANDLED;
}
--
2.43.0



2024-02-21 20:58:40

by Andi Shyti

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

Hi Wolfram and Corey,

On Wed, Feb 21, 2024 at 08:27:13PM +0100, Wolfram Sang wrote:
> From: Corey Minyard <[email protected]>
>
> When being a target, NAK from the controller means that all bytes have
> been transferred. So, the last byte needs also to be marked as
> 'processed'. Otherwise index registers of backends may not increase.
>
> Signed-off-by: Corey Minyard <[email protected]>
> Tested-by: Andrew Manley <[email protected]>
> Reviewed-by: Andrew Manley <[email protected]>
> Reviewed-by: Oleksij Rempel <[email protected]>
> [wsa: fixed comment and commit message to properly describe the case]
> Signed-off-by: Wolfram Sang <[email protected]>

is this a fix?

Andi

> ---
>
> Changes since v2:
> * updated commit message and comment
>
> In the stalled discussion[1], it seems I couldn't make my suggestions
> clear. So, here are the changes how I meant them. I hope this can be
> agreed on.
>
> [1] http://patchwork.ozlabs.org/project/linux-i2c/patch/[email protected]/
>
> drivers/i2c/busses/i2c-imx.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 88a053987403..60e813137f84 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -803,6 +803,11 @@ static irqreturn_t i2c_imx_slave_handle(struct imx_i2c_struct *i2c_imx,
> ctl &= ~I2CR_MTX;
> imx_i2c_write_reg(ctl, i2c_imx, IMX_I2C_I2CR);
> imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR);
> +
> + /* flag the last byte as processed */
> + i2c_imx_slave_event(i2c_imx,
> + I2C_SLAVE_READ_PROCESSED, &value);
> +
> i2c_imx_slave_finish_op(i2c_imx);
> return IRQ_HANDLED;
> }
> --
> 2.43.0
>

2024-02-21 22:55:11

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

On Wed, Feb 21, 2024 at 09:58:23PM +0100, Andi Shyti wrote:
> Hi Wolfram and Corey,
>
> On Wed, Feb 21, 2024 at 08:27:13PM +0100, Wolfram Sang wrote:
> > From: Corey Minyard <[email protected]>
> >
> > When being a target, NAK from the controller means that all bytes have
> > been transferred. So, the last byte needs also to be marked as
> > 'processed'. Otherwise index registers of backends may not increase.
> >
> > Signed-off-by: Corey Minyard <[email protected]>
> > Tested-by: Andrew Manley <[email protected]>
> > Reviewed-by: Andrew Manley <[email protected]>
> > Reviewed-by: Oleksij Rempel <[email protected]>
> > [wsa: fixed comment and commit message to properly describe the case]
> > Signed-off-by: Wolfram Sang <[email protected]>
>
> is this a fix?

In deed, it is:

Fixes: f7414cd6923f ("i2c: imx: support slave mode for imx I2C driver")


Attachments:
(No filename) (926.00 B)
signature.asc (849.00 B)
Download all attachments

2024-02-22 07:56:28

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

Hi Wolfram,

On Wed, Feb 21, 2024 at 11:54:54PM +0100, Wolfram Sang wrote:
> On Wed, Feb 21, 2024 at 09:58:23PM +0100, Andi Shyti wrote:
> > Hi Wolfram and Corey,
> >
> > On Wed, Feb 21, 2024 at 08:27:13PM +0100, Wolfram Sang wrote:
> > > From: Corey Minyard <[email protected]>
> > >
> > > When being a target, NAK from the controller means that all bytes have
> > > been transferred. So, the last byte needs also to be marked as
> > > 'processed'. Otherwise index registers of backends may not increase.
> > >
> > > Signed-off-by: Corey Minyard <[email protected]>
> > > Tested-by: Andrew Manley <[email protected]>
> > > Reviewed-by: Andrew Manley <[email protected]>
> > > Reviewed-by: Oleksij Rempel <[email protected]>
> > > [wsa: fixed comment and commit message to properly describe the case]
> > > Signed-off-by: Wolfram Sang <[email protected]>
> >
> > is this a fix?
>
> In deed, it is:
>
> Fixes: f7414cd6923f ("i2c: imx: support slave mode for imx I2C driver")

Looks good :)
Are any action needed on my side?

Regards,
Oleksij
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

2024-02-22 08:07:49

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

On Thu, Feb 22, 2024 at 08:56:00AM +0100, Oleksij Rempel wrote:

> > > > When being a target, NAK from the controller means that all bytes have
> > > > been transferred. So, the last byte needs also to be marked as
> > > > 'processed'. Otherwise index registers of backends may not increase.
> > > >
> > > > Signed-off-by: Corey Minyard <[email protected]>
> > > > Tested-by: Andrew Manley <[email protected]>
> > > > Reviewed-by: Andrew Manley <[email protected]>
> > > > Reviewed-by: Oleksij Rempel <[email protected]>
> > > > [wsa: fixed comment and commit message to properly describe the case]
> > > > Signed-off-by: Wolfram Sang <[email protected]>
> > >
> > > is this a fix?
> >
> > In deed, it is:
> >
> > Fixes: f7414cd6923f ("i2c: imx: support slave mode for imx I2C driver")
>
> Looks good :)
> Are any action needed on my side?

Nope. All tags are still valid, I'd say, because I didn't change any code.

Thanks!


Attachments:
(No filename) (0.98 kB)
signature.asc (849.00 B)
Download all attachments

2024-02-22 10:03:19

by Andi Shyti

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: imx: when being a target, mark the last read as processed

Hi

On Wed, 21 Feb 2024 20:27:13 +0100, Wolfram Sang wrote:
> When being a target, NAK from the controller means that all bytes have
> been transferred. So, the last byte needs also to be marked as
> 'processed'. Otherwise index registers of backends may not increase.
>
>

Applied to i2c/i2c-host-fixes on

git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git

Thank you,
Andi

Patches applied
===============
[1/1] i2c: imx: when being a target, mark the last read as processed
commit: cf8281b1aeab93a03c87033a741075c39ace80d4