[PATCH v1 2/2] i3c: master: svc: Emit STOP asap in the IBI transaction

Stanley Chu posted 2 patches 8 months, 1 week ago
[PATCH v1 2/2] i3c: master: svc: Emit STOP asap in the IBI transaction
Posted by Stanley Chu 8 months, 1 week ago
From: Stanley Chu <yschu@nuvoton.com>

Queuing the IBI request does not need to be done earlier than emitting
the STOP. Emitting STOP immediately after receiving the IBI request can
complete the IBI transaction earlier and return the bus to idle.

Signed-off-by: Stanley Chu <yschu@nuvoton.com>
---
 drivers/i3c/master/svc-i3c-master.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index 7ceaf3ec45bb..9b23239ad8db 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -577,11 +577,11 @@ static void svc_i3c_master_ibi_isr(struct svc_i3c_master *master)
 	/* Handle the non critical tasks */
 	switch (ibitype) {
 	case SVC_I3C_MSTATUS_IBITYPE_IBI:
+		svc_i3c_master_emit_stop(master);
 		if (dev) {
 			i3c_master_queue_ibi(dev, master->ibi.tbq_slot);
 			master->ibi.tbq_slot = NULL;
 		}
-		svc_i3c_master_emit_stop(master);
 		break;
 	case SVC_I3C_MSTATUS_IBITYPE_HOT_JOIN:
 		svc_i3c_master_emit_stop(master);
-- 
2.34.1
Re: [PATCH v1 2/2] i3c: master: svc: Emit STOP asap in the IBI transaction
Posted by Frank Li 8 months, 1 week ago
On Tue, Apr 15, 2025 at 01:18:08PM +0800, Stanley Chu wrote:
> From: Stanley Chu <yschu@nuvoton.com>
>
> Queuing the IBI request does not need to be done earlier than emitting
> the STOP. Emitting STOP immediately after receiving the IBI request can
> complete the IBI transaction earlier and return the bus to idle.
>
> Signed-off-by: Stanley Chu <yschu@nuvoton.com>

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> ---
>  drivers/i3c/master/svc-i3c-master.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
> index 7ceaf3ec45bb..9b23239ad8db 100644
> --- a/drivers/i3c/master/svc-i3c-master.c
> +++ b/drivers/i3c/master/svc-i3c-master.c
> @@ -577,11 +577,11 @@ static void svc_i3c_master_ibi_isr(struct svc_i3c_master *master)
>  	/* Handle the non critical tasks */
>  	switch (ibitype) {
>  	case SVC_I3C_MSTATUS_IBITYPE_IBI:
> +		svc_i3c_master_emit_stop(master);
>  		if (dev) {
>  			i3c_master_queue_ibi(dev, master->ibi.tbq_slot);
>  			master->ibi.tbq_slot = NULL;
>  		}
> -		svc_i3c_master_emit_stop(master);
>  		break;
>  	case SVC_I3C_MSTATUS_IBITYPE_HOT_JOIN:
>  		svc_i3c_master_emit_stop(master);
> --
> 2.34.1
>