2022-04-27 11:36:39

by Aradhya Bhatia

[permalink] [raw]
Subject: [PATCH 0/4] arm64: ti: k3-am62: Add DT nodes to enable display

The patch series adds DT nodes for Display SubSystem and other
peripherals required to enable the display on the AM625-SK board. An
HDMI monitor can be connected to the board to view the image/video
outputs.

This series should be applied on top of Vignesh Raghavendra's patch
series that introduces the basic soc and board peripherals for AM62x.

Link for Vignesh's Patch series:
https://lore.kernel.org/linux-arm-kernel/[email protected]/


Aradhya Bhatia (4):
arm64: dts: ti: k3-am62-main: Add node for Display SubSystem
arm64: dts: ti: k3-am625-sk: Add DSS pinmux info
arm64: dts: ti: k3-am625-sk: Update main-i2c1 frequency
arm64: dts: ti: k3-am625-sk: Add DSS ports, HDMI tx & peripherals

arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 30 +++++++
arch/arm64/boot/dts/ti/k3-am625-sk.dts | 103 ++++++++++++++++++++++-
2 files changed, 132 insertions(+), 1 deletion(-)

--
2.36.0


2022-04-27 11:36:43

by Aradhya Bhatia

[permalink] [raw]
Subject: [PATCH 3/4] arm64: dts: ti: k3-am625-sk: Update main-i2c1 frequency

Update the main-i2c1 frequency from 400KHz to 100KHz.

There are 2 devices on the i2c-1 bus. An IO-Expander and an HDMI TX.
Both of these are capable of servicing i2c upto a max frequency of
400KHz.

However, below warning log shows up while running any userspace
application that uses the HDMI display when the main-i2c1 frequency is
set at 400KHz.

[ 985.773431] omap_i2c 20010000.i2c: controller timed out

With some further tests using 2 frequencies, 100 KHz and 400KHz across
different HDMI cable & monitor setups, it was observed that,

- i2c frequency of 400KHz works fine with standard good quality HDMI
cables with branded displays. It will show the controller timeout
warnings only when a sub-standard / generic HDMI cable is being used.

- Using 100KHz for i2c frequency, stops the warning from showing up
for the generic HDMI cables as well.

Since, the IO-Expander is the only other component on that i2c bus and
we are not performing any intensive operations on it, it would be safe
to set the i2c frequency at 100KHz in order to support a broader variety
of HDMI cables.

Signed-off-by: Aradhya Bhatia <[email protected]>
---
arch/arm64/boot/dts/ti/k3-am625-sk.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/ti/k3-am625-sk.dts b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
index ab3d90d358ee..96414c5dacf7 100644
--- a/arch/arm64/boot/dts/ti/k3-am625-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
@@ -357,7 +357,7 @@ &main_i2c0 {
&main_i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c1_pins_default>;
- clock-frequency = <400000>;
+ clock-frequency = <100000>;

exp1: gpio@22 {
compatible = "ti,tca6424";
--
2.36.0

2022-04-27 11:36:47

by Aradhya Bhatia

[permalink] [raw]
Subject: [PATCH 2/4] arm64: dts: ti: k3-am625-sk: Add DSS pinmux info

Add pinmux info for video output signals from DSS.

The DSS outputs dpi signals through its second video port (vp2). This
output is of 24 bits (RGB888) and is forwarded to an HDMI transmitter
chip on the board.

Signed-off-by: Aradhya Bhatia <[email protected]>
---
arch/arm64/boot/dts/ti/k3-am625-sk.dts | 38 ++++++++++++++++++++++++++
1 file changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am625-sk.dts b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
index 5c38ee5ff9b2..ab3d90d358ee 100644
--- a/arch/arm64/boot/dts/ti/k3-am625-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
@@ -255,6 +255,39 @@ AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
>;
};

+ main_dss0_pins_default: main-dss0-pins-default {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x0100, PIN_OUTPUT, 0) /* (AC25) VOUT0_VSYNC */
+ AM62X_IOPAD(0x00f8, PIN_OUTPUT, 0) /* (AB24) VOUT0_HSYNC */
+ AM62X_IOPAD(0x0104, PIN_OUTPUT, 0) /* (AC24) VOUT0_PCLK */
+ AM62X_IOPAD(0x00fc, PIN_OUTPUT, 0) /* (Y20) VOUT0_DE */
+ AM62X_IOPAD(0x00b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
+ AM62X_IOPAD(0x00bc, PIN_OUTPUT, 0) /* (V24) VOUT0_DATA1 */
+ AM62X_IOPAD(0x00c0, PIN_OUTPUT, 0) /* (W25) VOUT0_DATA2 */
+ AM62X_IOPAD(0x00c4, PIN_OUTPUT, 0) /* (W24) VOUT0_DATA3 */
+ AM62X_IOPAD(0x00c8, PIN_OUTPUT, 0) /* (Y25) VOUT0_DATA4 */
+ AM62X_IOPAD(0x00cc, PIN_OUTPUT, 0) /* (Y24) VOUT0_DATA5 */
+ AM62X_IOPAD(0x00d0, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA6 */
+ AM62X_IOPAD(0x00d4, PIN_OUTPUT, 0) /* (AA25) VOUT0_DATA7 */
+ AM62X_IOPAD(0x00d8, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA8 */
+ AM62X_IOPAD(0x00dc, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA9 */
+ AM62X_IOPAD(0x00e0, PIN_OUTPUT, 0) /* (V20) VOUT0_DATA10 */
+ AM62X_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA11 */
+ AM62X_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (AB25) VOUT0_DATA12 */
+ AM62X_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (AA24) VOUT0_DATA13 */
+ AM62X_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA14 */
+ AM62X_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (AA21) VOUT0_DATA15 */
+ AM62X_IOPAD(0x005c, PIN_OUTPUT, 1) /* (R24) GPMC0_AD8.VOUT0_DATA16 */
+ AM62X_IOPAD(0x0060, PIN_OUTPUT, 1) /* (R25) GPMC0_AD9.VOUT0_DATA17 */
+ AM62X_IOPAD(0x0064, PIN_OUTPUT, 1) /* (T25) GPMC0_AD10.VOUT0_DATA18 */
+ AM62X_IOPAD(0x0068, PIN_OUTPUT, 1) /* (R21) GPMC0_AD11.VOUT0_DATA19 */
+ AM62X_IOPAD(0x006c, PIN_OUTPUT, 1) /* (T22) GPMC0_AD12.VOUT0_DATA20 */
+ AM62X_IOPAD(0x0070, PIN_OUTPUT, 1) /* (T24) GPMC0_AD13.VOUT0_DATA21 */
+ AM62X_IOPAD(0x0074, PIN_OUTPUT, 1) /* (U25) GPMC0_AD14.VOUT0_DATA22 */
+ AM62X_IOPAD(0x0078, PIN_OUTPUT, 1) /* (U24) GPMC0_AD15.VOUT0_DATA23 */
+ >;
+ };
+
vdd_sd_dv_pins_default: vdd-sd-dv-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */
@@ -412,6 +445,11 @@ cpsw3g_phy1: ethernet-phy@1 {
};
};

+&dss {
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_dss0_pins_default>;
+};
+
&mailbox0_cluster0 {
mbox_m4_0: mbox-m4-0 {
ti,mbox-rx = <0 0 0>;
--
2.36.0