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:
@@ -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>;
|
||||
|
||||
@@ -41,7 +41,7 @@ unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i3c-master@d040000 {
|
||||
i3c@d040000 {
|
||||
compatible = "cdns,i3c-master";
|
||||
clocks = <&coreclock>, <&i3csysclock>;
|
||||
clock-names = "pclk", "sysclk";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -43,7 +43,7 @@ unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i3c-master@a0000000 {
|
||||
i3c@a0000000 {
|
||||
compatible = "mipi-i3c-hci";
|
||||
reg = <0xa0000000 0x2000>;
|
||||
interrupts = <89>;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user