Message ID | 20240506164009.21375-1-Frank.Li@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/3] i3c: Add comment for -EAGAIN in i3c_device_do_priv_xfers() | expand |
Hi Frank, Frank.Li@nxp.com wrote on Mon, 6 May 2024 12:40:07 -0400: > In accordance with I3C spec ver 1.1.1 09-Jun-2021, section: 5.1.2.2.3, if > a target requests hot join (HJ), In-Band Interrupt (IBI), or controller > role request (CRR) during the emission of an I3C address in > i3c_device_do_priv_xfers(), the target may win bus arbitration. In such > cases, it is imperative to notify the I3C client driver and retry > i3c_device_do_priv_xfers() after some delay. > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > > Notes: > Change from v1 to v2 > - new patch > > drivers/i3c/device.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c > index 1a6a8703dbc3a..b04a55a1337d4 100644 > --- a/drivers/i3c/device.c > +++ b/drivers/i3c/device.c > @@ -27,6 +27,10 @@ > * This function can sleep and thus cannot be called in atomic context. > * > * Return: 0 in case of success, a negative error core otherwise. > + * -EAGAIN: controller lost address arbitration. Target > + * (IBI, HJ or controller role request) win the bus. Client > + * driver need resend this 'xfers' some time later. needs to resend the 'xfers' > + * See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3. > */ > int i3c_device_do_priv_xfers(struct i3c_device *dev, > struct i3c_priv_xfer *xfers, With this little nit, Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Thanks, Miquèl
On Mon, 06 May 2024 12:40:07 -0400, Frank Li wrote: > In accordance with I3C spec ver 1.1.1 09-Jun-2021, section: 5.1.2.2.3, if > a target requests hot join (HJ), In-Band Interrupt (IBI), or controller > role request (CRR) during the emission of an I3C address in > i3c_device_do_priv_xfers(), the target may win bus arbitration. In such > cases, it is imperative to notify the I3C client driver and retry > i3c_device_do_priv_xfers() after some delay. > > [...] Applied, thanks! [1/3] i3c: Add comment for -EAGAIN in i3c_device_do_priv_xfers() https://git.kernel.org/abelloni/c/5e45614ef8ae [2/3] i3c: master: svc: change ENXIO to EAGAIN when IBI occurs during start frame https://git.kernel.org/abelloni/c/75cb32046b5d [3/3] i3c: master: svc: fix invalidate IBI type and miss call client IBI handler https://git.kernel.org/abelloni/c/677a7b0e3ae4 Best regards,
diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c index 1a6a8703dbc3a..b04a55a1337d4 100644 --- a/drivers/i3c/device.c +++ b/drivers/i3c/device.c @@ -27,6 +27,10 @@ * This function can sleep and thus cannot be called in atomic context. * * Return: 0 in case of success, a negative error core otherwise. + * -EAGAIN: controller lost address arbitration. Target + * (IBI, HJ or controller role request) win the bus. Client + * driver need resend this 'xfers' some time later. + * See I3C spec ver 1.1.1 09-Jun-2021. Section: 5.1.2.2.3. */ int i3c_device_do_priv_xfers(struct i3c_device *dev, struct i3c_priv_xfer *xfers,
In accordance with I3C spec ver 1.1.1 09-Jun-2021, section: 5.1.2.2.3, if a target requests hot join (HJ), In-Band Interrupt (IBI), or controller role request (CRR) during the emission of an I3C address in i3c_device_do_priv_xfers(), the target may win bus arbitration. In such cases, it is imperative to notify the I3C client driver and retry i3c_device_do_priv_xfers() after some delay. Signed-off-by: Frank Li <Frank.Li@nxp.com> --- Notes: Change from v1 to v2 - new patch drivers/i3c/device.c | 4 ++++ 1 file changed, 4 insertions(+)