Common properties for I2C and Hdmi Subsystem is moved to exynos5 dtsi file. It also adds Device tree nodes and clocks information for exynos5420 SoC. It adds pinctrl node for hdmi hpd gpio and update binding documents.
This patch is based on v3.11-next/soc-exynos5420-pinctrl branch at http://git.kernel.org/cgit/linux/kernel/git/kgene/linux-samsung.git
device tree binding document for hdmi compatible type is update at http://www.spinics.net/lists/dri-devel/msg39987.html
v2: 1) Added patch for moving common i2c properties to exynos5.dtsi 2) Added patch for moving common hdmi, mixer properties to exynos5.dtsi 3) moved hpd pinctrl node to board file. 4) Added Sachin's patch to update binding document for hdmi with hpd information.
Andrew Bresticker (1): ARM: dts: exynos5420: add i2c device nodes
Rahul Sharma (6): ARM: dts: exynos5250: move common i2c properties to exynos5 dtsi ARM: dts: exynos5250: move common hdmi properties to exynos5 dtsi ARM: dts: exynos5420: add dt nodes for hdmi subsystem ARM: dts: exynos5420: add clocks for hdmi subsystem ARM: dts: exynos5420: add hdmi hpd gpio pinctrl node of/documentation: update with clock information for exynos hdmi subsystem
Sachin Kamat (1): of/documentation: Update hpd gpio property for exynos_hdmi
.../devicetree/bindings/video/exynos_hdmi.txt | 20 ++++++-- .../devicetree/bindings/video/exynos_mixer.txt | 4 ++ arch/arm/boot/dts/cros5250-common.dtsi | 2 +- arch/arm/boot/dts/exynos5.dtsi | 48 ++++++++++++++++++++ arch/arm/boot/dts/exynos5250-arndale.dts | 8 +++- arch/arm/boot/dts/exynos5250-smdk5250.dts | 10 +++- arch/arm/boot/dts/exynos5250-snow.dts | 8 ++++ arch/arm/boot/dts/exynos5250.dtsi | 28 +----------- arch/arm/boot/dts/exynos5420-smdk5420.dts | 31 +++++++++++++ arch/arm/boot/dts/exynos5420.dtsi | 46 +++++++++++++++++++ 10 files changed, 171 insertions(+), 34 deletions(-)
I2C nodes shares many properties across exynos5 SoCs (exynos5250 and exyno5420). Common code is moved to exynos5.dtsi which is included in exyno5250 and exynos5420 SoC files.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/exynos5.dtsi | 36 +++++++++++++++++++++++++++++ arch/arm/boot/dts/exynos5250-arndale.dts | 1 + arch/arm/boot/dts/exynos5250-smdk5250.dts | 3 +++ arch/arm/boot/dts/exynos5250.dtsi | 20 ---------------- 4 files changed, 40 insertions(+), 20 deletions(-)
diff --git a/arch/arm/boot/dts/exynos5.dtsi b/arch/arm/boot/dts/exynos5.dtsi index f65e124..1ae179e 100644 --- a/arch/arm/boot/dts/exynos5.dtsi +++ b/arch/arm/boot/dts/exynos5.dtsi @@ -108,4 +108,40 @@ interrupts = <0 42 0>; status = "disabled"; }; + + i2c_0: i2c@12C60000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x12C60000 0x100>; + interrupts = <0 56 0>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c_1: i2c@12C70000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x12C70000 0x100>; + interrupts = <0 57 0>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c_2: i2c@12C80000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x12C80000 0x100>; + interrupts = <0 58 0>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c_3: i2c@12C90000 { + compatible = "samsung,s3c2440-i2c"; + reg = <0x12C90000 0x100>; + interrupts = <0 59 0>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; }; diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts index abc7272..5c7dd6d 100644 --- a/arch/arm/boot/dts/exynos5250-arndale.dts +++ b/arch/arm/boot/dts/exynos5250-arndale.dts @@ -30,6 +30,7 @@ };
i2c@12C60000 { + status = "okay"; samsung,i2c-sda-delay = <100>; samsung,i2c-max-bus-freq = <20000>; samsung,i2c-slave-addr = <0x66>; diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index 35a66de..d3da369 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts @@ -28,6 +28,7 @@ };
i2c@12C60000 { + status = "okay"; samsung,i2c-sda-delay = <100>; samsung,i2c-max-bus-freq = <20000>;
@@ -62,6 +63,7 @@ };
i2c@12C70000 { + status = "okay"; samsung,i2c-sda-delay = <100>; samsung,i2c-max-bus-freq = <20000>;
@@ -101,6 +103,7 @@ };
i2c@12C80000 { + status = "okay"; samsung,i2c-sda-delay = <100>; samsung,i2c-max-bus-freq = <66000>;
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index d04ab0a..baf6f88 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi @@ -217,11 +217,6 @@ };
i2c_0: i2c@12C60000 { - compatible = "samsung,s3c2440-i2c"; - reg = <0x12C60000 0x100>; - interrupts = <0 56 0>; - #address-cells = <1>; - #size-cells = <0>; clocks = <&clock 294>; clock-names = "i2c"; pinctrl-names = "default"; @@ -229,11 +224,6 @@ };
i2c_1: i2c@12C70000 { - compatible = "samsung,s3c2440-i2c"; - reg = <0x12C70000 0x100>; - interrupts = <0 57 0>; - #address-cells = <1>; - #size-cells = <0>; clocks = <&clock 295>; clock-names = "i2c"; pinctrl-names = "default"; @@ -241,11 +231,6 @@ };
i2c_2: i2c@12C80000 { - compatible = "samsung,s3c2440-i2c"; - reg = <0x12C80000 0x100>; - interrupts = <0 58 0>; - #address-cells = <1>; - #size-cells = <0>; clocks = <&clock 296>; clock-names = "i2c"; pinctrl-names = "default"; @@ -253,11 +238,6 @@ };
i2c_3: i2c@12C90000 { - compatible = "samsung,s3c2440-i2c"; - reg = <0x12C90000 0x100>; - interrupts = <0 59 0>; - #address-cells = <1>; - #size-cells = <0>; clocks = <&clock 297>; clock-names = "i2c"; pinctrl-names = "default";
From: Andrew Bresticker abrestic@chromium.org
This adds device-tree nodes for the i2c busses on Exynos 5420 platforms.
Signed-off-by: Andrew Bresticker abrestic@chromium.org Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/exynos5420.dtsi | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 8c54c4b..953f877 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi @@ -24,6 +24,10 @@ pinctrl2 = &pinctrl_2; pinctrl3 = &pinctrl_3; pinctrl4 = &pinctrl_4; + i2c0 = &i2c_0; + i2c1 = &i2c_1; + i2c2 = &i2c_2; + i2c3 = &i2c_3; };
cpus { @@ -145,4 +149,32 @@ clocks = <&clock 260>, <&clock 131>; clock-names = "uart", "clk_uart_baud0"; }; + + i2c_0: i2c@12C60000 { + clocks = <&clock 261>; + clock-names = "i2c"; + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_bus>; + }; + + i2c_1: i2c@12C70000 { + clocks = <&clock 262>; + clock-names = "i2c"; + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_bus>; + }; + + i2c_2: i2c@12C80000 { + clocks = <&clock 263>; + clock-names = "i2c"; + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_bus>; + }; + + i2c_3: i2c@12C90000 { + clocks = <&clock 264>; + clock-names = "i2c"; + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_bus>; + }; };
Hdmi Subsystem nodes shares many properties across exynos5 SoCs (exynos5250 and exyno5420). Common code is moved to exynos5.dtsi which is included in exyno5250 and exynos5420 SoC files.
It also renames the hdmi and mixer nodes as per dt naming convention in the format name@phy_add.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/cros5250-common.dtsi | 2 +- arch/arm/boot/dts/exynos5.dtsi | 12 ++++++++++++ arch/arm/boot/dts/exynos5250-arndale.dts | 7 ++++++- arch/arm/boot/dts/exynos5250-smdk5250.dts | 7 ++++++- arch/arm/boot/dts/exynos5250-snow.dts | 8 ++++++++ arch/arm/boot/dts/exynos5250.dtsi | 8 ++------ 6 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi index 3f0239e..abda0b9 100644 --- a/arch/arm/boot/dts/cros5250-common.dtsi +++ b/arch/arm/boot/dts/cros5250-common.dtsi @@ -299,7 +299,7 @@ status = "disabled"; };
- hdmi { + hdmi@14530000 { hpd-gpio = <&gpx3 7 0>; };
diff --git a/arch/arm/boot/dts/exynos5.dtsi b/arch/arm/boot/dts/exynos5.dtsi index 1ae179e..dcb4943 100644 --- a/arch/arm/boot/dts/exynos5.dtsi +++ b/arch/arm/boot/dts/exynos5.dtsi @@ -144,4 +144,16 @@ #size-cells = <0>; status = "disabled"; }; + + hdmi@14530000 { + reg = <0x14530000 0x70000>; + interrupts = <0 95 0>; + status = "disabled"; + }; + + mixer@14450000 { + reg = <0x14450000 0x10000>; + interrupts = <0 94 0>; + status = "disabled"; + }; }; diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts index 5c7dd6d..c18c346 100644 --- a/arch/arm/boot/dts/exynos5250-arndale.dts +++ b/arch/arm/boot/dts/exynos5250-arndale.dts @@ -423,13 +423,18 @@ }; };
- hdmi { + hdmi@14530000 { + status = "okay"; hpd-gpio = <&gpx3 7 2>; vdd_osc-supply = <&ldo10_reg>; vdd_pll-supply = <&ldo8_reg>; vdd-supply = <&ldo8_reg>; };
+ mixer@14450000 { + status = "okay"; + }; + mmc_reg: voltage-regulator { compatible = "regulator-fixed"; regulator-name = "VDD_33ON_2.8V"; diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index d3da369..c1b8b7f 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts @@ -221,10 +221,15 @@ status = "disabled"; };
- hdmi { + hdmi@14530000 { + status = "okay"; hpd-gpio = <&gpx3 7 0>; };
+ mixer@14450000 { + status = "okay"; + }; + codec@11000000 { samsung,mfc-r = <0x43000000 0x800000>; samsung,mfc-l = <0x51000000 0x800000>; diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts index e79331d..b1378af 100644 --- a/arch/arm/boot/dts/exynos5250-snow.dts +++ b/arch/arm/boot/dts/exynos5250-snow.dts @@ -196,4 +196,12 @@ clock-frequency = <24000000>; }; }; + + hdmi@14530000 { + status = "okay"; + }; + + mixer@14450000 { + status = "okay"; + }; }; diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index baf6f88..0fdbe55 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi @@ -578,20 +578,16 @@ clock-names = "gscl"; };
- hdmi { + hdmi@14530000 { compatible = "samsung,exynos5-hdmi"; - reg = <0x14530000 0x70000>; - interrupts = <0 95 0>; clocks = <&clock 333>, <&clock 136>, <&clock 137>, <&clock 333>, <&clock 333>; clock-names = "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy", "hdmiphy"; };
- mixer { + mixer@14450000 { compatible = "samsung,exynos5-mixer"; - reg = <0x14450000 0x10000>; - interrupts = <0 94 0>; };
dp-controller {
Add hdmi, mixer, ddc device tree nodes for Exynos 5420 SoC.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/exynos5420-smdk5420.dts | 20 ++++++++++++++++++++ arch/arm/boot/dts/exynos5420.dtsi | 8 ++++++++ 2 files changed, 28 insertions(+)
diff --git a/arch/arm/boot/dts/exynos5420-smdk5420.dts b/arch/arm/boot/dts/exynos5420-smdk5420.dts index 08607df..fcd0f69 100644 --- a/arch/arm/boot/dts/exynos5420-smdk5420.dts +++ b/arch/arm/boot/dts/exynos5420-smdk5420.dts @@ -30,4 +30,24 @@ clock-frequency = <24000000>; }; }; + + hdmi@14530000 { + status = "okay"; + hpd-gpio = <&gpx3 7 0>; + }; + + mixer@14450000 { + status = "okay"; + }; + + i2c_2: i2c@12C80000 { + samsung,i2c-sda-delay = <100>; + samsung,i2c-max-bus-freq = <66000>; + status = "okay"; + + hdmiddc@50 { + compatible = "samsung,exynos4210-hdmiddc"; + reg = <0x50>; + }; + }; }; diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 953f877..93caef7 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi @@ -177,4 +177,12 @@ pinctrl-names = "default"; pinctrl-0 = <&i2c3_bus>; }; + + hdmi@14530000 { + compatible = "samsung,exynos4212-hdmi"; + }; + + mixer@14450000 { + compatible = "samsung,exynos5420-mixer"; + }; };
Add clocks for hdmi and mixer for exynos5420 SoC.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/exynos5420.dtsi | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 93caef7..5fa4093 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi @@ -180,9 +180,15 @@
hdmi@14530000 { compatible = "samsung,exynos4212-hdmi"; + clocks = <&clock 413>, <&clock 143>, <&clock 144>, + <&clock 158>, <&clock 1024>; + clock-names = "hdmi", "sclk_hdmi", "sclk_pixel", + "sclk_hdmiphy", "mout_hdmi"; };
mixer@14450000 { compatible = "samsung,exynos5420-mixer"; + clocks = <&clock 431>, <&clock 143>; + clock-names = "mixer", "sclk_hdmi"; }; };
Add pinctrl node for hdmi-hpd gpio pin to exynos5420 device tree files.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- arch/arm/boot/dts/exynos5420-smdk5420.dts | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/arch/arm/boot/dts/exynos5420-smdk5420.dts b/arch/arm/boot/dts/exynos5420-smdk5420.dts index fcd0f69..0f98eab 100644 --- a/arch/arm/boot/dts/exynos5420-smdk5420.dts +++ b/arch/arm/boot/dts/exynos5420-smdk5420.dts @@ -31,9 +31,20 @@ }; };
+ pinctrl@13400000 { + hdmi_hpd_irq: hdmi-hpd-irq { + samsung,pins = "gpx3-7"; + samsung,pin-function = <0>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + }; + hdmi@14530000 { status = "okay"; hpd-gpio = <&gpx3 7 0>; + pinctrl-names = "default"; + pinctrl-0 = <&hdmi_hpd_irq>; };
mixer@14450000 {
From: Sachin Kamat sachin.kamat@linaro.org
Exynos SoCs use pinctrl to configure GPIOs. Update the document to reflect this change.
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- Documentation/devicetree/bindings/video/exynos_hdmi.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt index 589edee..584385a 100644 --- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt @@ -8,9 +8,7 @@ Required properties: - hpd-gpio: following information about the hotplug gpio pin. a) phandle of the gpio controller node. b) pin number within the gpio controller. - c) pin function mode. - d) optional flags and pull up/down. - e) drive strength. + c) optional flags and pull up/down.
Example:
@@ -18,5 +16,5 @@ Example: compatible = "samsung,exynos5-hdmi"; reg = <0x14530000 0x100000>; interrupts = <0 95 0>; - hpd-gpio = <&gpx3 7 0xf 1 3>; + hpd-gpio = <&gpx3 7 1>; };
Adding information about clocks to the binding documentation for exynos mixer and hdmi.
Signed-off-by: Rahul Sharma rahul.sharma@samsung.com --- Documentation/devicetree/bindings/video/exynos_hdmi.txt | 14 +++++++++++++- Documentation/devicetree/bindings/video/exynos_mixer.txt | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt index 584385a..827e64b 100644 --- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt @@ -9,7 +9,19 @@ Required properties: a) phandle of the gpio controller node. b) pin number within the gpio controller. c) optional flags and pull up/down. - +- clocks: list of clock IDs from SoC clock driver. + a) hdmi: It is required for gate operation on aclk_200_disp1 clock + which clocks the display1 block. + b) sclk_hdmi: It is required for gate operation on sclk_hdmi clock + which clocks hdmi IP. + c) sclk_pixel: Parent for mux mout_hdmi. + d) sclk_hdmiphy: Parent for mux mout_hdmi. + e) mout_hdmi: It is required by the driver to switch between the 2 + parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable + after configuration, parent is set to sclk_hdmiphy else + sclk_pixel. +- clock-names: aliases as per driver requirements for above clock IDs: + "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi". Example:
hdmi { diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 9b2ea03..54790a2 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt @@ -5,6 +5,10 @@ Required properties: - reg: physical base address of the mixer and length of memory mapped region. - interrupts: interrupt number to the cpu. +- clocks: list of clock IDs from SoC clock driver. + a) mixer: It is required for gate operation on aclk_200_disp1 clock + which clocks the display1 block. + b) sclk_hdmi: Parent for mux mout_mixer.
Example:
dri-devel@lists.freedesktop.org