i3c: master: svc: Receive IBI requests in interrupt context
authorStanley Chu <yschu@nuvoton.com>
Tue, 15 Apr 2025 05:18:07 +0000 (13:18 +0800)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 15 May 2025 09:53:01 +0000 (11:53 +0200)
commit8d29fa6d921ca4f9f63f73598833e53ece1d3b4e
tree724fd43ffebb8aaf81c972ea9a7a4520a35cd7e0
parentbd916806632d1a22a10a30d5ab7cce549791a563
i3c: master: svc: Receive IBI requests in interrupt context

Moving the job from workqueue to ISR for two reasons.

1. Improve bus utilization.
If the requests are postponed to be received in the workqueue thread,
the SDA line remains low for a long time while the system loading is
high. During this period, the bus is not available for other targets
to raise requests.

2. Ensure prompt response to requests.
For timing-critical requests, the target may encouter a failure or the
event is missed if the request is not received in time.

IBI request is short, ISR can receive the data quickly and then queue a
work to handle it in the bottom half.

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-2-yschu@nuvoton.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/svc-i3c-master.c