Commit f6cef5f8 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 906a93be 8f06fb45
...@@ -57,7 +57,7 @@ examples: ...@@ -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 ...@@ -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: | ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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) ...@@ -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, ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment