linux-stable/drivers/i3c
Frank Li f36f6624cb i3c: master: svc: use spin_lock_irqsave at svc_i3c_master_ibi_work()
According to I3C spec ver 1.1, 09-Jun-2021, section 5.1.2.5:

The I3C Controller shall hold SCL low while the Bus is in ACK/NACK Phase of
I3C/I2C transfer. But maximum stall time is 100us. The IRQs have to be
disabled to prevent schedule during the whole I3C transaction, otherwise,
the I3C bus timeout may happen if any irq or schedule happen during
transaction.

Replace mutex with spin_lock_irqsave() to avoid stalling SCL more than
100us.

Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20241002-svc-i3c-hj-v6-4-7e6e1d3569ae@nxp.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2024-10-31 23:53:39 +01:00
..
master i3c: master: svc: use spin_lock_irqsave at svc_i3c_master_ibi_work() 2024-10-31 23:53:39 +01:00
device.c i3c: Add comment for -EAGAIN in i3c_device_do_priv_xfers() 2024-05-23 00:29:19 +02:00
internals.h i3c: master: Enhance i3c_bus_type visibility for device searching & event monitoring 2024-07-26 14:21:30 +02:00
Kconfig i3c: Add core I3C infrastructure 2018-11-12 10:33:49 +01:00
Makefile i3c: Add core I3C infrastructure 2018-11-12 10:33:49 +01:00
master.c i3c: master: Fix dynamic address leak when 'assigned-address' is present 2024-10-31 23:51:00 +01:00