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

Andrzej Hajda a.hajda at samsung.com
Thu Jul 26 11:04:49 UTC 2018


On 26.07.2018 12:23, Krzysztof Kozlowski wrote:
> On 26 July 2018 at 12:12, Andrzej Hajda <a.hajda at samsung.com> wrote:
>> HDMI-DDC for unknown reasons doesn't work with Exynos I2C
>> controllers. Fortunately i2c-gpio comes to the rescue.
> Wait... what? The I2C controller on SoC (or its driver) is buggy in
> some way and we need to use these pins as GPIO to run i2c-gpio driver
> there? It looks like workaround not a proper solution...

But at least working one :) Better solutions are welcome.
This seems to be not uncommon issue, if you for example look into odroid
vendor kernel you can even find hardcoded EDIDs :)

Regards
Andrzej


>
> Best regards,
> Krzysztof
>
>> Signed-off-by: Andrzej Hajda <a.hajda at samsung.com>
>> ---
>>  arch/arm/boot/dts/exynos5250-arndale.dts  | 24 +++++++++++++++--------
>>  arch/arm/boot/dts/exynos5250-pinctrl.dtsi |  6 ++++++
>>  2 files changed, 22 insertions(+), 8 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
>> index 816d89d4cefd..591023391f7d 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,18 @@
>>         status = "okay";
>>         samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>;
>>  };
>> +
>> +&soc {
>> +       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>;
>> --
>> 2.18.0
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>



More information about the dri-devel mailing list