2023-08-03 08:27:10

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 0/5] Enable Display for J784S4 and AM69-SK platform

This series adds support for:
- DisplayPort for J784S4-EVM
- Displayport and HDMI for AM69-SK platform

Changelog v8->v9:
- Fix compatible of serdes_ln_ctrl node
- Fix extra new lines across nodes
- Fix node-names to keep them generic

Changelog v7->v8:
- rebase on tag next-20230731
- add AM69 display support
- fix commit heading for patch [2/5]

Changelog v6->v7:
- change compatible for scm_conf to 'simple-bus'
- drop main_cpsw node due to driver dependency on [2]

Changelog v5->v6:
- Change header file according to [1].
- Add idle-state property in serdes_ln_ctrl node.
- Fix dtbs_check warning due to clock-frequency property in serdes_refclk
node by disabling the node in main.dtsi and enabling it in board file
when the clock-frequency node is actually added.

Changelog v4->v5:
- rebased the patches on linux-next tip.

Changelog v3->v4:
- add reg property to serdes_ln_ctrl and fix the node name again to
get rid of dtbs_check error.
- reorder reg, reg-names and ranges property for main_cpsw1.
- correct the order for clocks in serdes_wiz nodes to fix dtbs_check
warnings.
- fix indentation in reg, reg-names and clock property for dss node.
- add comments for the reg type in dss registers.

Changelog v3->v2:
- fix dtc warnings for 'scm_conf' and 'serdes_ln_ctrl' nodes
(Checked all the changes of the series with W=12 option during build)
- added clock-frequency for serdes_refclk along with other EVM changes
This refclk is being used by all the instances of serdes_wiz which
are disabled by default. So configuring refclk when the serdes nodes
are used for the first time is okay.

Changelog v1->v2:
- Moved J784S4 EVM changes together to the last patch
(Suggested by Andrew)

v8 patch link:
<https://lore.kernel.org/all/[email protected]/>

[1]: <https://lore.kernel.org/all/[email protected]/>
[2]: <https://lore.kernel.org/all/[email protected]/>

Dasnavis Sabiya (1):
arm64: dts: ti: k3-am69-sk: Add DP and HDMI support

Rahul T R (2):
arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node
arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

Siddharth Vadapalli (2):
arm64: dts: ti: k3-j784s4-main: Add system controller and SERDES lane
mux
arm64: dts: ti: k3-j784s4-main: Add WIZ and SERDES PHY nodes

arch/arm64/boot/dts/ti/k3-am69-sk.dts | 234 ++++++++++++++++++
arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++
arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 267 +++++++++++++++++++++
3 files changed, 620 insertions(+)

--
2.25.1



2023-08-03 08:28:47

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 3/5] arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node

From: Rahul T R <[email protected]>

Add DSS and DP-bridge node for J784S4 SoC. DSS IP in J784S4 is
same as DSS IP in J721E, so same compatible is being used.
The DP is Cadence MHDP8546.

Signed-off-by: Rahul T R <[email protected]>
[[email protected]: move dss & mhdp node together in main, fix dss node]
Signed-off-by: Jayesh Choudhary <[email protected]>
---
arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 63 ++++++++++++++++++++++
1 file changed, 63 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
index 446d7efa715f..824312b9ef9f 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
@@ -1741,4 +1741,67 @@ c71_3: dsp@67800000 {
resets = <&k3_reset 40 1>;
firmware-name = "j784s4-c71_3-fw";
};
+
+ mhdp: bridge@a000000 {
+ compatible = "ti,j721e-mhdp8546";
+ reg = <0x0 0xa000000 0x0 0x30a00>,
+ <0x0 0x4f40000 0x0 0x20>;
+ reg-names = "mhdptx", "j721e-intg";
+ clocks = <&k3_clks 217 11>;
+ interrupt-parent = <&gic500>;
+ interrupts = <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&k3_pds 217 TI_SCI_PD_EXCLUSIVE>;
+ status = "disabled";
+
+ dp0_ports: ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
+
+ dss: dss@4a00000 {
+ compatible = "ti,j721e-dss";
+ reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */
+ <0x00 0x04a10000 0x00 0x10000>, /* common_s0*/
+ <0x00 0x04b00000 0x00 0x10000>, /* common_s1*/
+ <0x00 0x04b10000 0x00 0x10000>, /* common_s2*/
+ <0x00 0x04a20000 0x00 0x10000>, /* vidl1 */
+ <0x00 0x04a30000 0x00 0x10000>, /* vidl2 */
+ <0x00 0x04a50000 0x00 0x10000>, /* vid1 */
+ <0x00 0x04a60000 0x00 0x10000>, /* vid2 */
+ <0x00 0x04a70000 0x00 0x10000>, /* ovr1 */
+ <0x00 0x04a90000 0x00 0x10000>, /* ovr2 */
+ <0x00 0x04ab0000 0x00 0x10000>, /* ovr3 */
+ <0x00 0x04ad0000 0x00 0x10000>, /* ovr4 */
+ <0x00 0x04a80000 0x00 0x10000>, /* vp1 */
+ <0x00 0x04aa0000 0x00 0x10000>, /* vp1 */
+ <0x00 0x04ac0000 0x00 0x10000>, /* vp1 */
+ <0x00 0x04ae0000 0x00 0x10000>, /* vp4 */
+ <0x00 0x04af0000 0x00 0x10000>; /* wb */
+ reg-names = "common_m", "common_s0",
+ "common_s1", "common_s2",
+ "vidl1", "vidl2","vid1","vid2",
+ "ovr1", "ovr2", "ovr3", "ovr4",
+ "vp1", "vp2", "vp3", "vp4",
+ "wb";
+ clocks = <&k3_clks 218 0>,
+ <&k3_clks 218 2>,
+ <&k3_clks 218 5>,
+ <&k3_clks 218 14>,
+ <&k3_clks 218 18>;
+ clock-names = "fck", "vp1", "vp2", "vp3", "vp4";
+ power-domains = <&k3_pds 218 TI_SCI_PD_EXCLUSIVE>;
+ interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "common_m",
+ "common_s0",
+ "common_s1",
+ "common_s2";
+ status = "disabled";
+
+ dss_ports: ports {
+ };
+ };
};
--
2.25.1


2023-08-03 08:32:21

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 5/5] arm64: dts: ti: k3-am69-sk: Add DP and HDMI support

From: Dasnavis Sabiya <[email protected]>

AM69 starter kit features an HDMI port and an eDP port.

Add assigned clocks for DSS, DT node for DisplayPort PHY,
pinmux for HDMI hotplug and power down, mcu_i2c1 and dss_vout
for HDMI.
Also enable Serdes4 settings for DP display.

Add the endpoint nodes to describe connection from:
DSS => MHDP => DisplayPort connector
DSS => TI TFP410 DPI-to-DVI Bridge => HDMI connector

Signed-off-by: Dasnavis Sabiya <[email protected]>
[[email protected]: Fix dvi-bridge, dss, mhdp and serdes-refclk]
Signed-off-by: Jayesh Choudhary <[email protected]>
---
arch/arm64/boot/dts/ti/k3-am69-sk.dts | 234 ++++++++++++++++++++++++++
1 file changed, 234 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am69-sk.dts b/arch/arm64/boot/dts/ti/k3-am69-sk.dts
index d282c2c633c1..d6d6b7aa9daf 100644
--- a/arch/arm64/boot/dts/ti/k3-am69-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am69-sk.dts
@@ -107,6 +107,76 @@ vdd_sd_dv: regulator-tlv71033 {
states = <1800000 0x0>,
<3300000 0x1>;
};
+
+ dp0_pwr_3v3: regulator-dp0-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "dp0-pwr";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&dp_pwr_en_pins_default>;
+ gpio = <&main_gpio0 4 0>; /* DP0_3V3 _EN */
+ enable-active-high;
+ };
+
+ dp0: connector-dp0 {
+ compatible = "dp-connector";
+ label = "DP0";
+ type = "full-size";
+ dp-pwr-supply = <&dp0_pwr_3v3>;
+
+ port {
+ dp0_connector_in: endpoint {
+ remote-endpoint = <&dp0_out>;
+ };
+ };
+ };
+
+ connector-hdmi {
+ compatible = "hdmi-connector";
+ label = "hdmi";
+ type = "a";
+ pinctrl-names = "default";
+ pinctrl-0 = <&hdmi_hpd_pins_default>;
+ ddc-i2c-bus = <&mcu_i2c1>;
+ hpd-gpios = <&main_gpio0 0 GPIO_ACTIVE_HIGH>; /* HDMI_HPD */
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&tfp410_out>;
+ };
+ };
+ };
+
+ bridge-dvi {
+ compatible = "ti,tfp410";
+ pinctrl-names = "default";
+ pinctrl-0 = <&hdmi_pdn_pins_default>;
+ powerdown-gpios = <&wkup_gpio0 14 GPIO_ACTIVE_LOW>; /* HDMI_PDn */
+ ti,deskew = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ tfp410_in: endpoint {
+ remote-endpoint = <&dpi1_out0>;
+ pclk-sample = <1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ tfp410_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+ };
+ };
+ };
};

&main_pmx0 {
@@ -161,6 +231,57 @@ J784S4_IOPAD(0x008, PIN_INPUT, 7) /* (AJ33) MCAN12_RX.GPIO0_2 */
J784S4_IOPAD(0x004, PIN_INPUT, 7) /* (AG36) MCAN12_TX.GPIO0_1 */
>;
};
+
+ dp0_pins_default: dp0-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x014, PIN_INPUT, 13) /* (AG33) MCAN14_TX.DP0_HPD */
+ >;
+ };
+
+ dp_pwr_en_pins_default: dp-pwr-en-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x010, PIN_INPUT, 7) /* (AH33) MCAN13_RX.GPIO0_4 */
+ >;
+ };
+
+ dss_vout0_pins_default: dss-vout0-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x074, PIN_OUTPUT, 2) /* (AC33) MCAN2_TX.VOUT0_DATA0 */
+ J784S4_IOPAD(0x070, PIN_OUTPUT, 2) /* (AH38) MCAN1_RX.VOUT0_DATA1 */
+ J784S4_IOPAD(0x07c, PIN_OUTPUT, 2) /* (AJ38) MCASP0_AXR3.VOUT0_DATA2 */
+ J784S4_IOPAD(0x068, PIN_OUTPUT, 2) /* (AE38) MCAN0_RX.VOUT0_DATA3 */
+ J784S4_IOPAD(0x064, PIN_OUTPUT, 2) /* (AF38) MCAN0_TX.VOUT0_DATA4 */
+ J784S4_IOPAD(0x060, PIN_OUTPUT, 2) /* (AE36) MCASP2_AXR1.VOUT0_DATA5 */
+ J784S4_IOPAD(0x05c, PIN_OUTPUT, 2) /* (AC36) MCASP2_AXR0.VOUT0_DATA6 */
+ J784S4_IOPAD(0x058, PIN_OUTPUT, 2) /* (AE37) MCASP2_AFSX.VOUT0_DATA7 */
+ J784S4_IOPAD(0x054, PIN_OUTPUT, 2) /* (AD37) MCASP2_ACLKX.VOUT0_DATA8 */
+ J784S4_IOPAD(0x050, PIN_OUTPUT, 2) /* (AC37) MCASP1_AXR2.VOUT0_DATA9 */
+ J784S4_IOPAD(0x04c, PIN_OUTPUT, 2) /* (AC32) MCASP1_AXR1.VOUT0_DATA10 */
+ J784S4_IOPAD(0x048, PIN_OUTPUT, 2) /* (AK33) MCASP0_AXR2.VOUT0_DATA11 */
+ J784S4_IOPAD(0x044, PIN_OUTPUT, 2) /* (AG37) MCASP0_AXR1.VOUT0_DATA12 */
+ J784S4_IOPAD(0x040, PIN_OUTPUT, 2) /* (AF37) MCASP0_AXR0.VOUT0_DATA13 */
+ J784S4_IOPAD(0x03c, PIN_OUTPUT, 2) /* (AK38) MCASP0_AFSX.VOUT0_DATA14 */
+ J784S4_IOPAD(0x038, PIN_OUTPUT, 2) /* (AK35) MCASP0_ACLKX.VOUT0_DATA15 */
+ J784S4_IOPAD(0x0c8, PIN_OUTPUT, 2) /* (AJ32) EXT_REFCLK1.VOUT0_DATA16 */
+ J784S4_IOPAD(0x030, PIN_OUTPUT, 2) /* (AK37) GPIO0_12.VOUT0_DATA17 */
+ J784S4_IOPAD(0x02c, PIN_OUTPUT, 2) /* (AL32) GPIO0_11.VOUT0_DATA18 */
+ J784S4_IOPAD(0x028, PIN_OUTPUT, 2) /* (AE33) MCAN16_RX.VOUT0_DATA19 */
+ J784S4_IOPAD(0x024, PIN_OUTPUT, 2) /* (AH34) MCAN16_TX.VOUT0_DATA20 */
+ J784S4_IOPAD(0x020, PIN_OUTPUT, 2) /* (AJ35) MCAN15_RX.VOUT0_DATA21 */
+ J784S4_IOPAD(0x01c, PIN_OUTPUT, 2) /* (AG34) MCAN15_TX.VOUT0_DATA22 */
+ J784S4_IOPAD(0x018, PIN_OUTPUT, 2) /* (AK36) MCAN14_RX.VOUT0_DATA23 */
+ J784S4_IOPAD(0x084, PIN_OUTPUT, 2) /* (AG38) MCASP0_AXR5.VOUT0_DE */
+ J784S4_IOPAD(0x080, PIN_OUTPUT, 2) /* (AK34) MCASP0_AXR4.VOUT0_HSYNC */
+ J784S4_IOPAD(0x078, PIN_OUTPUT, 2) /* (AH37) MCAN2_RX.VOUT0_PCLK */
+ J784S4_IOPAD(0x088, PIN_OUTPUT, 2) /* (AF36) MCASP0_AXR6.VOUT0_VSYNC */
+ >;
+ };
+
+ hdmi_hpd_pins_default: hdmi-hpd-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x000, PIN_INPUT, 7) /* (AN35) EXTINTN.GPIO0_0 */
+ >;
+ };
};

&wkup_pmx2 {
@@ -231,6 +352,21 @@ J784S4_WKUP_IOPAD(0x064, PIN_INPUT, 7) /* (J36) WKUP_GPIO0_3 */
J784S4_WKUP_IOPAD(0x11c, PIN_INPUT, 7) /* (M34) WKUP_GPIO0_67 */
>;
};
+
+ mcu_i2c1_pins_default: mcu-i2c1-default-pins {
+ pinctrl-single,pins = <
+ /* (L35) WKUP_GPIO0_8.MCU_I2C1_SCL */
+ J784S4_WKUP_IOPAD(0x078, PIN_INPUT_PULLUP, 0)
+ /* (L34) WKUP_GPIO0_9.MCU_I2C1_SDA */
+ J784S4_WKUP_IOPAD(0x07c, PIN_INPUT_PULLUP, 0)
+ >;
+ };
+
+ hdmi_pdn_pins_default: hdmi-pdn-default-pins {
+ pinctrl-single,pins = <
+ J784S4_WKUP_IOPAD(0x090, PIN_INPUT, 7) /* (H37) WKUP_GPIO0_14 */
+ >;
+ };
};

&wkup_pmx3 {
@@ -350,3 +486,101 @@ &mcu_cpsw_port1 {
phy-mode = "rgmii-rxid";
phy-handle = <&mcu_phy0>;
};
+
+&wkup_gpio_intr {
+ status = "okay";
+};
+
+&mcu_i2c1 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcu_i2c1_pins_default>;
+ clock-frequency = <100000>;
+};
+
+&serdes_refclk {
+ status = "okay";
+ clock-frequency = <100000000>;
+};
+
+&dss {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&dss_vout0_pins_default>;
+ assigned-clocks = <&k3_clks 218 2>,
+ <&k3_clks 218 5>,
+ <&k3_clks 218 14>,
+ <&k3_clks 218 18>;
+ assigned-clock-parents = <&k3_clks 218 3>,
+ <&k3_clks 218 7>,
+ <&k3_clks 218 16>,
+ <&k3_clks 218 22>;
+};
+
+&serdes_wiz4 {
+ status = "okay";
+};
+
+&serdes4 {
+ status = "okay";
+ serdes4_dp_link: phy@0 {
+ reg = <0>;
+ cdns,num-lanes = <4>;
+ #phy-cells = <0>;
+ cdns,phy-type = <PHY_TYPE_DP>;
+ resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
+ <&serdes_wiz4 3>, <&serdes_wiz4 4>;
+ };
+};
+
+&mhdp {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&dp0_pins_default>;
+ phys = <&serdes4_dp_link>;
+ phy-names = "dpphy";
+};
+
+&dss_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* DP */
+ port@0 {
+ reg = <0>;
+
+ dpi0_out: endpoint {
+ remote-endpoint = <&dp0_in>;
+ };
+ };
+
+ /* HDMI */
+ port@1 {
+ reg = <1>;
+
+ dpi1_out0: endpoint {
+ remote-endpoint = <&tfp410_in>;
+ };
+ };
+};
+
+&dp0_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ dp0_in: endpoint {
+ remote-endpoint = <&dpi0_out>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ dp0_out: endpoint {
+ remote-endpoint = <&dp0_connector_in>;
+ };
+ };
+};
--
2.25.1


2023-08-03 08:34:37

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 1/5] arm64: dts: ti: k3-j784s4-main: Add system controller and SERDES lane mux

From: Siddharth Vadapalli <[email protected]>

The system controller node manages the CTRL_MMR0 region.
Add serdes_ln_ctrl node which is used for controlling the SERDES lane mux.

Signed-off-by: Siddharth Vadapalli <[email protected]>
[[email protected]: Fix serdes_ln_ctrl node]
Signed-off-by: Jayesh Choudhary <[email protected]>
---
arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 40 ++++++++++++++++++++++
1 file changed, 40 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
index 11f163e5cadf..575aa70570dd 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
@@ -5,6 +5,10 @@
* Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
*/

+#include <dt-bindings/mux/mux.h>
+
+#include "k3-serdes.h"
+
&cbass_main {
msmc_ram: sram@70000000 {
compatible = "mmio-sram";
@@ -26,6 +30,42 @@ l3cache-sram@200000 {
};
};

+ scm_conf: bus@100000 {
+ compatible = "simple-bus";
+ reg = <0x00 0x00100000 0x00 0x1c000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x00 0x00 0x00100000 0x1c000>;
+
+ serdes_ln_ctrl: mux-controller@4080 {
+ compatible = "reg-mux";
+ reg = <0x00004080 0x30>;
+ #mux-control-cells = <1>;
+ mux-reg-masks = <0x4080 0x3>, <0x4084 0x3>, /* SERDES0 lane0/1 select */
+ <0x4088 0x3>, <0x408c 0x3>, /* SERDES0 lane2/3 select */
+ <0x4090 0x3>, <0x4094 0x3>, /* SERDES1 lane0/1 select */
+ <0x4098 0x3>, <0x409c 0x3>, /* SERDES1 lane2/3 select */
+ <0x40a0 0x3>, <0x40a4 0x3>, /* SERDES2 lane0/1 select */
+ <0x40a8 0x3>, <0x40ac 0x3>; /* SERDES2 lane2/3 select */
+ idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>,
+ <J784S4_SERDES0_LANE1_PCIE1_LANE1>,
+ <J784S4_SERDES0_LANE2_IP3_UNUSED>,
+ <J784S4_SERDES0_LANE3_USB>,
+ <J784S4_SERDES1_LANE0_PCIE0_LANE0>,
+ <J784S4_SERDES1_LANE1_PCIE0_LANE1>,
+ <J784S4_SERDES1_LANE2_PCIE0_LANE2>,
+ <J784S4_SERDES1_LANE3_PCIE0_LANE3>,
+ <J784S4_SERDES2_LANE0_IP2_UNUSED>,
+ <J784S4_SERDES2_LANE1_IP2_UNUSED>,
+ <J784S4_SERDES2_LANE2_QSGMII_LANE1>,
+ <J784S4_SERDES2_LANE3_QSGMII_LANE2>,
+ <J784S4_SERDES4_LANE0_EDP_LANE0>,
+ <J784S4_SERDES4_LANE1_EDP_LANE1>,
+ <J784S4_SERDES4_LANE2_EDP_LANE2>,
+ <J784S4_SERDES4_LANE3_EDP_LANE3>;
+ };
+ };
+
gic500: interrupt-controller@1800000 {
compatible = "arm,gic-v3";
#address-cells = <2>;
--
2.25.1


2023-08-03 08:46:03

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

From: Rahul T R <[email protected]>

Enable display for J784S4 EVM.

Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux for
DP HPD. Add the clock frequency for serdes_refclk.

Add the endpoint nodes to describe connection from:
DSS => MHDP => DisplayPort connector.

Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
required for controlling DP power. Set status for all required nodes
for DP-0 as "okay".

Signed-off-by: Rahul T R <[email protected]>
[[email protected]: move all the changes together to enable DP-0 in EVM]
Signed-off-by: Jayesh Choudhary <[email protected]>
---
arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++++++++++++++++
1 file changed, 119 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
index 7ad152a1b90f..005357d70122 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
@@ -249,6 +249,28 @@ vdd_sd_dv: regulator-TLV71033 {
states = <1800000 0x0>,
<3300000 0x1>;
};
+
+ dp0_pwr_3v3: regulator-dp0-prw {
+ compatible = "regulator-fixed";
+ regulator-name = "dp0-pwr";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&exp4 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ dp0: connector-dp0 {
+ compatible = "dp-connector";
+ label = "DP0";
+ type = "full-size";
+ dp-pwr-supply = <&dp0_pwr_3v3>;
+
+ port {
+ dp0_connector_in: endpoint {
+ remote-endpoint = <&dp0_out>;
+ };
+ };
+ };
};

&main_pmx0 {
@@ -286,6 +308,19 @@ vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
J784S4_IOPAD(0x020, PIN_INPUT, 7) /* (AJ35) MCAN15_RX.GPIO0_8 */
>;
};
+
+ dp0_pins_default: dp0-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x0cc, PIN_INPUT, 12) /* (AM37) SPI0_CS0.DP0_HPD */
+ >;
+ };
+
+ main_i2c4_pins_default: main-i2c4-default-pins {
+ pinctrl-single,pins = <
+ J784S4_IOPAD(0x014, PIN_INPUT_PULLUP, 8) /* (AG33) MCAN14_TX.I2C4_SCL */
+ J784S4_IOPAD(0x010, PIN_INPUT_PULLUP, 8) /* (AH33) MCAN13_RX.I2C4_SDA */
+ >;
+ };
};

&wkup_pmx2 {
@@ -827,3 +862,87 @@ adc {
ti,adc-channels = <0 1 2 3 4 5 6 7>;
};
};
+
+&serdes_refclk {
+ status = "okay";
+ clock-frequency = <100000000>;
+};
+
+&dss {
+ status = "okay";
+ assigned-clocks = <&k3_clks 218 2>,
+ <&k3_clks 218 5>,
+ <&k3_clks 218 14>,
+ <&k3_clks 218 18>;
+ assigned-clock-parents = <&k3_clks 218 3>,
+ <&k3_clks 218 7>,
+ <&k3_clks 218 16>,
+ <&k3_clks 218 22>;
+};
+
+&serdes_wiz4 {
+ status = "okay";
+};
+
+&serdes4 {
+ status = "okay";
+ serdes4_dp_link: phy@0 {
+ reg = <0>;
+ cdns,num-lanes = <4>;
+ #phy-cells = <0>;
+ cdns,phy-type = <PHY_TYPE_DP>;
+ resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
+ <&serdes_wiz4 3>, <&serdes_wiz4 4>;
+ };
+};
+
+&mhdp {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&dp0_pins_default>;
+ phys = <&serdes4_dp_link>;
+ phy-names = "dpphy";
+};
+
+&dss_ports {
+ port {
+ dpi0_out: endpoint {
+ remote-endpoint = <&dp0_in>;
+ };
+ };
+};
+
+&main_i2c4 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_i2c4_pins_default>;
+ clock-frequency = <400000>;
+
+ exp4: gpio@20 {
+ compatible = "ti,tca6408";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&dp0_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ dp0_in: endpoint {
+ remote-endpoint = <&dpi0_out>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ dp0_out: endpoint {
+ remote-endpoint = <&dp0_connector_in>;
+ };
+ };
+};
--
2.25.1


2023-08-03 09:26:54

by Jayesh Choudhary

[permalink] [raw]
Subject: [PATCH v9 2/5] arm64: dts: ti: k3-j784s4-main: Add WIZ and SERDES PHY nodes

From: Siddharth Vadapalli <[email protected]>

J784S4 SoC has 4 Serdes instances along with their respective WIZ
instances. Add device-tree nodes for them and disable them by default.

Signed-off-by: Siddharth Vadapalli <[email protected]>
[[email protected]: fix serdes_wiz clock order & disable serdes refclk]
Signed-off-by: Jayesh Choudhary <[email protected]>
---
arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 164 +++++++++++++++++++++
1 file changed, 164 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
index 575aa70570dd..446d7efa715f 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
@@ -6,9 +6,19 @@
*/

#include <dt-bindings/mux/mux.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/phy/phy-ti.h>

#include "k3-serdes.h"

+/ {
+ serdes_refclk: clock-serdes {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ status = "disabled";
+ };
+};
+
&cbass_main {
msmc_ram: sram@70000000 {
compatible = "mmio-sram";
@@ -709,6 +719,160 @@ main_sdhci1: mmc@4fb0000 {
status = "disabled";
};

+ serdes_wiz0: wiz@5060000 {
+ compatible = "ti,j784s4-wiz-10g";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ power-domains = <&k3_pds 404 TI_SCI_PD_EXCLUSIVE>;
+ clocks = <&k3_clks 404 2>, <&k3_clks 404 6>, <&serdes_refclk>, <&k3_clks 404 5>;
+ clock-names = "fck", "core_ref_clk", "ext_ref_clk", "core_ref1_clk";
+ assigned-clocks = <&k3_clks 404 6>;
+ assigned-clock-parents = <&k3_clks 404 10>;
+ num-lanes = <4>;
+ #reset-cells = <1>;
+ #clock-cells = <1>;
+ ranges = <0x5060000 0x00 0x5060000 0x10000>;
+ status = "disabled";
+
+ serdes0: serdes@5060000 {
+ compatible = "ti,j721e-serdes-10g";
+ reg = <0x05060000 0x010000>;
+ reg-names = "torrent_phy";
+ resets = <&serdes_wiz0 0>;
+ reset-names = "torrent_reset";
+ clocks = <&serdes_wiz0 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz0 TI_WIZ_PHY_EN_REFCLK>;
+ clock-names = "refclk", "phy_en_refclk";
+ assigned-clocks = <&serdes_wiz0 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz0 TI_WIZ_PLL1_REFCLK>,
+ <&serdes_wiz0 TI_WIZ_REFCLK_DIG>;
+ assigned-clock-parents = <&k3_clks 404 6>,
+ <&k3_clks 404 6>,
+ <&k3_clks 404 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #clock-cells = <1>;
+ status = "disabled";
+ };
+ };
+
+ serdes_wiz1: wiz@5070000 {
+ compatible = "ti,j784s4-wiz-10g";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ power-domains = <&k3_pds 405 TI_SCI_PD_EXCLUSIVE>;
+ clocks = <&k3_clks 405 2>, <&k3_clks 405 6>, <&serdes_refclk>, <&k3_clks 405 5>;
+ clock-names = "fck", "core_ref_clk", "ext_ref_clk", "core_ref1_clk";
+ assigned-clocks = <&k3_clks 405 6>;
+ assigned-clock-parents = <&k3_clks 405 10>;
+ num-lanes = <4>;
+ #reset-cells = <1>;
+ #clock-cells = <1>;
+ ranges = <0x05070000 0x00 0x05070000 0x10000>;
+ status = "disabled";
+
+ serdes1: serdes@5070000 {
+ compatible = "ti,j721e-serdes-10g";
+ reg = <0x05070000 0x010000>;
+ reg-names = "torrent_phy";
+ resets = <&serdes_wiz1 0>;
+ reset-names = "torrent_reset";
+ clocks = <&serdes_wiz1 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz1 TI_WIZ_PHY_EN_REFCLK>;
+ clock-names = "refclk", "phy_en_refclk";
+ assigned-clocks = <&serdes_wiz1 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz1 TI_WIZ_PLL1_REFCLK>,
+ <&serdes_wiz1 TI_WIZ_REFCLK_DIG>;
+ assigned-clock-parents = <&k3_clks 405 6>,
+ <&k3_clks 405 6>,
+ <&k3_clks 405 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #clock-cells = <1>;
+ status = "disabled";
+ };
+ };
+
+ serdes_wiz2: wiz@5020000 {
+ compatible = "ti,j784s4-wiz-10g";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ power-domains = <&k3_pds 406 TI_SCI_PD_EXCLUSIVE>;
+ clocks = <&k3_clks 406 2>, <&k3_clks 406 6>, <&serdes_refclk>, <&k3_clks 406 5>;
+ clock-names = "fck", "core_ref_clk", "ext_ref_clk", "core_ref1_clk";
+ assigned-clocks = <&k3_clks 406 6>;
+ assigned-clock-parents = <&k3_clks 406 10>;
+ num-lanes = <4>;
+ #reset-cells = <1>;
+ #clock-cells = <1>;
+ ranges = <0x05020000 0x00 0x05020000 0x10000>;
+ status = "disabled";
+
+ serdes2: serdes@5020000 {
+ compatible = "ti,j721e-serdes-10g";
+ reg = <0x05020000 0x010000>;
+ reg-names = "torrent_phy";
+ resets = <&serdes_wiz2 0>;
+ reset-names = "torrent_reset";
+ clocks = <&serdes_wiz2 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz2 TI_WIZ_PHY_EN_REFCLK>;
+ clock-names = "refclk", "phy_en_refclk";
+ assigned-clocks = <&serdes_wiz2 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz2 TI_WIZ_PLL1_REFCLK>,
+ <&serdes_wiz2 TI_WIZ_REFCLK_DIG>;
+ assigned-clock-parents = <&k3_clks 406 6>,
+ <&k3_clks 406 6>,
+ <&k3_clks 406 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #clock-cells = <1>;
+ status = "disabled";
+ };
+ };
+
+ serdes_wiz4: wiz@5050000 {
+ compatible = "ti,j784s4-wiz-10g";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ power-domains = <&k3_pds 407 TI_SCI_PD_EXCLUSIVE>;
+ clocks = <&k3_clks 407 2>, <&k3_clks 407 6>, <&serdes_refclk>, <&k3_clks 407 5>;
+ clock-names = "fck", "core_ref_clk", "ext_ref_clk", "core_ref1_clk";
+ assigned-clocks = <&k3_clks 407 6>;
+ assigned-clock-parents = <&k3_clks 407 10>;
+ num-lanes = <4>;
+ #reset-cells = <1>;
+ #clock-cells = <1>;
+ ranges = <0x05050000 0x00 0x05050000 0x10000>,
+ <0xa030a00 0x00 0xa030a00 0x40>; /* DPTX PHY */
+ status = "disabled";
+
+ serdes4: serdes@5050000 {
+ /*
+ * Note: we also map DPTX PHY registers as the Torrent
+ * needs to manage those.
+ */
+ compatible = "ti,j721e-serdes-10g";
+ reg = <0x05050000 0x010000>,
+ <0x0a030a00 0x40>; /* DPTX PHY */
+ reg-names = "torrent_phy";
+ resets = <&serdes_wiz4 0>;
+ reset-names = "torrent_reset";
+ clocks = <&serdes_wiz4 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz4 TI_WIZ_PHY_EN_REFCLK>;
+ clock-names = "refclk", "phy_en_refclk";
+ assigned-clocks = <&serdes_wiz4 TI_WIZ_PLL0_REFCLK>,
+ <&serdes_wiz4 TI_WIZ_PLL1_REFCLK>,
+ <&serdes_wiz4 TI_WIZ_REFCLK_DIG>;
+ assigned-clock-parents = <&k3_clks 407 6>,
+ <&k3_clks 407 6>,
+ <&k3_clks 407 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #clock-cells = <1>;
+ status = "disabled";
+ };
+ };
+
main_navss: bus@30000000 {
compatible = "simple-bus";
#address-cells = <2>;
--
2.25.1


2023-08-04 20:06:18

by Aradhya Bhatia

[permalink] [raw]
Subject: Re: [PATCH v9 3/5] arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node



On 03-Aug-23 13:34, Jayesh Choudhary wrote:
> From: Rahul T R <[email protected]>
>
> Add DSS and DP-bridge node for J784S4 SoC. DSS IP in J784S4 is
> same as DSS IP in J721E, so same compatible is being used.
> The DP is Cadence MHDP8546.
DP-bridge

>
> Signed-off-by: Rahul T R <[email protected]>
> [[email protected]: move dss & mhdp node together in main, fix dss node]
> Signed-off-by: Jayesh Choudhary <[email protected]>

Given that you make appropriate changes with properties in this patch,
wrt patches 4/5 and 5/5,

Reviewed-by: Aradhya Bhatia <[email protected]>

> ---
> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 63 ++++++++++++++++++++++
> 1 file changed, 63 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> index 446d7efa715f..824312b9ef9f 100644
> --- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> @@ -1741,4 +1741,67 @@ c71_3: dsp@67800000 {
> resets = <&k3_reset 40 1>;
> firmware-name = "j784s4-c71_3-fw";
> };
> +
> + mhdp: bridge@a000000 {
> + compatible = "ti,j721e-mhdp8546";
> + reg = <0x0 0xa000000 0x0 0x30a00>,
> + <0x0 0x4f40000 0x0 0x20>;
> + reg-names = "mhdptx", "j721e-intg";
> + clocks = <&k3_clks 217 11>;
> + interrupt-parent = <&gic500>;
> + interrupts = <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>;
> + power-domains = <&k3_pds 217 TI_SCI_PD_EXCLUSIVE>;
> + status = "disabled";
> +
> + dp0_ports: ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> + };
> +
> + dss: dss@4a00000 {
> + compatible = "ti,j721e-dss";
> + reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */
> + <0x00 0x04a10000 0x00 0x10000>, /* common_s0*/
> + <0x00 0x04b00000 0x00 0x10000>, /* common_s1*/
> + <0x00 0x04b10000 0x00 0x10000>, /* common_s2*/
> + <0x00 0x04a20000 0x00 0x10000>, /* vidl1 */
> + <0x00 0x04a30000 0x00 0x10000>, /* vidl2 */
> + <0x00 0x04a50000 0x00 0x10000>, /* vid1 */
> + <0x00 0x04a60000 0x00 0x10000>, /* vid2 */
> + <0x00 0x04a70000 0x00 0x10000>, /* ovr1 */
> + <0x00 0x04a90000 0x00 0x10000>, /* ovr2 */
> + <0x00 0x04ab0000 0x00 0x10000>, /* ovr3 */
> + <0x00 0x04ad0000 0x00 0x10000>, /* ovr4 */
> + <0x00 0x04a80000 0x00 0x10000>, /* vp1 */
> + <0x00 0x04aa0000 0x00 0x10000>, /* vp1 */
> + <0x00 0x04ac0000 0x00 0x10000>, /* vp1 */
> + <0x00 0x04ae0000 0x00 0x10000>, /* vp4 */
> + <0x00 0x04af0000 0x00 0x10000>; /* wb */
> + reg-names = "common_m", "common_s0",
> + "common_s1", "common_s2",
> + "vidl1", "vidl2","vid1","vid2",
> + "ovr1", "ovr2", "ovr3", "ovr4",
> + "vp1", "vp2", "vp3", "vp4",
> + "wb";
> + clocks = <&k3_clks 218 0>,
> + <&k3_clks 218 2>,
> + <&k3_clks 218 5>,
> + <&k3_clks 218 14>,
> + <&k3_clks 218 18>;
> + clock-names = "fck", "vp1", "vp2", "vp3", "vp4";
> + power-domains = <&k3_pds 218 TI_SCI_PD_EXCLUSIVE>;
> + interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "common_m",
> + "common_s0",
> + "common_s1",
> + "common_s2";
> + status = "disabled";
> +
> + dss_ports: ports {
> + };
> + };
> };

2023-08-04 20:47:50

by Aradhya Bhatia

[permalink] [raw]
Subject: Re: [PATCH v9 5/5] arm64: dts: ti: k3-am69-sk: Add DP and HDMI support



On 03-Aug-23 13:34, Jayesh Choudhary wrote:
> From: Dasnavis Sabiya <[email protected]>
>
> AM69 starter kit features an HDMI port and an eDP port.
>
> Add assigned clocks for DSS, DT node for DisplayPort PHY,
> pinmux for HDMI hotplug and power down, mcu_i2c1 and dss_vout
> for HDMI.
> Also enable Serdes4 settings for DP display.
>
> Add the endpoint nodes to describe connection from:
> DSS => MHDP => DisplayPort connector
> DSS => TI TFP410 DPI-to-DVI Bridge => HDMI connector
>
> Signed-off-by: Dasnavis Sabiya <[email protected]>
> [[email protected]: Fix dvi-bridge, dss, mhdp and serdes-refclk]
> Signed-off-by: Jayesh Choudhary <[email protected]>

Reviewed-by: Aradhya Bhatia <[email protected]>

> ---
> arch/arm64/boot/dts/ti/k3-am69-sk.dts | 234 ++++++++++++++++++++++++++
> 1 file changed, 234 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am69-sk.dts b/arch/arm64/boot/dts/ti/k3-am69-sk.dts
> index d282c2c633c1..d6d6b7aa9daf 100644
> --- a/arch/arm64/boot/dts/ti/k3-am69-sk.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am69-sk.dts
> @@ -107,6 +107,76 @@ vdd_sd_dv: regulator-tlv71033 {
> states = <1800000 0x0>,
> <3300000 0x1>;
> };
> +
> + dp0_pwr_3v3: regulator-dp0-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "dp0-pwr";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&dp_pwr_en_pins_default>;
> + gpio = <&main_gpio0 4 0>; /* DP0_3V3 _EN */
> + enable-active-high;
> + };
> +
> + dp0: connector-dp0 {
> + compatible = "dp-connector";
> + label = "DP0";
> + type = "full-size";
> + dp-pwr-supply = <&dp0_pwr_3v3>;
> +
> + port {
> + dp0_connector_in: endpoint {
> + remote-endpoint = <&dp0_out>;
> + };
> + };
> + };
> +
> + connector-hdmi {
> + compatible = "hdmi-connector";
> + label = "hdmi";
> + type = "a";
> + pinctrl-names = "default";
> + pinctrl-0 = <&hdmi_hpd_pins_default>;
> + ddc-i2c-bus = <&mcu_i2c1>;
> + hpd-gpios = <&main_gpio0 0 GPIO_ACTIVE_HIGH>; /* HDMI_HPD */
> +
> + port {
> + hdmi_connector_in: endpoint {
> + remote-endpoint = <&tfp410_out>;
> + };
> + };
> + };
> +
> + bridge-dvi {
> + compatible = "ti,tfp410";
> + pinctrl-names = "default";
> + pinctrl-0 = <&hdmi_pdn_pins_default>;
> + powerdown-gpios = <&wkup_gpio0 14 GPIO_ACTIVE_LOW>; /* HDMI_PDn */
> + ti,deskew = <0>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + tfp410_in: endpoint {
> + remote-endpoint = <&dpi1_out0>;
> + pclk-sample = <1>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + tfp410_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> };
>
> &main_pmx0 {
> @@ -161,6 +231,57 @@ J784S4_IOPAD(0x008, PIN_INPUT, 7) /* (AJ33) MCAN12_RX.GPIO0_2 */
> J784S4_IOPAD(0x004, PIN_INPUT, 7) /* (AG36) MCAN12_TX.GPIO0_1 */
> >;
> };
> +
> + dp0_pins_default: dp0-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x014, PIN_INPUT, 13) /* (AG33) MCAN14_TX.DP0_HPD */
> + >;
> + };
> +
> + dp_pwr_en_pins_default: dp-pwr-en-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x010, PIN_INPUT, 7) /* (AH33) MCAN13_RX.GPIO0_4 */
> + >;
> + };
> +
> + dss_vout0_pins_default: dss-vout0-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x074, PIN_OUTPUT, 2) /* (AC33) MCAN2_TX.VOUT0_DATA0 */
> + J784S4_IOPAD(0x070, PIN_OUTPUT, 2) /* (AH38) MCAN1_RX.VOUT0_DATA1 */
> + J784S4_IOPAD(0x07c, PIN_OUTPUT, 2) /* (AJ38) MCASP0_AXR3.VOUT0_DATA2 */
> + J784S4_IOPAD(0x068, PIN_OUTPUT, 2) /* (AE38) MCAN0_RX.VOUT0_DATA3 */
> + J784S4_IOPAD(0x064, PIN_OUTPUT, 2) /* (AF38) MCAN0_TX.VOUT0_DATA4 */
> + J784S4_IOPAD(0x060, PIN_OUTPUT, 2) /* (AE36) MCASP2_AXR1.VOUT0_DATA5 */
> + J784S4_IOPAD(0x05c, PIN_OUTPUT, 2) /* (AC36) MCASP2_AXR0.VOUT0_DATA6 */
> + J784S4_IOPAD(0x058, PIN_OUTPUT, 2) /* (AE37) MCASP2_AFSX.VOUT0_DATA7 */
> + J784S4_IOPAD(0x054, PIN_OUTPUT, 2) /* (AD37) MCASP2_ACLKX.VOUT0_DATA8 */
> + J784S4_IOPAD(0x050, PIN_OUTPUT, 2) /* (AC37) MCASP1_AXR2.VOUT0_DATA9 */
> + J784S4_IOPAD(0x04c, PIN_OUTPUT, 2) /* (AC32) MCASP1_AXR1.VOUT0_DATA10 */
> + J784S4_IOPAD(0x048, PIN_OUTPUT, 2) /* (AK33) MCASP0_AXR2.VOUT0_DATA11 */
> + J784S4_IOPAD(0x044, PIN_OUTPUT, 2) /* (AG37) MCASP0_AXR1.VOUT0_DATA12 */
> + J784S4_IOPAD(0x040, PIN_OUTPUT, 2) /* (AF37) MCASP0_AXR0.VOUT0_DATA13 */
> + J784S4_IOPAD(0x03c, PIN_OUTPUT, 2) /* (AK38) MCASP0_AFSX.VOUT0_DATA14 */
> + J784S4_IOPAD(0x038, PIN_OUTPUT, 2) /* (AK35) MCASP0_ACLKX.VOUT0_DATA15 */
> + J784S4_IOPAD(0x0c8, PIN_OUTPUT, 2) /* (AJ32) EXT_REFCLK1.VOUT0_DATA16 */
> + J784S4_IOPAD(0x030, PIN_OUTPUT, 2) /* (AK37) GPIO0_12.VOUT0_DATA17 */
> + J784S4_IOPAD(0x02c, PIN_OUTPUT, 2) /* (AL32) GPIO0_11.VOUT0_DATA18 */
> + J784S4_IOPAD(0x028, PIN_OUTPUT, 2) /* (AE33) MCAN16_RX.VOUT0_DATA19 */
> + J784S4_IOPAD(0x024, PIN_OUTPUT, 2) /* (AH34) MCAN16_TX.VOUT0_DATA20 */
> + J784S4_IOPAD(0x020, PIN_OUTPUT, 2) /* (AJ35) MCAN15_RX.VOUT0_DATA21 */
> + J784S4_IOPAD(0x01c, PIN_OUTPUT, 2) /* (AG34) MCAN15_TX.VOUT0_DATA22 */
> + J784S4_IOPAD(0x018, PIN_OUTPUT, 2) /* (AK36) MCAN14_RX.VOUT0_DATA23 */
> + J784S4_IOPAD(0x084, PIN_OUTPUT, 2) /* (AG38) MCASP0_AXR5.VOUT0_DE */
> + J784S4_IOPAD(0x080, PIN_OUTPUT, 2) /* (AK34) MCASP0_AXR4.VOUT0_HSYNC */
> + J784S4_IOPAD(0x078, PIN_OUTPUT, 2) /* (AH37) MCAN2_RX.VOUT0_PCLK */
> + J784S4_IOPAD(0x088, PIN_OUTPUT, 2) /* (AF36) MCASP0_AXR6.VOUT0_VSYNC */
> + >;
> + };
> +
> + hdmi_hpd_pins_default: hdmi-hpd-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x000, PIN_INPUT, 7) /* (AN35) EXTINTN.GPIO0_0 */
> + >;
> + };
> };
>
> &wkup_pmx2 {
> @@ -231,6 +352,21 @@ J784S4_WKUP_IOPAD(0x064, PIN_INPUT, 7) /* (J36) WKUP_GPIO0_3 */
> J784S4_WKUP_IOPAD(0x11c, PIN_INPUT, 7) /* (M34) WKUP_GPIO0_67 */
> >;
> };
> +
> + mcu_i2c1_pins_default: mcu-i2c1-default-pins {
> + pinctrl-single,pins = <
> + /* (L35) WKUP_GPIO0_8.MCU_I2C1_SCL */
> + J784S4_WKUP_IOPAD(0x078, PIN_INPUT_PULLUP, 0)
> + /* (L34) WKUP_GPIO0_9.MCU_I2C1_SDA */
> + J784S4_WKUP_IOPAD(0x07c, PIN_INPUT_PULLUP, 0)
> + >;
> + };
> +
> + hdmi_pdn_pins_default: hdmi-pdn-default-pins {
> + pinctrl-single,pins = <
> + J784S4_WKUP_IOPAD(0x090, PIN_INPUT, 7) /* (H37) WKUP_GPIO0_14 */
> + >;
> + };
> };
>
> &wkup_pmx3 {
> @@ -350,3 +486,101 @@ &mcu_cpsw_port1 {
> phy-mode = "rgmii-rxid";
> phy-handle = <&mcu_phy0>;
> };
> +
> +&wkup_gpio_intr {
> + status = "okay";
> +};
> +
> +&mcu_i2c1 {
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcu_i2c1_pins_default>;
> + clock-frequency = <100000>;
> +};
> +
> +&serdes_refclk {
> + status = "okay";
> + clock-frequency = <100000000>;
> +};
> +
> +&dss {
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&dss_vout0_pins_default>;
> + assigned-clocks = <&k3_clks 218 2>,
> + <&k3_clks 218 5>,
> + <&k3_clks 218 14>,
> + <&k3_clks 218 18>;
> + assigned-clock-parents = <&k3_clks 218 3>,
> + <&k3_clks 218 7>,
> + <&k3_clks 218 16>,
> + <&k3_clks 218 22>;
> +};
> +
> +&serdes_wiz4 {
> + status = "okay";
> +};
> +
> +&serdes4 {
> + status = "okay";
> + serdes4_dp_link: phy@0 {
> + reg = <0>;
> + cdns,num-lanes = <4>;
> + #phy-cells = <0>;
> + cdns,phy-type = <PHY_TYPE_DP>;
> + resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
> + <&serdes_wiz4 3>, <&serdes_wiz4 4>;
> + };
> +};
> +
> +&mhdp {
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&dp0_pins_default>;
> + phys = <&serdes4_dp_link>;
> + phy-names = "dpphy";
> +};
> +
> +&dss_ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + /* DP */
> + port@0 {
> + reg = <0>;
> +
> + dpi0_out: endpoint {
> + remote-endpoint = <&dp0_in>;
> + };
> + };
> +
> + /* HDMI */
> + port@1 {
> + reg = <1>;
> +
> + dpi1_out0: endpoint {
> + remote-endpoint = <&tfp410_in>;
> + };
> + };
> +};
> +
> +&dp0_ports {
> + #address-cells = <1>;
> + #size-cells = <0>;> +
> + port@0 {
> + reg = <0>;
> +
> + dp0_in: endpoint {
> + remote-endpoint = <&dpi0_out>;
> + };
> + };
> +
> + port@4 {
> + reg = <4>;
> +
> + dp0_out: endpoint {
> + remote-endpoint = <&dp0_connector_in>;
> + };
> + };
> +};

2023-08-04 20:49:32

by Aradhya Bhatia

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

Hi Jayesh,


On 03-Aug-23 13:34, Jayesh Choudhary wrote:
> From: Rahul T R <[email protected]>
>
> Enable display for J784S4 EVM.
>
> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux for
> DP HPD. Add the clock frequency for serdes_refclk.
>
> Add the endpoint nodes to describe connection from:
> DSS => MHDP => DisplayPort connector.
>
> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
> required for controlling DP power. Set status for all required nodes
> for DP-0 as "okay".
>
> Signed-off-by: Rahul T R <[email protected]>
> [[email protected]: move all the changes together to enable DP-0 in EVM]
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++++++++++++++++
> 1 file changed, 119 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
> index 7ad152a1b90f..005357d70122 100644
> --- a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
> +++ b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
> @@ -249,6 +249,28 @@ vdd_sd_dv: regulator-TLV71033 {
> states = <1800000 0x0>,
> <3300000 0x1>;
> };
> +
> + dp0_pwr_3v3: regulator-dp0-prw {
> + compatible = "regulator-fixed";
> + regulator-name = "dp0-pwr";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&exp4 0 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + dp0: connector-dp0 {
> + compatible = "dp-connector";
> + label = "DP0";
> + type = "full-size";
> + dp-pwr-supply = <&dp0_pwr_3v3>;
> +
> + port {
> + dp0_connector_in: endpoint {
> + remote-endpoint = <&dp0_out>;
> + };
> + };
> + };
> };
>
> &main_pmx0 {
> @@ -286,6 +308,19 @@ vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
> J784S4_IOPAD(0x020, PIN_INPUT, 7) /* (AJ35) MCAN15_RX.GPIO0_8 */
> >;
> };
> +
> + dp0_pins_default: dp0-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x0cc, PIN_INPUT, 12) /* (AM37) SPI0_CS0.DP0_HPD */
> + >;
> + };
> +
> + main_i2c4_pins_default: main-i2c4-default-pins {
> + pinctrl-single,pins = <
> + J784S4_IOPAD(0x014, PIN_INPUT_PULLUP, 8) /* (AG33) MCAN14_TX.I2C4_SCL */
> + J784S4_IOPAD(0x010, PIN_INPUT_PULLUP, 8) /* (AH33) MCAN13_RX.I2C4_SDA */
> + >;
> + };
> };
>
> &wkup_pmx2 {
> @@ -827,3 +862,87 @@ adc {
> ti,adc-channels = <0 1 2 3 4 5 6 7>;
> };
> };
> +
> +&serdes_refclk {
> + status = "okay";
> + clock-frequency = <100000000>;
> +};
> +
> +&dss {
> + status = "okay";
> + assigned-clocks = <&k3_clks 218 2>,
> + <&k3_clks 218 5>,
> + <&k3_clks 218 14>,
> + <&k3_clks 218 18>;
> + assigned-clock-parents = <&k3_clks 218 3>,
> + <&k3_clks 218 7>,
> + <&k3_clks 218 16>,
> + <&k3_clks 218 22>;
> +};
> +
> +&serdes_wiz4 {
> + status = "okay";
> +};
> +
> +&serdes4 {
> + status = "okay";
> + serdes4_dp_link: phy@0 {
> + reg = <0>;
> + cdns,num-lanes = <4>;
> + #phy-cells = <0>;
> + cdns,phy-type = <PHY_TYPE_DP>;
> + resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
> + <&serdes_wiz4 3>, <&serdes_wiz4 4>;
> + };
> +};
> +
> +&mhdp {
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&dp0_pins_default>;
> + phys = <&serdes4_dp_link>;
> + phy-names = "dpphy";
> +};
> +
> +&dss_ports {
> + port {

Port index has not been added here. Since this port outputs to MHDP
bridge, this should be "port@0", and a "reg = <0>;" property should be
added below (along with the address and size cells properties).

I suppose this works functionally in this case, because the port gets
defaulted to "0" by the driver. But in future, when we add support for
other dss output(s) on j784s4-evm, the driver will need indices to
distinguish among them.

> + dpi0_out: endpoint {
> + remote-endpoint = <&dp0_in>;
> + };
> + };
> +};
> +
> +&main_i2c4 {
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&main_i2c4_pins_default>;
> + clock-frequency = <400000>;
> +
> + exp4: gpio@20 {
> + compatible = "ti,tca6408";
> + reg = <0x20>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + };
> +};
> +
> +&dp0_ports {
> + #address-cells = <1>;
> + #size-cells = <0>;

These properties are being repeated from the MHDP node in the main.dtsi
file, in the previous patch. You can drop them from one of the places.

I would suggest keeping them in the main.dtsi file and removing them
here, so that repetition is avoided across different platform.dts files,
but I will leave the call up to you. In any case, they need to be
removed from one of the two places.

Btw, same will be applicable for dss_ports as well (once you add port
index). Separate address and size cells properties won't be required in
the j784s4-evm.dts and am69-sk.dts platform files, once they are already
there in j784s4-main.dtsi.

With the changes suggested above,

Reviewed-by: Aradhya Bhatia <[email protected]>

> +
> + port@0 {
> + reg = <0>;
> +
> + dp0_in: endpoint {
> + remote-endpoint = <&dpi0_out>;
> + };
> + };
> +
> + port@4 {
> + reg = <4>;
> +
> + dp0_out: endpoint {
> + remote-endpoint = <&dp0_connector_in>;
> + };
> + };
> +};


2023-08-07 13:22:34

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

Hello Aradhya,

Thank you for the review.

On 05/08/23 00:52, Aradhya Bhatia wrote:
> Hi Jayesh,
>
>
> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>> From: Rahul T R <[email protected]>
>>
>> Enable display for J784S4 EVM.
>>
>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux for
>> DP HPD. Add the clock frequency for serdes_refclk.
>>
>> Add the endpoint nodes to describe connection from:
>> DSS => MHDP => DisplayPort connector.
>>
>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>> required for controlling DP power. Set status for all required nodes
>> for DP-0 as "okay".
>>
>> Signed-off-by: Rahul T R <[email protected]>
>> [[email protected]: move all the changes together to enable DP-0 in EVM]
>> Signed-off-by: Jayesh Choudhary <[email protected]>
>> ---
>> arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++++++++++++++++
>> 1 file changed, 119 insertions(+)

[...]

>> + reg = <0>;
>> + cdns,num-lanes = <4>;
>> + #phy-cells = <0>;
>> + cdns,phy-type = <PHY_TYPE_DP>;
>> + resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>> + <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>> + };
>> +};
>> +
>> +&mhdp {
>> + status = "okay";
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&dp0_pins_default>;
>> + phys = <&serdes4_dp_link>;
>> + phy-names = "dpphy";
>> +};
>> +
>> +&dss_ports {
>> + port {
>
> Port index has not been added here. Since this port outputs to MHDP
> bridge, this should be "port@0", and a "reg = <0>;" property should be
> added below (along with the address and size cells properties).
>
> I suppose this works functionally in this case, because the port gets
> defaulted to "0" by the driver. But in future, when we add support for
> other dss output(s) on j784s4-evm, the driver will need indices to
> distinguish among them.
>

Okay. It makes sense.
Just one thing here. Adding reg here would require it to have #address-
cells and #size-cell but since we have only single child port that too
at reg=<0>, it would throw dtbs_check warning:

arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
(graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
single child node 'port@0', #address-cells/#size-cells are not necessary
also defined at arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3


-jayesh

>> + dpi0_out: endpoint {
>> + remote-endpoint = <&dp0_in>;


[...]

2023-08-07 13:52:58

by Aradhya Bhatia

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

Hi Jayesh,

On 07-Aug-23 17:54, Jayesh Choudhary wrote:
> Hello Aradhya,
>
> Thank you for the review.
>
> On 05/08/23 00:52, Aradhya Bhatia wrote:
>> Hi Jayesh,
>>
>>
>> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>>> From: Rahul T R <[email protected]>
>>>
>>> Enable display for J784S4 EVM.
>>>
>>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux for
>>> DP HPD. Add the clock frequency for serdes_refclk.
>>>
>>> Add the endpoint nodes to describe connection from:
>>> DSS => MHDP => DisplayPort connector.
>>>
>>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>>> required for controlling DP power. Set status for all required nodes
>>> for DP-0 as "okay".
>>>
>>> Signed-off-by: Rahul T R <[email protected]>
>>> [[email protected]: move all the changes together to enable DP-0 in
>>> EVM]
>>> Signed-off-by: Jayesh Choudhary <[email protected]>
>>> ---
>>>   arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++++++++++++++++
>>>   1 file changed, 119 insertions(+)
>
> [...]
>
>>> +        reg = <0>;
>>> +        cdns,num-lanes = <4>;
>>> +        #phy-cells = <0>;
>>> +        cdns,phy-type = <PHY_TYPE_DP>;
>>> +        resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>>> +             <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>>> +    };
>>> +};
>>> +
>>> +&mhdp {
>>> +    status = "okay";
>>> +    pinctrl-names = "default";
>>> +    pinctrl-0 = <&dp0_pins_default>;
>>> +    phys = <&serdes4_dp_link>;
>>> +    phy-names = "dpphy";
>>> +};
>>> +
>>> +&dss_ports {
>>> +    port {
>>
>> Port index has not been added here. Since this port outputs to MHDP
>> bridge, this should be "port@0", and a "reg = <0>;" property should be
>> added below (along with the address and size cells properties).
>>
>> I suppose this works functionally in this case, because the port gets
>> defaulted to "0" by the driver. But in future, when we add support for
>> other dss output(s) on j784s4-evm, the driver will need indices to
>> distinguish among them.
>>
>
> Okay. It makes sense.
> Just one thing here. Adding reg here would require it to have #address-
> cells and #size-cell but since we have only single child port that too
> at reg=<0>, it would throw dtbs_check warning:
>
> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
> (graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
> single child node 'port@0', #address-cells/#size-cells are not necessary
>   also defined at arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3
>

Okay! Was not aware about this. I still think "port@0" should be
specified instead of just "port" and the warning should be ignored, if
possible.

If there were only a "port@1" child node, this warning would not have
come up, and I believe "port@0" should be treated just the same.

Moreover, while we can add these properties at a later stage as an
incremental patch, adding the size and address cells in the dtsi would
affect other platform dts files as well, that use this SoC.

For e.g., the patch 5/5 of this series, on AM69-SK will still require
the size and address cells for its ports. The clean up then will be that
much more, when adding those incremental patches.

Anyway, I will let Nishanth and Vignesh take the final call on this.

Regards
Aradhya

>
>>> +        dpi0_out: endpoint {
>>> +            remote-endpoint = <&dp0_in>;
>
>
> [...]


2023-08-07 16:25:30

by Andrew Davis

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

On 8/7/23 7:56 AM, Aradhya Bhatia wrote:
> Hi Jayesh,
>
> On 07-Aug-23 17:54, Jayesh Choudhary wrote:
>> Hello Aradhya,
>>
>> Thank you for the review.
>>
>> On 05/08/23 00:52, Aradhya Bhatia wrote:
>>> Hi Jayesh,
>>>
>>>
>>> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>>>> From: Rahul T R <[email protected]>
>>>>
>>>> Enable display for J784S4 EVM.
>>>>
>>>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux for
>>>> DP HPD. Add the clock frequency for serdes_refclk.
>>>>
>>>> Add the endpoint nodes to describe connection from:
>>>> DSS => MHDP => DisplayPort connector.
>>>>
>>>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>>>> required for controlling DP power. Set status for all required nodes
>>>> for DP-0 as "okay".
>>>>
>>>> Signed-off-by: Rahul T R <[email protected]>
>>>> [[email protected]: move all the changes together to enable DP-0 in
>>>> EVM]
>>>> Signed-off-by: Jayesh Choudhary <[email protected]>
>>>> ---
>>>>   arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119 +++++++++++++++++++++++
>>>>   1 file changed, 119 insertions(+)
>>
>> [...]
>>
>>>> +        reg = <0>;
>>>> +        cdns,num-lanes = <4>;
>>>> +        #phy-cells = <0>;
>>>> +        cdns,phy-type = <PHY_TYPE_DP>;
>>>> +        resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>>>> +             <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>>>> +    };
>>>> +};
>>>> +
>>>> +&mhdp {
>>>> +    status = "okay";
>>>> +    pinctrl-names = "default";
>>>> +    pinctrl-0 = <&dp0_pins_default>;
>>>> +    phys = <&serdes4_dp_link>;
>>>> +    phy-names = "dpphy";
>>>> +};
>>>> +
>>>> +&dss_ports {
>>>> +    port {
>>>
>>> Port index has not been added here. Since this port outputs to MHDP
>>> bridge, this should be "port@0", and a "reg = <0>;" property should be
>>> added below (along with the address and size cells properties).
>>>
>>> I suppose this works functionally in this case, because the port gets
>>> defaulted to "0" by the driver. But in future, when we add support for
>>> other dss output(s) on j784s4-evm, the driver will need indices to
>>> distinguish among them.
>>>
>>
>> Okay. It makes sense.
>> Just one thing here. Adding reg here would require it to have #address-
>> cells and #size-cell but since we have only single child port that too
>> at reg=<0>, it would throw dtbs_check warning:
>>
>> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
>> (graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
>> single child node 'port@0', #address-cells/#size-cells are not necessary
>>   also defined at arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3
>>
>
> Okay! Was not aware about this. I still think "port@0" should be
> specified instead of just "port" and the warning should be ignored, if
> possible.
>

Do not ignore new DT check warnings, if you go with "port@0" (which you
need to do as the "ti,j721e-dss" binding requires it) you must also add
the #address-cells/#size-cells.

Andrew

> If there were only a "port@1" child node, this warning would not have
> come up, and I believe "port@0" should be treated just the same.
>
> Moreover, while we can add these properties at a later stage as an
> incremental patch, adding the size and address cells in the dtsi would
> affect other platform dts files as well, that use this SoC.
>
> For e.g., the patch 5/5 of this series, on AM69-SK will still require
> the size and address cells for its ports. The clean up then will be that
> much more, when adding those incremental patches.
>
> Anyway, I will let Nishanth and Vignesh take the final call on this.
>
> Regards
> Aradhya
>
>>
>>>> +        dpi0_out: endpoint {
>>>> +            remote-endpoint = <&dp0_in>;
>>
>>
>> [...]
>

2023-08-07 19:07:11

by Aradhya Bhatia

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0



On 07-Aug-23 21:19, Andrew Davis wrote:
> On 8/7/23 7:56 AM, Aradhya Bhatia wrote:
>> Hi Jayesh,
>>
>> On 07-Aug-23 17:54, Jayesh Choudhary wrote:
>>> Hello Aradhya,
>>>
>>> Thank you for the review.
>>>
>>> On 05/08/23 00:52, Aradhya Bhatia wrote:
>>>> Hi Jayesh,
>>>>
>>>>
>>>> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>>>>> From: Rahul T R <[email protected]>
>>>>>
>>>>> Enable display for J784S4 EVM.
>>>>>
>>>>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux
>>>>> for
>>>>> DP HPD. Add the clock frequency for serdes_refclk.
>>>>>
>>>>> Add the endpoint nodes to describe connection from:
>>>>> DSS => MHDP => DisplayPort connector.
>>>>>
>>>>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>>>>> required for controlling DP power. Set status for all required nodes
>>>>> for DP-0 as "okay".
>>>>>
>>>>> Signed-off-by: Rahul T R <[email protected]>
>>>>> [[email protected]: move all the changes together to enable DP-0 in
>>>>> EVM]
>>>>> Signed-off-by: Jayesh Choudhary <[email protected]>
>>>>> ---
>>>>>    arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119
>>>>> +++++++++++++++++++++++
>>>>>    1 file changed, 119 insertions(+)
>>>
>>> [...]
>>>
>>>>> +        reg = <0>;
>>>>> +        cdns,num-lanes = <4>;
>>>>> +        #phy-cells = <0>;
>>>>> +        cdns,phy-type = <PHY_TYPE_DP>;
>>>>> +        resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>>>>> +             <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>>>>> +    };
>>>>> +};
>>>>> +
>>>>> +&mhdp {
>>>>> +    status = "okay";
>>>>> +    pinctrl-names = "default";
>>>>> +    pinctrl-0 = <&dp0_pins_default>;
>>>>> +    phys = <&serdes4_dp_link>;
>>>>> +    phy-names = "dpphy";
>>>>> +};
>>>>> +
>>>>> +&dss_ports {
>>>>> +    port {
>>>>
>>>> Port index has not been added here. Since this port outputs to MHDP
>>>> bridge, this should be "port@0", and a "reg = <0>;" property should be
>>>> added below (along with the address and size cells properties).
>>>>
>>>> I suppose this works functionally in this case, because the port gets
>>>> defaulted to "0" by the driver. But in future, when we add support for
>>>> other dss output(s) on j784s4-evm, the driver will need indices to
>>>> distinguish among them.
>>>>
>>>
>>> Okay. It makes sense.
>>> Just one thing here. Adding reg here would require it to have #address-
>>> cells and #size-cell but since we have only single child port that too
>>> at reg=<0>, it would throw dtbs_check warning:
>>>
>>> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
>>> (graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
>>> single child node 'port@0', #address-cells/#size-cells are not necessary
>>>    also defined at arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3
>>>
>>
>> Okay! Was not aware about this. I still think "port@0" should be
>> specified instead of just "port" and the warning should be ignored, if
>> possible.
>>
>
> Do not ignore new DT check warnings, if you go with "port@0" (which you
> need to do as the "ti,j721e-dss" binding requires it) you must also add
> the #address-cells/#size-cells.
>

The warning that Jayesh mentioned above comes when "port@0" is
mentioned, *along-with* the #address-cells/#size-cells properties.
Essentially, it wants us to not use "port@0" when only single port is
being added whose reg values is 0.

This warning does not come when only a single port other than 0,
"port@1" for e.g., is being used. That's the warning, that should get
ignored, if possible.

However, just mentioning "port@0", without the #address-cells/
#size-cells, would be plain wrong.

Regards
Aradhya

>
>> If there were only a "port@1" child node, this warning would not have
>> come up, and I believe "port@0" should be treated just the same.
>>
>> Moreover, while we can add these properties at a later stage as an
>> incremental patch, adding the size and address cells in the dtsi would
>> affect other platform dts files as well, that use this SoC.
>>
>> For e.g., the patch 5/5 of this series, on AM69-SK will still require
>> the size and address cells for its ports. The clean up then will be that
>> much more, when adding those incremental patches.
>>
>> Anyway, I will let Nishanth and Vignesh take the final call on this.
>>
>> Regards
>> Aradhya
>>
>>>
>>>>> +        dpi0_out: endpoint {
>>>>> +            remote-endpoint = <&dp0_in>;
>>>
>>>
>>> [...]
>>


2023-08-07 19:37:10

by Andrew Davis

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0

On 8/7/23 1:29 PM, Aradhya Bhatia wrote:
>
>
> On 07-Aug-23 21:19, Andrew Davis wrote:
>> On 8/7/23 7:56 AM, Aradhya Bhatia wrote:
>>> Hi Jayesh,
>>>
>>> On 07-Aug-23 17:54, Jayesh Choudhary wrote:
>>>> Hello Aradhya,
>>>>
>>>> Thank you for the review.
>>>>
>>>> On 05/08/23 00:52, Aradhya Bhatia wrote:
>>>>> Hi Jayesh,
>>>>>
>>>>>
>>>>> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>>>>>> From: Rahul T R <[email protected]>
>>>>>>
>>>>>> Enable display for J784S4 EVM.
>>>>>>
>>>>>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux
>>>>>> for
>>>>>> DP HPD. Add the clock frequency for serdes_refclk.
>>>>>>
>>>>>> Add the endpoint nodes to describe connection from:
>>>>>> DSS => MHDP => DisplayPort connector.
>>>>>>
>>>>>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>>>>>> required for controlling DP power. Set status for all required nodes
>>>>>> for DP-0 as "okay".
>>>>>>
>>>>>> Signed-off-by: Rahul T R <[email protected]>
>>>>>> [[email protected]: move all the changes together to enable DP-0 in
>>>>>> EVM]
>>>>>> Signed-off-by: Jayesh Choudhary <[email protected]>
>>>>>> ---
>>>>>>    arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119
>>>>>> +++++++++++++++++++++++
>>>>>>    1 file changed, 119 insertions(+)
>>>>
>>>> [...]
>>>>
>>>>>> +        reg = <0>;
>>>>>> +        cdns,num-lanes = <4>;
>>>>>> +        #phy-cells = <0>;
>>>>>> +        cdns,phy-type = <PHY_TYPE_DP>;
>>>>>> +        resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>>>>>> +             <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>>>>>> +    };
>>>>>> +};
>>>>>> +
>>>>>> +&mhdp {
>>>>>> +    status = "okay";
>>>>>> +    pinctrl-names = "default";
>>>>>> +    pinctrl-0 = <&dp0_pins_default>;
>>>>>> +    phys = <&serdes4_dp_link>;
>>>>>> +    phy-names = "dpphy";
>>>>>> +};
>>>>>> +
>>>>>> +&dss_ports {
>>>>>> +    port {
>>>>>
>>>>> Port index has not been added here. Since this port outputs to MHDP
>>>>> bridge, this should be "port@0", and a "reg = <0>;" property should be
>>>>> added below (along with the address and size cells properties).
>>>>>
>>>>> I suppose this works functionally in this case, because the port gets
>>>>> defaulted to "0" by the driver. But in future, when we add support for
>>>>> other dss output(s) on j784s4-evm, the driver will need indices to
>>>>> distinguish among them.
>>>>>
>>>>
>>>> Okay. It makes sense.
>>>> Just one thing here. Adding reg here would require it to have #address-
>>>> cells and #size-cell but since we have only single child port that too
>>>> at reg=<0>, it would throw dtbs_check warning:
>>>>
>>>> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
>>>> (graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
>>>> single child node 'port@0', #address-cells/#size-cells are not necessary
>>>>    also defined at arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3
>>>>
>>>
>>> Okay! Was not aware about this. I still think "port@0" should be
>>> specified instead of just "port" and the warning should be ignored, if
>>> possible.
>>>
>>
>> Do not ignore new DT check warnings, if you go with "port@0" (which you
>> need to do as the "ti,j721e-dss" binding requires it) you must also add
>> the #address-cells/#size-cells.
>>
>
> The warning that Jayesh mentioned above comes when "port@0" is
> mentioned, *along-with* the #address-cells/#size-cells properties.
> Essentially, it wants us to not use "port@0" when only single port is
> being added whose reg values is 0.
>
> This warning does not come when only a single port other than 0,
> "port@1" for e.g., is being used. That's the warning, that should get
> ignored, if possible.
>

Ah, I see now.

Almost seems like a bug in dtc checks, but checking the code it
looks deliberate, although I cannot see why..

Rob,

Could you provide some guidance on why graph nodes are handled
this way? Seems this is valid:

ports {
#address-cells = <1>;
#size-cells = <0>;

port@1 {
reg = <1>;
};
}

but this is not:

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
};
};

I'm guessing we allow port 0 to not be numbered if it is the only
one for legacy convenience, but *forcing* it to not be numbered
when it would otherwise be more consistent seems overly strict.

Andrew

> However, just mentioning "port@0", without the #address-cells/
> #size-cells, would be plain wrong.
>
> Regards
> Aradhya
>
>>
>>> If there were only a "port@1" child node, this warning would not have
>>> come up, and I believe "port@0" should be treated just the same.
>>>
>>> Moreover, while we can add these properties at a later stage as an
>>> incremental patch, adding the size and address cells in the dtsi would
>>> affect other platform dts files as well, that use this SoC.
>>>
>>> For e.g., the patch 5/5 of this series, on AM69-SK will still require
>>> the size and address cells for its ports. The clean up then will be that
>>> much more, when adding those incremental patches.
>>>
>>> Anyway, I will let Nishanth and Vignesh take the final call on this.
>>>
>>> Regards
>>> Aradhya
>>>
>>>>
>>>>>> +        dpi0_out: endpoint {
>>>>>> +            remote-endpoint = <&dp0_in>;
>>>>
>>>>
>>>> [...]
>>>
>

2023-08-17 14:10:05

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH v9 3/5] arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node

Hi,

On Thu, Aug 03, 2023 at 01:34:39PM +0530, Jayesh Choudhary wrote:
> From: Rahul T R <[email protected]>
>
> Add DSS and DP-bridge node for J784S4 SoC. DSS IP in J784S4 is
> same as DSS IP in J721E, so same compatible is being used.
> The DP is Cadence MHDP8546.
>
> Signed-off-by: Rahul T R <[email protected]>
> [[email protected]: move dss & mhdp node together in main, fix dss node]
> Signed-off-by: Jayesh Choudhary <[email protected]>
> ---
> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 63 ++++++++++++++++++++++
> 1 file changed, 63 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> index 446d7efa715f..824312b9ef9f 100644
> --- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
> @@ -1741,4 +1741,67 @@ c71_3: dsp@67800000 {
> resets = <&k3_reset 40 1>;
> firmware-name = "j784s4-c71_3-fw";
> };
> +
> + mhdp: bridge@a000000 {
> + compatible = "ti,j721e-mhdp8546";
> + reg = <0x0 0xa000000 0x0 0x30a00>,
> + <0x0 0x4f40000 0x0 0x20>;
> + reg-names = "mhdptx", "j721e-intg";
> + clocks = <&k3_clks 217 11>;
> + interrupt-parent = <&gic500>;
> + interrupts = <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>;
> + power-domains = <&k3_pds 217 TI_SCI_PD_EXCLUSIVE>;
> + status = "disabled";
> +
> + dp0_ports: ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> + };
> +
> + dss: dss@4a00000 {
> + compatible = "ti,j721e-dss";

As far as I can see, this compatible limits the (DPI) pixel clock to
160MHz, but the TRM seems to mention that it's 600MHz?

Is it expected?

Maxime


Attachments:
(No filename) (1.65 kB)
signature.asc (235.00 B)
Download all attachments

2023-09-25 10:11:45

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v9 3/5] arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node

Hello Maxime,

On 17/08/23 16:24, Maxime Ripard wrote:
> Hi,
>
> On Thu, Aug 03, 2023 at 01:34:39PM +0530, Jayesh Choudhary wrote:
>> From: Rahul T R <[email protected]>
>>
>> Add DSS and DP-bridge node for J784S4 SoC. DSS IP in J784S4 is
>> same as DSS IP in J721E, so same compatible is being used.
>> The DP is Cadence MHDP8546.
>>

[...]

>> +
>> + dss: dss@4a00000 {
>> + compatible = "ti,j721e-dss";
>
> As far as I can see, this compatible limits the (DPI) pixel clock to
> 160MHz, but the TRM seems to mention that it's 600MHz?
>
> Is it expected?
>
I am unsure about why the max DPI pixel clock was set to 170MHz for
videoport bus type DISPC_VP_DPI.
Bus type DISPC_VP_DPI is used only for tfp410 bridge which can support
min 6.06ns pixel period (165MHz pixel clk).
I think the max value however should still be independent to what the
bridge can support.
We can look into this issue independent to this series.

Tomi,
Any comments here..
There should not be any issue making the max pixel clock for DPI bus
type 600 MHz as well????


-Jayesh

2023-09-25 22:05:47

by Tomi Valkeinen

[permalink] [raw]
Subject: Re: [PATCH v9 3/5] arm64: dts: ti: k3-j784s4-main: Add DSS and DP-bridge node

On 25/09/2023 09:46, Jayesh Choudhary wrote:
> Hello Maxime,
>
> On 17/08/23 16:24, Maxime Ripard wrote:
>> Hi,
>>
>> On Thu, Aug 03, 2023 at 01:34:39PM +0530, Jayesh Choudhary wrote:
>>> From: Rahul T R <[email protected]>
>>>
>>> Add DSS and DP-bridge node for J784S4 SoC. DSS IP in J784S4 is
>>> same as DSS IP in J721E, so same compatible is being used.
>>> The DP is Cadence MHDP8546.
>>>
>
> [...]
>
>>> +
>>> +    dss: dss@4a00000 {
>>> +        compatible = "ti,j721e-dss";
>>
>> As far as I can see, this compatible limits the (DPI) pixel clock to
>> 160MHz, but the TRM seems to mention that it's 600MHz?
>>
>> Is it expected?
>>
> I am unsure about why the max DPI pixel clock was set to 170MHz for
> videoport bus type DISPC_VP_DPI.
> Bus type DISPC_VP_DPI is used only for tfp410 bridge which can support
> min 6.06ns pixel period (165MHz pixel clk).
> I think the max value however should still be independent to what the
> bridge can support.
> We can look into this issue independent to this series.
>
> Tomi,
> Any comments here..
> There should not be any issue making the max pixel clock for DPI bus
> type 600 MHz as well????

The dispc can output at high frequency, but when it goes to DPI, meaning
a parallel video bus outside the SoC, we move into another domain. And
even if the signals would be ok at the SoC's pins at higher freqs, I'm
sure they would degrade quickly with a cable going to the panel
(Disclaimer: I'm no HW engineer =)). If I had to guess, I'd guess that
200 MHz would still be fine-ish in most cases, but I have hard time
believing that a 300 MHz DPI signal would look valid in an oscilloscope.

With a quick look, the J7 datasheet says "Cycle time, VOUT(x)_PCLK " has
min 6.06 ns. As that's the same as the one you mention for tfp410, and
results in 165MHz, it sounds to me that it's just a safe limit, not any
kind of real limit.

On DRA76, I think the "offical" DPI max was the same, but running with
~210 MHz still worked fine, for the particular pieces of hardware I had.

So... I'd keep it (at least near) the official limit, unless someone has
use cases which require higher frequencies.

Tomi

2023-10-13 05:09:21

by Jayesh Choudhary

[permalink] [raw]
Subject: Re: [PATCH v9 4/5] arm64: dts: ti: k3-j784s4-evm: Enable DisplayPort-0


On 08/08/23 00:24, Andrew Davis wrote:
> On 8/7/23 1:29 PM, Aradhya Bhatia wrote:
>>
>>
>> On 07-Aug-23 21:19, Andrew Davis wrote:
>>> On 8/7/23 7:56 AM, Aradhya Bhatia wrote:
>>>> Hi Jayesh,
>>>>
>>>> On 07-Aug-23 17:54, Jayesh Choudhary wrote:
>>>>> Hello Aradhya,
>>>>>
>>>>> Thank you for the review.
>>>>>
>>>>> On 05/08/23 00:52, Aradhya Bhatia wrote:
>>>>>> Hi Jayesh,
>>>>>>
>>>>>>
>>>>>> On 03-Aug-23 13:34, Jayesh Choudhary wrote:
>>>>>>> From: Rahul T R <[email protected]>
>>>>>>>
>>>>>>> Enable display for J784S4 EVM.
>>>>>>>
>>>>>>> Add assigned clocks for DSS, DT node for DisplayPort PHY and pinmux
>>>>>>> for
>>>>>>> DP HPD. Add the clock frequency for serdes_refclk.
>>>>>>>
>>>>>>> Add the endpoint nodes to describe connection from:
>>>>>>> DSS => MHDP => DisplayPort connector.
>>>>>>>
>>>>>>> Also add the GPIO expander-4 node and pinmux for main_i2c4 which is
>>>>>>> required for controlling DP power. Set status for all required nodes
>>>>>>> for DP-0 as "okay".
>>>>>>>
>>>>>>> Signed-off-by: Rahul T R <[email protected]>
>>>>>>> [[email protected]: move all the changes together to enable DP-0 in
>>>>>>> EVM]
>>>>>>> Signed-off-by: Jayesh Choudhary <[email protected]>
>>>>>>> ---
>>>>>>>     arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 119
>>>>>>> +++++++++++++++++++++++
>>>>>>>     1 file changed, 119 insertions(+)
>>>>>
>>>>> [...]
>>>>>
>>>>>>> +        reg = <0>;
>>>>>>> +        cdns,num-lanes = <4>;
>>>>>>> +        #phy-cells = <0>;
>>>>>>> +        cdns,phy-type = <PHY_TYPE_DP>;
>>>>>>> +        resets = <&serdes_wiz4 1>, <&serdes_wiz4 2>,
>>>>>>> +             <&serdes_wiz4 3>, <&serdes_wiz4 4>;
>>>>>>> +    };
>>>>>>> +};
>>>>>>> +
>>>>>>> +&mhdp {
>>>>>>> +    status = "okay";
>>>>>>> +    pinctrl-names = "default";
>>>>>>> +    pinctrl-0 = <&dp0_pins_default>;
>>>>>>> +    phys = <&serdes4_dp_link>;
>>>>>>> +    phy-names = "dpphy";
>>>>>>> +};
>>>>>>> +
>>>>>>> +&dss_ports {
>>>>>>> +    port {
>>>>>>
>>>>>> Port index has not been added here. Since this port outputs to MHDP
>>>>>> bridge, this should be "port@0", and a "reg = <0>;" property
>>>>>> should be
>>>>>> added below (along with the address and size cells properties).
>>>>>>
>>>>>> I suppose this works functionally in this case, because the port gets
>>>>>> defaulted to "0" by the driver. But in future, when we add support
>>>>>> for
>>>>>> other dss output(s) on j784s4-evm, the driver will need indices to
>>>>>> distinguish among them.
>>>>>>
>>>>>
>>>>> Okay. It makes sense.
>>>>> Just one thing here. Adding reg here would require it to have
>>>>> #address-
>>>>> cells and #size-cell but since we have only single child port that too
>>>>> at reg=<0>, it would throw dtbs_check warning:
>>>>>
>>>>> arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi:1828.20-1831.5: Warning
>>>>> (graph_child_address): /bus@100000/dss@4a00000/ports: graph node has
>>>>> single child node 'port@0', #address-cells/#size-cells are not
>>>>> necessary
>>>>>     also defined at
>>>>> arch/arm64/boot/dts/ti/k3-j784s4-evm.dts:911.12-919.3
>>>>>
>>>>
>>>> Okay! Was not aware about this. I still think "port@0" should be
>>>> specified instead of just "port" and the warning should be ignored, if
>>>> possible.
>>>>
>>>
>>> Do not ignore new DT check warnings, if you go with "port@0" (which you
>>> need to do as the "ti,j721e-dss" binding requires it) you must also add
>>> the #address-cells/#size-cells.
>>>
>>
>> The warning that Jayesh mentioned above comes when "port@0" is
>> mentioned, *along-with* the #address-cells/#size-cells properties.
>> Essentially, it wants us to not use "port@0" when only single port is
>> being added whose reg values is 0.
>>
>> This warning does not come when only a single port other than 0,
>> "port@1" for e.g., is being used. That's the warning, that should get
>> ignored, if possible.
>>
>
> Ah, I see now.
>
> Almost seems like a bug in dtc checks, but checking the code it
> looks deliberate, although I cannot see why..
>
> Rob,
>
> Could you provide some guidance on why graph nodes are handled
> this way? Seems this is valid:
>
> ports {
>     #address-cells = <1>;
>     #size-cells = <0>;
>
>     port@1 {
>         reg = <1>;
>     };
> }
>
> but this is not:
>
> ports {
>     #address-cells = <1>;
>     #size-cells = <0>;
>
>     port@0 {
>         reg = <0>;
>     };
> };
>
> I'm guessing we allow port 0 to not be numbered if it is the only
> one for legacy convenience, but *forcing* it to not be numbered
> when it would otherwise be more consistent seems overly strict.
>
> Andrew

Hello Rob, Krzysztof,

For this series, v11 has been already reviewed by Roger and Aradhya:
<https://lore.kernel.org/all/[email protected]/>

Only this warning persist. Can you ACK the series so that it can
be queued/merged.
If W=1 warning is not acceptable, I can revert to port description
here in v9.

Warm Regards,
Jayesh



>
>> However, just mentioning "port@0", without the #address-cells/
>> #size-cells, would be plain wrong.
>>
>> Regards
>> Aradhya
>>
>>>
>>>> If there were only a "port@1" child node, this warning would not have
>>>> come up, and I believe "port@0" should be treated just the same.
>>>>
>>>> Moreover, while we can add these properties at a later stage as an
>>>> incremental patch, adding the size and address cells in the dtsi would
>>>> affect other platform dts files as well, that use this SoC.
>>>>
>>>> For e.g., the patch 5/5 of this series, on AM69-SK will still require
>>>> the size and address cells for its ports. The clean up then will be
>>>> that
>>>> much more, when adding those incremental patches.
>>>>
>>>> Anyway, I will let Nishanth and Vignesh take the final call on this.
>>>>
>>>> Regards
>>>> Aradhya
>>>>
>>>>>
>>>>>>> +        dpi0_out: endpoint {
>>>>>>> +            remote-endpoint = <&dp0_in>;
>>>>>
>>>>>
>>>>> [...]
>>>>
>>