mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
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:
commit
f6cef5f8c3
9 changed files with 12 additions and 10 deletions
|
@ -57,7 +57,7 @@ examples:
|
||||||
- |
|
- |
|
||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
i3c-master@2000 {
|
i3c@2000 {
|
||||||
compatible = "aspeed,ast2600-i3c";
|
compatible = "aspeed,ast2600-i3c";
|
||||||
reg = <0x2000 0x1000>;
|
reg = <0x2000 0x1000>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
|
|
|
@ -41,7 +41,7 @@ unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i3c-master@d040000 {
|
i3c@d040000 {
|
||||||
compatible = "cdns,i3c-master";
|
compatible = "cdns,i3c-master";
|
||||||
clocks = <&coreclock>, <&i3csysclock>;
|
clocks = <&coreclock>, <&i3csysclock>;
|
||||||
clock-names = "pclk", "sysclk";
|
clock-names = "pclk", "sysclk";
|
||||||
|
|
|
@ -17,7 +17,7 @@ description: |
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
$nodename:
|
$nodename:
|
||||||
pattern: "^i3c-master@[0-9a-f]+$"
|
pattern: "^i3c@[0-9a-f]+$"
|
||||||
|
|
||||||
"#address-cells":
|
"#address-cells":
|
||||||
const: 3
|
const: 3
|
||||||
|
@ -153,7 +153,7 @@ additionalProperties: true
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i3c-master@d040000 {
|
i3c@d040000 {
|
||||||
compatible = "cdns,i3c-master";
|
compatible = "cdns,i3c-master";
|
||||||
clocks = <&coreclock>, <&i3csysclock>;
|
clocks = <&coreclock>, <&i3csysclock>;
|
||||||
clock-names = "pclk", "sysclk";
|
clock-names = "pclk", "sysclk";
|
||||||
|
|
|
@ -43,7 +43,7 @@ unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i3c-master@a0000000 {
|
i3c@a0000000 {
|
||||||
compatible = "mipi-i3c-hci";
|
compatible = "mipi-i3c-hci";
|
||||||
reg = <0xa0000000 0x2000>;
|
reg = <0xa0000000 0x2000>;
|
||||||
interrupts = <89>;
|
interrupts = <89>;
|
||||||
|
|
|
@ -48,7 +48,7 @@ unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i3c-master@a0000000 {
|
i3c@a0000000 {
|
||||||
compatible = "silvaco,i3c-master-v1";
|
compatible = "silvaco,i3c-master-v1";
|
||||||
clocks = <&zynqmp_clk 71>, <&fclk>, <&sclk>;
|
clocks = <&zynqmp_clk 71>, <&fclk>, <&sclk>;
|
||||||
clock-names = "pclk", "fast_clk", "slow_clk";
|
clock-names = "pclk", "fast_clk", "slow_clk";
|
||||||
|
|
|
@ -35,7 +35,7 @@ unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i3c-master@2000 {
|
i3c@2000 {
|
||||||
compatible = "snps,dw-i3c-master-1.00a";
|
compatible = "snps,dw-i3c-master-1.00a";
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#include <linux/i3c/master.h>
|
#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_lock(struct i3c_bus *bus);
|
||||||
void i3c_bus_normaluse_unlock(struct i3c_bus *bus);
|
void i3c_bus_normaluse_unlock(struct i3c_bus *bus);
|
||||||
|
|
|
@ -335,7 +335,7 @@ static void i3c_device_remove(struct device *dev)
|
||||||
i3c_device_free_ibi(i3cdev);
|
i3c_device_free_ibi(i3cdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct bus_type i3c_bus_type = {
|
const struct bus_type i3c_bus_type = {
|
||||||
.name = "i3c",
|
.name = "i3c",
|
||||||
.match = i3c_device_match,
|
.match = i3c_device_match,
|
||||||
.probe = i3c_device_probe,
|
.probe = i3c_device_probe,
|
||||||
|
|
|
@ -1163,8 +1163,10 @@ static void dw_i3c_master_set_sir_enabled(struct dw_i3c_master *master,
|
||||||
global = reg == 0xffffffff;
|
global = reg == 0xffffffff;
|
||||||
reg &= ~BIT(idx);
|
reg &= ~BIT(idx);
|
||||||
} else {
|
} else {
|
||||||
global = reg == 0;
|
bool hj_rejected = !!(readl(master->regs + DEVICE_CTRL) & DEV_CTRL_HOT_JOIN_NACK);
|
||||||
|
|
||||||
reg |= BIT(idx);
|
reg |= BIT(idx);
|
||||||
|
global = (reg == 0xffffffff) && hj_rejected;
|
||||||
}
|
}
|
||||||
writel(reg, master->regs + IBI_SIR_REQ_REJECT);
|
writel(reg, master->regs + IBI_SIR_REQ_REJECT);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue