| From 7f089685ba50a9648b1bde38b1a8522ecf8d5e98 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 26 Jul 2018 15:22:09 +0200 |
| Subject: ARM: dts: exynos: Use i2c-gpio for HDMI-DDC on Arndale |
| |
| From: Andrzej Hajda <a.hajda@samsung.com> |
| |
| [ Upstream commit 620375c8fdf2f9f5110ed48d6c407cc4b7554f86 ] |
| |
| 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> |
| Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm/boot/dts/exynos5250-arndale.dts | 28 ++++++++++++++++------- |
| arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 6 +++++ |
| 2 files changed, 26 insertions(+), 8 deletions(-) |
| |
| diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts |
| index 7a8a5c55701a8..bb3fcd652b5d7 100644 |
| --- a/arch/arm/boot/dts/exynos5250-arndale.dts |
| +++ b/arch/arm/boot/dts/exynos5250-arndale.dts |
| @@ -150,7 +150,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>; |
| @@ -452,13 +452,6 @@ |
| }; |
| }; |
| |
| -&i2c_2 { |
| - status = "okay"; |
| - /* used by HDMI DDC */ |
| - samsung,i2c-sda-delay = <100>; |
| - samsung,i2c-max-bus-freq = <66000>; |
| -}; |
| - |
| &i2c_3 { |
| status = "okay"; |
| |
| @@ -547,3 +540,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 6ff6dea29d449..b25d520393b8b 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>; |
| -- |
| 2.20.1 |
| |