]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:39:25 +0000 (14:39 +0200)
[ Upstream commit 9cecad134d84d14dc72a0eea7a107691c3e5a837 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/i3c/master/svc-i3c-master.c

index 565af3759813bd829f77d213df2aae5562b94562..87f98fa8afd582fe3f3f3f0f286196ce49207d70 100644 (file)
@@ -990,7 +990,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) {