2020-11-12 05:45:11

by Nishanth Menon

[permalink] [raw]
Subject: [PATCH V2 0/5] arm64: dts: ti: Cleanup mix of "okay" and "disabled" usage

Hi,

Changes since v1[1]:
- Picked up Reviews from Tomi
- Added patch #5 for moving uart used by firmware to 'reserved'
state (thanks Peter for pointing it out)
- Updated commit message of #1, #2 to add information about the
limitation as well (thanks Peter for your inputs).

This is hopefully a conclusion of the thread we had
(online[2] and offline). There are few options one could take when
dealing with SoC dtsi and board dts

a. SoC dtsi provide nodes as a super-set default (aka enabled) state and
to prevent messy board files, when more boards are added per SoC, we
optimize and disable commonly un-used nodes in board-common.dtsi
b. SoC dtsi disables all hardware dependent nodes by default and board
dts files enable nodes based on a need basis.
c. Subjectively pick and choose which nodes we will disable by default
in SoC dtsi and over the years we can optimize things and change
default state depending on the need.

While there are pros and cons on each of these approaches, the right
thing to do will be to stick with device tree default standards and
work within those established rules. So, we choose to go with option
(a).

NOTE: There is a known risk of "omission" that new board dts
developers might miss reviewing both the board schematics in addition
to all the dt nodes of the SoC when setting appropriate nodes status
to "disable" or "reserved" in the board dts. This can expose issues in
drivers which may not anticipate an incomplete node(example: missing
appropriate board properties) being in "okay" state. These cases are
considered as bugs and need to be fixed in the drivers as and when
identified.

The dtb changes are limited to be functionaly equivalent similar to what
was published with v1.

dtb-> dts decompiled
a) As of v5.10-rc1:
am654: https://pastebin.ubuntu.com/p/G4P5vghpV3/
j721e: https://pastebin.ubuntu.com/p/HWXmTwD6m8/
j7200: https://pastebin.ubuntu.com/p/SsG6JtPzR9/

b) with this series applied:
am654: https://pastebin.ubuntu.com/p/pGdpbPQvyd/
j721e: https://pastebin.ubuntu.com/p/PWcNMdtj5J/
j7200: https://pastebin.ubuntu.com/p/NFxpNtyNr9/

Boot test logs(base v5.10-rc1):
am654: https://pastebin.ubuntu.com/p/pNngXcWy23/
j721e: https://pastebin.ubuntu.com/p/xjbXkHb7Gv/
j7200: https://pastebin.ubuntu.com/p/dn7MgfJJ2j/

Nishanth Menon (5):
arm64: dts: ti: k3-am65*: Cleanup disabled nodes at SoC dtsi level
arm64: dts: ti: k3-j721e*: Cleanup disabled nodes at SoC dtsi level
arm64: dts: ti: am65/j721e: Fix up un-necessary status set to "okay"
for crypto
arm64: dts: ti: k3-am654-base-board: Fix up un-necessary status set to
"okay" for USB
arm64: dts: ti: am65/j721e/j7200: Mark firmware used uart as
"reserved"

arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 9 ----
.../arm64/boot/dts/ti/k3-am654-base-board.dts | 26 ++++++----
.../dts/ti/k3-j7200-common-proc-board.dts | 4 +-
.../dts/ti/k3-j721e-common-proc-board.dts | 50 ++++++++++++++++++-
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 28 -----------
5 files changed, 67 insertions(+), 50 deletions(-)

[1] https://lore.kernel.org/linux-arm-kernel/[email protected]/
[2] https://lore.kernel.org/linux-arm-kernel/[email protected]/
--
2.29.2


2020-11-12 05:45:15

by Nishanth Menon

[permalink] [raw]
Subject: [PATCH V2 4/5] arm64: dts: ti: k3-am654-base-board: Fix up un-necessary status set to "okay" for USB

The default state of a device tree node is "okay". There is no specific
use of explicitly adding status = "okay" in the board dts.

Fixes: 7e7e7dd51d06 ("arm64: dts: ti: k3-am654-base-board: enable USB1")
Signed-off-by: Nishanth Menon <[email protected]>
Cc: Roger Quadros <[email protected]>
---
Changes since v1:
- no change.

v1: https://lore.kernel.org/linux-arm-kernel/[email protected]/

arch/arm64/boot/dts/ti/k3-am654-base-board.dts | 8 --------
1 file changed, 8 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
index 199c4d4e7539..744efcbb4f7f 100644
--- a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
+++ b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
@@ -325,14 +325,6 @@ &sdhci1 {
disable-wp;
};

-&dwc3_1 {
- status = "okay";
-};
-
-&usb1_phy {
- status = "okay";
-};
-
&usb1 {
pinctrl-names = "default";
pinctrl-0 = <&usb1_pins_default>;
--
2.29.2

2020-11-12 05:45:29

by Nishanth Menon

[permalink] [raw]
Subject: [PATCH V2 3/5] arm64: dts: ti: am65/j721e: Fix up un-necessary status set to "okay" for crypto

The default state of a device tree node is "okay". There is no specific
use of explicitly adding status = "okay" in the SoC dtsi.

Fixes: 8ebcaaae8017 ("arm64: dts: ti: k3-j721e-main: Add crypto accelerator node")
Fixes: b366b2409c97 ("arm64: dts: ti: k3-am6: Add crypto accelarator node")
Signed-off-by: Nishanth Menon <[email protected]>
Cc: Keerthy <[email protected]>
---
Changes since V1:
- No change.

V1: https://lore.kernel.org/linux-arm-kernel/[email protected]/

arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 1 -
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 2 --
2 files changed, 3 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
index 21e50021dd83..2bd66a9e4b1d 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
@@ -119,7 +119,6 @@ crypto: crypto@4e00000 {
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x04e00000 0x00 0x04e00000 0x0 0x30000>;
- status = "okay";

dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
<&main_udmap 0x4001>;
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
index b54332d6fdc5..9747c387385b 100644
--- a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
@@ -345,8 +345,6 @@ main_crypto: crypto@4e00000 {
#size-cells = <2>;
ranges = <0x0 0x04e00000 0x00 0x04e00000 0x0 0x30000>;

- status = "okay";
-
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
<&main_udmap 0x4001>;
dma-names = "tx", "rx1", "rx2";
--
2.29.2

2020-11-12 05:46:55

by Nishanth Menon

[permalink] [raw]
Subject: [PATCH V2 2/5] arm64: dts: ti: k3-j721e*: Cleanup disabled nodes at SoC dtsi level

The device tree standard states that when the status property is
not present under a node, the okay value is assumed. There are many
reasons for doing the same, the number of strings in the device
tree, default power management functionality, etc. are a few of the
reasons.

In general, after a few rounds of discussions [1] there are few
options one could take when dealing with SoC dtsi and board dts

a. SoC dtsi provide nodes as a super-set default (aka enabled) state and
to prevent messy board files, when more boards are added per SoC, we
optimize and disable commonly un-used nodes in board-common.dtsi
b. SoC dtsi disables all hardware dependent nodes by default and board
dts files enable nodes based on a need basis.
c. Subjectively pick and choose which nodes we will disable by default
in SoC dtsi and over the years we can optimize things and change
default state depending on the need.

While there are pros and cons on each of these approaches, the right
thing to do will be to stick with device tree default standards and
work within those established rules. So, we choose to go with option
(a).

Lets cleanup defaults of j721e SoC dtsi before this gets more harder
to cleanup later on and new SoCs are added.

The only functional difference between the dtb generated is
status='okay' is no longer necessary for mcasp10 and depends on the
default state.

NOTE: There is a known risk of omission that new board dts developers
might miss reviewing both the board schematics in addition to all the
DT nodes of the SoC when setting appropriate nodes status to disable
or reserved in the board dts. This can expose issues in drivers that
may not anticipate an incomplete node (example: missing appropriate
board properties) being in an "okay" state. These cases are considered
bugs and need to be fixed in the drivers as and when identified.

[1] https://lore.kernel.org/linux-arm-kernel/[email protected]/

Fixes: 1c4d35265fb2 ("arm64: dts: ti: k3-j721e-main: Add McASP nodes")
Fixes: 76921f15acc0 ("arm64: dts: ti: k3-j721e-main: Add DSS node")
Signed-off-by: Nishanth Menon <[email protected]>
Reviewed-by: Tomi Valkeinen <[email protected]>
Cc: Jyri Sarha <[email protected]>
Cc: Tomi Valkeinen <[email protected]>
Cc: Peter Ujfalusi <[email protected]>
Cc: Tony Lindgren <[email protected]>
---
Changes since v1:
- commit message update

V1: https://lore.kernel.org/linux-arm-kernel/[email protected]/
.../dts/ti/k3-j721e-common-proc-board.dts | 48 ++++++++++++++++++-
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 26 ----------
2 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
index 52e121155563..9416528caa8a 100644
--- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
+++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
@@ -540,6 +540,46 @@ &dss {
<&k3_clks 152 18>; /* PLL23_HSDIV0 */
};

+&mcasp0 {
+ status = "disabled";
+};
+
+&mcasp1 {
+ status = "disabled";
+};
+
+&mcasp2 {
+ status = "disabled";
+};
+
+&mcasp3 {
+ status = "disabled";
+};
+
+&mcasp4 {
+ status = "disabled";
+};
+
+&mcasp5 {
+ status = "disabled";
+};
+
+&mcasp6 {
+ status = "disabled";
+};
+
+&mcasp7 {
+ status = "disabled";
+};
+
+&mcasp8 {
+ status = "disabled";
+};
+
+&mcasp9 {
+ status = "disabled";
+};
+
&mcasp10 {
#sound-dai-cells = <0>;

@@ -556,8 +596,10 @@ &mcasp10 {
>;
tx-num-evt = <0>;
rx-num-evt = <0>;
+};

- status = "okay";
+&mcasp11 {
+ status = "disabled";
};

&serdes0 {
@@ -639,3 +681,7 @@ &pcie3_rc {
&pcie3_ep {
status = "disabled";
};
+
+&dss {
+ status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
index e2a96b2c423c..b54332d6fdc5 100644
--- a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
@@ -1327,8 +1327,6 @@ dss: dss@04a00000 {
"common_s1",
"common_s2";

- status = "disabled";
-
dss_ports: ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -1350,8 +1348,6 @@ mcasp0: mcasp@2b00000 {
clocks = <&k3_clks 174 1>;
clock-names = "fck";
power-domains = <&k3_pds 174 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp1: mcasp@2b10000 {
@@ -1369,8 +1365,6 @@ mcasp1: mcasp@2b10000 {
clocks = <&k3_clks 175 1>;
clock-names = "fck";
power-domains = <&k3_pds 175 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp2: mcasp@2b20000 {
@@ -1388,8 +1382,6 @@ mcasp2: mcasp@2b20000 {
clocks = <&k3_clks 176 1>;
clock-names = "fck";
power-domains = <&k3_pds 176 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp3: mcasp@2b30000 {
@@ -1407,8 +1399,6 @@ mcasp3: mcasp@2b30000 {
clocks = <&k3_clks 177 1>;
clock-names = "fck";
power-domains = <&k3_pds 177 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp4: mcasp@2b40000 {
@@ -1426,8 +1416,6 @@ mcasp4: mcasp@2b40000 {
clocks = <&k3_clks 178 1>;
clock-names = "fck";
power-domains = <&k3_pds 178 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp5: mcasp@2b50000 {
@@ -1445,8 +1433,6 @@ mcasp5: mcasp@2b50000 {
clocks = <&k3_clks 179 1>;
clock-names = "fck";
power-domains = <&k3_pds 179 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp6: mcasp@2b60000 {
@@ -1464,8 +1450,6 @@ mcasp6: mcasp@2b60000 {
clocks = <&k3_clks 180 1>;
clock-names = "fck";
power-domains = <&k3_pds 180 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp7: mcasp@2b70000 {
@@ -1483,8 +1467,6 @@ mcasp7: mcasp@2b70000 {
clocks = <&k3_clks 181 1>;
clock-names = "fck";
power-domains = <&k3_pds 181 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp8: mcasp@2b80000 {
@@ -1502,8 +1484,6 @@ mcasp8: mcasp@2b80000 {
clocks = <&k3_clks 182 1>;
clock-names = "fck";
power-domains = <&k3_pds 182 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp9: mcasp@2b90000 {
@@ -1521,8 +1501,6 @@ mcasp9: mcasp@2b90000 {
clocks = <&k3_clks 183 1>;
clock-names = "fck";
power-domains = <&k3_pds 183 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp10: mcasp@2ba0000 {
@@ -1540,8 +1518,6 @@ mcasp10: mcasp@2ba0000 {
clocks = <&k3_clks 184 1>;
clock-names = "fck";
power-domains = <&k3_pds 184 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

mcasp11: mcasp@2bb0000 {
@@ -1559,8 +1535,6 @@ mcasp11: mcasp@2bb0000 {
clocks = <&k3_clks 185 1>;
clock-names = "fck";
power-domains = <&k3_pds 185 TI_SCI_PD_EXCLUSIVE>;
-
- status = "disabled";
};

watchdog0: watchdog@2200000 {
--
2.29.2

2020-11-12 13:03:51

by Roger Quadros

[permalink] [raw]
Subject: Re: [PATCH V2 4/5] arm64: dts: ti: k3-am654-base-board: Fix up un-necessary status set to "okay" for USB

On 12/11/2020 03:49, Nishanth Menon wrote:
> The default state of a device tree node is "okay". There is no specific
> use of explicitly adding status = "okay" in the board dts.
>
> Fixes: 7e7e7dd51d06 ("arm64: dts: ti: k3-am654-base-board: enable USB1")
> Signed-off-by: Nishanth Menon <[email protected]>
> Cc: Roger Quadros <[email protected]>

Acked-by: Roger Quadros <[email protected]>

cheers,
-roger
> ---
> Changes since v1:
> - no change.
>
> v1: https://lore.kernel.org/linux-arm-kernel/[email protected]/
>
> arch/arm64/boot/dts/ti/k3-am654-base-board.dts | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
> index 199c4d4e7539..744efcbb4f7f 100644
> --- a/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am654-base-board.dts
> @@ -325,14 +325,6 @@ &sdhci1 {
> disable-wp;
> };
>
> -&dwc3_1 {
> - status = "okay";
> -};
> -
> -&usb1_phy {
> - status = "okay";
> -};
> -
> &usb1 {
> pinctrl-names = "default";
> pinctrl-0 = <&usb1_pins_default>;
>

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

2020-11-12 13:36:39

by Tero Kristo

[permalink] [raw]
Subject: Re: [PATCH V2 3/5] arm64: dts: ti: am65/j721e: Fix up un-necessary status set to "okay" for crypto

On 12/11/2020 03:49, Nishanth Menon wrote:
> The default state of a device tree node is "okay". There is no specific
> use of explicitly adding status = "okay" in the SoC dtsi.
>
> Fixes: 8ebcaaae8017 ("arm64: dts: ti: k3-j721e-main: Add crypto accelerator node")
> Fixes: b366b2409c97 ("arm64: dts: ti: k3-am6: Add crypto accelarator node")
> Signed-off-by: Nishanth Menon <[email protected]>
> Cc: Keerthy <[email protected]>

Acked-by: Tero Kristo <[email protected]>

> ---
> Changes since V1:
> - No change.
>
> V1: https://lore.kernel.org/linux-arm-kernel/[email protected]/
>
> arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 1 -
> arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 2 --
> 2 files changed, 3 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
> index 21e50021dd83..2bd66a9e4b1d 100644
> --- a/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am65-main.dtsi
> @@ -119,7 +119,6 @@ crypto: crypto@4e00000 {
> #address-cells = <2>;
> #size-cells = <2>;
> ranges = <0x0 0x04e00000 0x00 0x04e00000 0x0 0x30000>;
> - status = "okay";
>
> dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
> <&main_udmap 0x4001>;
> diff --git a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
> index b54332d6fdc5..9747c387385b 100644
> --- a/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
> @@ -345,8 +345,6 @@ main_crypto: crypto@4e00000 {
> #size-cells = <2>;
> ranges = <0x0 0x04e00000 0x00 0x04e00000 0x0 0x30000>;
>
> - status = "okay";
> -
> dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
> <&main_udmap 0x4001>;
> dma-names = "tx", "rx1", "rx2";
>

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

2020-11-12 14:21:49

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH V2 3/5] arm64: dts: ti: am65/j721e: Fix up un-necessary status set to "okay" for crypto

* Tero Kristo <[email protected]> [201112 13:34]:
> On 12/11/2020 03:49, Nishanth Menon wrote:
> > The default state of a device tree node is "okay". There is no specific
> > use of explicitly adding status = "okay" in the SoC dtsi.
> >
> > Fixes: 8ebcaaae8017 ("arm64: dts: ti: k3-j721e-main: Add crypto accelerator node")
> > Fixes: b366b2409c97 ("arm64: dts: ti: k3-am6: Add crypto accelarator node")
> > Signed-off-by: Nishanth Menon <[email protected]>
> > Cc: Keerthy <[email protected]>
>
> Acked-by: Tero Kristo <[email protected]>

Reviewed-by: Tony Lindgren <[email protected]>

2020-11-12 14:23:15

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH V2 4/5] arm64: dts: ti: k3-am654-base-board: Fix up un-necessary status set to "okay" for USB

* Roger Quadros <[email protected]> [201112 13:01]:
> On 12/11/2020 03:49, Nishanth Menon wrote:
> > The default state of a device tree node is "okay". There is no specific
> > use of explicitly adding status = "okay" in the board dts.
> >
> > Fixes: 7e7e7dd51d06 ("arm64: dts: ti: k3-am654-base-board: enable USB1")
> > Signed-off-by: Nishanth Menon <[email protected]>
> > Cc: Roger Quadros <[email protected]>
>
> Acked-by: Roger Quadros <[email protected]>

Reviewed-by: Tony Lindgren <[email protected]>

2020-11-12 14:23:31

by Tony Lindgren

[permalink] [raw]
Subject: Re: [PATCH V2 2/5] arm64: dts: ti: k3-j721e*: Cleanup disabled nodes at SoC dtsi level

* Nishanth Menon <[email protected]> [201112 01:49]:
> The device tree standard states that when the status property is
> not present under a node, the okay value is assumed. There are many
> reasons for doing the same, the number of strings in the device
> tree, default power management functionality, etc. are a few of the
> reasons.

Reviewed-by: Tony Lindgren <[email protected]>