diff options
| author | Jisheng Zhang <jszhang@kernel.org> | 2026-08-19 12:48:33 +0800 |
|---|---|---|
| committer | Alexandre Belloni <alexandre.belloni@bootlin.com> | 2026-08-19 09:28:33 +0200 |
| commit | cab40cfc9e116acd4d60f95b4b1264cab78f3803 (patch) | |
| tree | b1859733a70af4c840853704da12d1b20f7e4d83 /scripts/objdiff | |
| parent | 455b454c87bb01ffcebe0e0c09303d6af685bd2a (diff) | |
| download | linux-cab40cfc9e116acd4d60f95b4b1264cab78f3803.tar.gz linux-cab40cfc9e116acd4d60f95b4b1264cab78f3803.zip | |
i3c: dw: reduce do_daa time if there's no client
dw_i3c_master_daa() derives the number of newly assigned dynamic
addresses from cmd->rx_len, the ISR sets it to the number of address
slots ENTDAA left unassigned. It starts out as zero, which already
means "every address was assigned", so a timed out transfer leaves
that value in place and it gets used as a result.
If there's no client connected, the addr assign cmd times out, then
the driver calls i3c_master_add_i3c_dev_locked() to add devices that
are not there, each costing about 1s, thus adds non necessary boot
time up to (maxdev * 1)s.
Start from maxdevs instead: no address is assigned before ENTDAA runs,
and the existing rx_count >= maxdevs check then reports an empty bus.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260819044833.32611-1-jszhang@kernel.org
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'scripts/objdiff')
0 files changed, 0 insertions, 0 deletions
