]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
i3c: master: svc: Emit STOP asap in the IBI transaction
authorStanley Chu <yschu@nuvoton.com>
Tue, 15 Apr 2025 05:18:08 +0000 (13:18 +0800)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 15 May 2025 09:53:01 +0000 (11:53 +0200)
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>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/r/20250415051808.88091-3-yschu@nuvoton.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/svc-i3c-master.c

index 7ceaf3ec45bb362de05871f971a38a4debf68849..9b23239ad8db173b84a19fb3ff3bc9b77416eb21 100644 (file)
@@ -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);