I3C for 6.9

Core:
  - i3c_bus_type is now const
 
 Drivers:
  - dw: disabling IBI is only allowed when hot join and SIR are disabled
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEBqsFVZXh8s/0O5JiY6TcMGxwOjIFAmX3etgACgkQY6TcMGxw
 OjJgCw//YqIPDCo/LzDn60Mmqv4NkB/pgVD3FWsSWuerSTQZ3JnJSkzYzItmSevD
 YCaN3otg7y8wzy3mvRyhQgvD0Yhi4zftXavOGr6yM3Nf0yJgn6cuhaDXuPROlGN8
 Y1ccjvZYzr1RV3bEM4mio1CjDe/I9rxfxQV7fdug4rQLKQ0WnlMw9ok1disbQGBy
 0EYNGNDDLTuSMfAbnXf1ZCViApvz4Hlh1XLgmAfeeT07Zm41JDLzYrxwTm5Lg1NM
 EhM7HX2o+4O+oQfTJeBbNKOFdUciwEAVAdUZG1b7sBcVRnaFXWSvSMyOu8WDFQo6
 YT2db1oSjLtNR0iiAsE3Io3IlBWpoFlV1BPbdkiK9CL0ItWdH58iAPQPoeC8Cawg
 8MXpx1wOFoqMgzv0qQoU7fWGhJjrlhUlHDpT5kZxhhgoOCOWyGfo2nU/O/6O9kAe
 6xtrk/d0vQuI7ykzZU3B2DOVUsMv+nnsWHZprvPnLU0N/RFeE8DQJH5XDNPS1cOR
 1XbTyZ2i7D1QiWcnH8AFKJT8kLantVwVj3hMkKQ6CPwK0VegEmMk003B6JKivz3t
 m5/SDfPuM7lGmWLAoZsfJD1QRR0qwevEBXBo2ItAgVA5BBjpP7R5jMORo0xC01zL
 t2iIVnF3Qqv89Si7mpCvWEwFhi8OF9+ZMBwuQmh9GS50B3iQUR0=
 =BLQy
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2024-03-17 16:59:33 -07:00
commit f6cef5f8c3
9 changed files with 12 additions and 10 deletions

View File

@ -57,7 +57,7 @@ examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
i3c-master@2000 {
i3c@2000 {
compatible = "aspeed,ast2600-i3c";
reg = <0x2000 0x1000>;
#address-cells = <3>;

View File

@ -41,7 +41,7 @@ unevaluatedProperties: false
examples:
- |
i3c-master@d040000 {
i3c@d040000 {
compatible = "cdns,i3c-master";
clocks = <&coreclock>, <&i3csysclock>;
clock-names = "pclk", "sysclk";

View File

@ -17,7 +17,7 @@ description: |
properties:
$nodename:
pattern: "^i3c-master@[0-9a-f]+$"
pattern: "^i3c@[0-9a-f]+$"
"#address-cells":
const: 3
@ -153,7 +153,7 @@ additionalProperties: true
examples:
- |
i3c-master@d040000 {
i3c@d040000 {
compatible = "cdns,i3c-master";
clocks = <&coreclock>, <&i3csysclock>;
clock-names = "pclk", "sysclk";

View File

@ -43,7 +43,7 @@ unevaluatedProperties: false
examples:
- |
i3c-master@a0000000 {
i3c@a0000000 {
compatible = "mipi-i3c-hci";
reg = <0xa0000000 0x2000>;
interrupts = <89>;

View File

@ -48,7 +48,7 @@ unevaluatedProperties: false
examples:
- |
i3c-master@a0000000 {
i3c@a0000000 {
compatible = "silvaco,i3c-master-v1";
clocks = <&zynqmp_clk 71>, <&fclk>, <&sclk>;
clock-names = "pclk", "fast_clk", "slow_clk";

View File

@ -35,7 +35,7 @@ unevaluatedProperties: false
examples:
- |
i3c-master@2000 {
i3c@2000 {
compatible = "snps,dw-i3c-master-1.00a";
#address-cells = <3>;
#size-cells = <0>;

View File

@ -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);

View File

@ -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,

View File

@ -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);