[PATCH] arch/riscv/dts: Fix uart reg-shift on fu540/fu740 SiFive devices

Alexander von Gluck IV kallisti5 at unixzen.com
Tue Jan 24 03:08:18 CET 2023


* Not specifying reg-shift creates a situation where the register
  shift is unknown and can only be decoded via special compat
  cases.
* The device tree specification states:
  "...reg-shift.  If unspecified, the default value is 0."
  https://devicetree-specification.readthedocs.io/en/latest/chapter4-device-bindings.html
* Since the reg-shift for the SiFive boards is *NOT* 0, it shall
  be defined as 2
---
 arch/riscv/dts/fu540-c000.dtsi | 1 +
 arch/riscv/dts/fu740-c000.dtsi | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/arch/riscv/dts/fu540-c000.dtsi b/arch/riscv/dts/fu540-c000.dtsi
index 7db8610534..0bea8cf1e5 100644
--- a/arch/riscv/dts/fu540-c000.dtsi
+++ b/arch/riscv/dts/fu540-c000.dtsi
@@ -161,6 +161,7 @@
 		uart0: serial at 10010000 {
 			compatible = "sifive,fu540-c000-uart", "sifive,uart0";
 			reg = <0x0 0x10010000 0x0 0x1000>;
+			reg-shift = <2>;
 			interrupt-parent = <&plic0>;
 			interrupts = <4>;
 			clocks = <&prci PRCI_CLK_TLCLK>;
diff --git a/arch/riscv/dts/fu740-c000.dtsi b/arch/riscv/dts/fu740-c000.dtsi
index 7b77c13496..19da3709f0 100644
--- a/arch/riscv/dts/fu740-c000.dtsi
+++ b/arch/riscv/dts/fu740-c000.dtsi
@@ -164,6 +164,7 @@
 		uart0: serial at 10010000 {
 			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
 			reg = <0x0 0x10010000 0x0 0x1000>;
+			reg-shift = <2>;
 			interrupt-parent = <&plic0>;
 			interrupts = <39>;
 			clocks = <&prci FU740_PRCI_CLK_PCLK>;
@@ -172,6 +173,7 @@
 		uart1: serial at 10011000 {
 			compatible = "sifive,fu740-c000-uart", "sifive,uart0";
 			reg = <0x0 0x10011000 0x0 0x1000>;
+			reg-shift = <2>;
 			interrupt-parent = <&plic0>;
 			interrupts = <40>;
 			clocks = <&prci FU740_PRCI_CLK_PCLK>;
-- 
2.39.1



More information about the U-Boot mailing list