diff mbox series

[v2,1/2] ARM: dts: exynos: arndale: use i2c-gpio for HDMI-DDC

Message ID 20180726132209.18127-1-a.hajda@samsung.com (mailing list archive)
State Accepted
Headers show
Series [v2,1/2] ARM: dts: exynos: arndale: use i2c-gpio for HDMI-DDC | expand

Commit Message

Andrzej Hajda July 26, 2018, 1:22 p.m. UTC
HDMI-DDC for unknown reasons doesn't work with Exynos I2C
controllers. Fortunately i2c-gpio comes to the rescue.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
 arch/arm/boot/dts/exynos5250-arndale.dts  | 28 ++++++++++++++++-------
 arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  6 +++++
 2 files changed, 26 insertions(+), 8 deletions(-)

Comments

Krzysztof Kozlowski July 26, 2018, 1:47 p.m. UTC | #1
On 26 July 2018 at 15:22, Andrzej Hajda <a.hajda@samsung.com> wrote:
> HDMI-DDC for unknown reasons doesn't work with Exynos I2C
> controllers. Fortunately i2c-gpio comes to the rescue.
>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5250-arndale.dts  | 28 ++++++++++++++++-------
>  arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  6 +++++
>  2 files changed, 26 insertions(+), 8 deletions(-)
>

Thanks, looks good. I'll take it after merge window.

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Krzysztof Kozlowski Aug. 29, 2018, 6:57 p.m. UTC | #2
On Thu, Jul 26, 2018 at 03:22:09PM +0200, Andrzej Hajda wrote:
> HDMI-DDC for unknown reasons doesn't work with Exynos I2C
> controllers. Fortunately i2c-gpio comes to the rescue.
> 
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  arch/arm/boot/dts/exynos5250-arndale.dts  | 28 ++++++++++++++++-------
>  arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  6 +++++
>  2 files changed, 26 insertions(+), 8 deletions(-)

Thanks, applied.

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index 816d89d4cefd..e7a9b9aa85f1 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -211,7 +211,7 @@ 
 
 &hdmi {
 	status = "okay";
-	ddc = <&i2c_2>;
+	ddc = <&i2c_ddc>;
 	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_LOW>;
 	vdd_osc-supply = <&ldo10_reg>;
 	vdd_pll-supply = <&ldo8_reg>;
@@ -513,13 +513,6 @@ 
 	};
 };
 
-&i2c_2 {
-	status = "okay";
-	/* used by HDMI DDC */
-	samsung,i2c-sda-delay = <100>;
-	samsung,i2c-max-bus-freq = <66000>;
-};
-
 &i2c_3 {
 	status = "okay";
 
@@ -608,3 +601,22 @@ 
 	status = "okay";
 	samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
 };
+
+&soc {
+	/*
+	 * For unknown reasons HDMI-DDC does not work with Exynos I2C
+	 * controllers. Lets use software I2C over GPIO pins as a workaround.
+	 */
+	i2c_ddc: i2c-gpio {
+		pinctrl-names = "default";
+		pinctrl-0 = <&i2c2_gpio_bus>;
+		status = "okay";
+		compatible = "i2c-gpio";
+		gpios = <&gpa0 6 0 /* sda */
+			 &gpa0 7 0 /* scl */
+			>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+	};
+};
diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
index 6ff6dea29d44..b25d520393b8 100644
--- a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
+++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
@@ -225,6 +225,12 @@ 
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	i2c2_gpio_bus: i2c2-gpio-bus {
+		samsung,pins = "gpa0-6", "gpa0-7";
+		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	uart2_data: uart2-data {
 		samsung,pins = "gpa1-0", "gpa1-1";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;