This article describes in greater details the patches required to work around the Ixora V1.0A and V1.1A HDMI DDC issues with Apalis TK1 V1.0A/B and V1.1A hardware revisions.
The HDMI DDC/EDID aka SCL/SDA pins need to be connected to the proper TK1 SoC DDC/EDID I2C bus.
As follows a summary of the HDMI DDC/EDID signal side:
Nexperia IP4791CZ12 Pin | Nexperia IP4791CZ12 Function | Ixora Resistor Array | Ixora V1.1A X19 Pin | Ixora V1.1A X19 Function |
---|---|---|---|---|
2 | SCL_IN | RA11A | 36 | LVDS SDA |
3 | SDA_IN | RA11B | 38 | LVDS SCL |
As follows a summary of the TK1 SoC DDC/EDID side:
Apalis X1 Pin | Apalis Function | TK1 SoC Ball Apalis V1.0/V1.1 | Ixora Resistor Array | Ixora V1.0/V1.1 |
---|---|---|---|---|
5 | GPIO3 | DDC_SCL | RA1B | X27-15 |
7 | GPIO4 | DDC_SDA | RA1A | X27-16 |
For reference the TK1 SoC ball to GPIO name as well as number assignment of above-mentioned pins:
TK1 SoC Ball | TK1 SoC GPIO | GPIO Number |
---|---|---|
DDC_SCL | GPIO3_PV.04 | 172 |
DDC_SDA | GPIO3_PV.05 | 173 |
Make sure DDC/EDID pin muxing is proper (default since BSP 2.8b2):
http://git.toradex.com/cgit/linux-toradex.git/diff/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi?h=toradex_tk1_l4t_r21.6&id=722035cfcd7e238000eafa5803e26072433371c8
diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
index 8d4ff4e..5c9ba71 100644
--- a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
+++ b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
@@ -119,14 +119,14 @@
/* Apalis GPIO */
ddc_scl_pv4 {
nvidia,pins = "ddc_scl_pv4";
- nvidia,function = "rsvd2";
+ nvidia,function = "i2c4";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
ddc_sda_pv5 {
nvidia,pins = "ddc_sda_pv5";
- nvidia,function = "rsvd2";
+ nvidia,function = "i2c4";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
Make sure GPIOs are not conflicting:
diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-gpio.dtsi
b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-gpio.dtsi
index 100e344..f0882c5 100644
--- a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-gpio.dtsi
+++ b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-gpio.dtsi
@@ -17,9 +17,11 @@
TEGRA_GPIO(K, 7)
TEGRA_GPIO(N, 7)
TEGRA_GPIO(O, 5)
+ TEGRA_GPIO(T, 5)
+ TEGRA_GPIO(T, 6)
TEGRA_GPIO(V, 3)
- TEGRA_GPIO(V, 4)
- TEGRA_GPIO(V, 5)
+ /* TEGRA_GPIO(V, 4) */
+ /* TEGRA_GPIO(V, 5) */
TEGRA_GPIO(W, 3)
TEGRA_GPIO(W, 5)
TEGRA_GPIO(BB, 0)
Make sure DDC/EDID aka I2C3 enables rcv-sel (default in upcoming BSP 2.8b3):
http://git.toradex.com/cgit/linux-toradex.git/commit/?h=toradex_tk1_l4t_r21.6-next&id=4193bdbf4e88ef304304a011271bdd14b45dea35
diff --git a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
index 52e35ca..8cf7cdc 100644
--- a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
+++ b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-pinmux.dtsi
@@ -123,6 +123,7 @@
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+ nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
};
ddc_sda_pv5 {
nvidia,pins = "ddc_sda_pv5";
@@ -130,6 +131,7 @@
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+ nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
};
pex_l0_rst_n_pdd1 {
nvidia,pins = "pex_l0_rst_n_pdd1";
Make sure proper I2C bus is used for DDC/EDID
Before 2.8b1:
diff --git a/arch/arm/mach-tegra/board-apalis-tk1-panel.c b/arch/arm/mach-tegra/board-apalis-tk1-
panel.c
index 9ee23e7..fda57d1 100644
--- a/arch/arm/mach-tegra/board-apalis-tk1-panel.c
+++ b/arch/arm/mach-tegra/board-apalis-tk1-panel.c
@@ -378,7 +378,7 @@ static struct tegra_dc_out apalis_tk1_disp2_out = {
.parent_clk = "pll_d",
#endif /* CONFIG_TEGRA_HDMI_PRIMARY */
- .ddc_bus = 1,
+ .ddc_bus = 3,
.hotplug_gpio = apalis_tk1_hdmi_hpd,
.hdmi_out = &apalis_tk1_hdmi_out,
starting with 2.8b1:
--- a/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-displays.dtsi
+++ b/arch/arm/boot/dts/tegra124-platforms/tegra124-apalis-displays.dtsi
@@ -209,7 +209,7 @@
};
};
- hdmi_ddc: i2c@7000c400 {
+ hdmi_ddc: i2c@7000c700 {
clock-frequency = <10000>;
};