]> www.infradead.org Git - users/hch/misc.git/commitdiff
i3c: master: svc: Fix missing the IBI rules
authorStanley Chu <yschu@nuvoton.com>
Tue, 18 Mar 2025 05:36:04 +0000 (13:36 +0800)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 18 Mar 2025 16:14:35 +0000 (17:14 +0100)
The code does not add IBI rules for devices with controller capability.
However, the secondary controller has the controller capability and works
at target mode when the device is probed. Therefore, add IBI rules for
such devices.

Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Signed-off-by: Stanley Chu <yschu@nuvoton.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20250318053606.3087121-2-yschu@nuvoton.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/svc-i3c-master.c

index 1d1f351b9a855e7492c38fcab9ebba2fdb017004..a72ba5a7edd4b6aa1c48f4744a2424606ceed3da 100644 (file)
@@ -1106,7 +1106,7 @@ static int svc_i3c_update_ibirules(struct svc_i3c_master *master)
 
        /* Create the IBIRULES register for both cases */
        i3c_bus_for_each_i3cdev(&master->base.bus, dev) {
-               if (I3C_BCR_DEVICE_ROLE(dev->info.bcr) == I3C_BCR_I3C_MASTER)
+               if (!(dev->info.bcr & I3C_BCR_IBI_REQ_CAP))
                        continue;
 
                if (dev->info.bcr & I3C_BCR_IBI_PAYLOAD) {