diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-03-18 02:59:33 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-03-18 02:59:33 +0300 |
commit | f6cef5f8c37f58a3bc95b3754c3ae98e086631ca (patch) | |
tree | 21f888600754e5edf0c31c6a9535c6da46ce3d62 /drivers | |
parent | 906a93befec826475ab3d4facacc57a0b0a002a5 (diff) | |
parent | 8f06fb45853900b4deaa52e2a9e16f3d9550b011 (diff) | |
download | linux-f6cef5f8c37f58a3bc95b3754c3ae98e086631ca.tar.xz |
Merge tag 'i3c/for-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux
Pull i3c updates from Alexandre Belloni:
"Not much this cycle with only three patches.
Core:
- i3c_bus_type is now const
Drivers:
- dw: disabling IBI is only allowed when hot join and SIR are disabled"
* tag 'i3c/for-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
i3c: Make i3c_bus_type const
i3c: dw: Disable IBI IRQ depends on hot-join and SIR enabling
dt-bindings: i3c: drop "master" node name suffix
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i3c/internals.h | 2 | ||||
-rw-r--r-- | drivers/i3c/master.c | 2 | ||||
-rw-r--r-- | drivers/i3c/master/dw-i3c-master.c | 4 |
3 files changed, 5 insertions, 3 deletions
diff --git a/drivers/i3c/internals.h b/drivers/i3c/internals.h index 908a807badaf..4d99a3524171 100644 --- a/drivers/i3c/internals.h +++ b/drivers/i3c/internals.h @@ -10,7 +10,7 @@ #include <linux/i3c/master.h> -extern struct bus_type i3c_bus_type; +extern const struct bus_type i3c_bus_type; void i3c_bus_normaluse_lock(struct i3c_bus *bus); void i3c_bus_normaluse_unlock(struct i3c_bus *bus); diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 3afa530c5e32..f32c591ae325 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -335,7 +335,7 @@ static void i3c_device_remove(struct device *dev) i3c_device_free_ibi(i3cdev); } -struct bus_type i3c_bus_type = { +const struct bus_type i3c_bus_type = { .name = "i3c", .match = i3c_device_match, .probe = i3c_device_probe, diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index ef5751e91cc9..276153e10f5a 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -1163,8 +1163,10 @@ static void dw_i3c_master_set_sir_enabled(struct dw_i3c_master *master, global = reg == 0xffffffff; reg &= ~BIT(idx); } else { - global = reg == 0; + bool hj_rejected = !!(readl(master->regs + DEVICE_CTRL) & DEV_CTRL_HOT_JOIN_NACK); + reg |= BIT(idx); + global = (reg == 0xffffffff) && hj_rejected; } writel(reg, master->regs + IBI_SIR_REQ_REJECT); |