Add the fimc-is node and the required pinctrl nodes for fimc-is driver for Exynos5. Also adds the DT binding documentation for the new fimc-is node. Signed-off-by: Arun Kumar K <arun.kk@xxxxxxxxxxx> Signed-off-by: Kilyeon Im <kilyeon.im@xxxxxxxxxxx> --- .../devicetree/bindings/media/soc/exynos5-is.txt | 81 ++++++++++++++++++++ arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 60 +++++++++++++++ arch/arm/boot/dts/exynos5250-smdk5250.dts | 54 ++++++++++++- arch/arm/boot/dts/exynos5250.dtsi | 8 ++ 4 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/soc/exynos5-is.txt mode change 100644 => 100755 arch/arm/boot/dts/exynos5250-smdk5250.dts mode change 100644 => 100755 arch/arm/boot/dts/exynos5250.dtsi diff --git a/Documentation/devicetree/bindings/media/soc/exynos5-is.txt b/Documentation/devicetree/bindings/media/soc/exynos5-is.txt new file mode 100644 index 0000000..e0fdf02 --- /dev/null +++ b/Documentation/devicetree/bindings/media/soc/exynos5-is.txt @@ -0,0 +1,81 @@ +Samsung EXYNOS SoC Camera Subsystem +----------------------------------- + +The camera subsystem on Samsung Exynos5 SoC has some changes relative +to previous SoC versions. Exynos5 has almost similar MIPI-CSIS and +FIMC-LITE IPs but removed the FIMC-CAPTURE. Instead it has an improved +FIMC-IS which can provide imate data DMA output. + +The device tree binding remain similar to the Exynos4 bindings which can +be seen at samsung-fimc.txt with the addition of fimc-is sub-node which will +be explained here. + +fimc-is subnode of camera node +------------------------------ + +Required properties: + +- compatible : must be "samsung,exynos5250-fimc-is" +- reg : physical base address and size of the memory mapped + registers +- interrupt-parent : Parent interrupt controller +- interrupts : fimc-is interrupt to the parent combiner + +Board specific properties: + +- pinctrl-names : pinctrl names for camera port pinmux control, at least + "default" needs to be specified. +- pinctrl-0...N : pinctrl properties corresponding to pinctrl-names + +Sensor sub-nodes: + +FIMC-IS IP supports custom built sensors to be controlled exclusively by +the FIMC-IS firmware. These sensor properties are to be defined here. +Sensor nodes are described in the same way as in generic sensors used in +Exynos4 and described in samsung-fimc.txt. + +Example: + +SoC common node: + + fimc_is: fimc-is@13000000 { + compatible = "samsung,exynos5250-fimc-is"; + reg = <0x13000000 0x200000>; + interrupt-parent = <&combiner>; + interrupts = <19 1>; + status = "disabled"; + }; + +Board specific node: + + fimc-is@13000000 { + status = "okay"; + pinctrl-0 = + <&cam_port_a_clk_active + &cam_bayer_clk_active + &isp_uart + &cam_i2c0 + &cam_i2c1>; + pinctrl-names = "default"; + s5k4e5 { + compatible = "samsung,s5k4e5"; + gpios = <&gpx1 2 1>; + clock-frequency = <24000000>; + port { + is_s5k4e5_ep: endpoint { + remote-endpoint = <&csis0_ep>; + }; + }; + }; + s5k6a3 { + compatible = "samsung,s5k6a3"; + gpios = <&gpx1 0 1>; + clock-frequency = <24000000>; + port { + is_s5k6a3_ep: endpoint { + remote-endpoint = <&csis1_ep>; + }; + }; + }; + }; + diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi index 3caaa21..320c22b 100644 --- a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi +++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi @@ -556,6 +556,38 @@ }; pinctrl@13400000 { + gpe1: gpe1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf0: gpf0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf1: gpf1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpg2: gpg2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + gph0: gph0 { gpio-controller; #gpio-cells = <2>; @@ -594,6 +626,34 @@ samsung,pin-pud = <0>; samsung,pin-drv = <0>; }; + + cam_bayer_clk_active: cam-bayer-clk-active { + samsung,pins = "gpg2-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + isp_uart: isp-uart { + samsung,pins = "gpe1-0", "gpe1-1"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + cam_i2c0: cam-i2c0 { + samsung,pins = "gpf0-0", "gpf0-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + cam_i2c1: cam-i2c1 { + samsung,pins = "gpf0-2", "gpf0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; }; pinctrl_3: pinctrl@03680000 { diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts old mode 100644 new mode 100755 index 356e014..0a2da64 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts @@ -92,6 +92,7 @@ m5mols@1f { compatible = "fujitsu,m-5mols"; + status = "disabled"; reg = <0x1F>; gpios = <&gpx3 3 0xf>, <&gpx1 2 1>; clock-frequency = <24000000>; @@ -242,7 +243,7 @@ csis_0: csis@13C20000 { status = "okay"; - clock-frequency = <166000000>; + clock-frequency = <267000000>; /* s5k4e5 */ #address-cells = <1>; #size-cells = <0>; @@ -250,7 +251,7 @@ port@3 { reg = <3>; csis0_ep: endpoint { - remote-endpoint = <&m5mols_ep>; + remote-endpoint = <&is_s5k4e5_ep>; data-lanes = <1 2 3 4>; samsung,csis-hs-settle = <12>; samsung,csis-wclk; @@ -258,5 +259,54 @@ }; }; + csis_1: csis@13C30000 { + status = "okay"; + clock-frequency = <160000000>; + #address-cells = <1>; + #size-cells = <0>; + + /* Camera D (4) MIPI CSI-2 (CSIS1) */ + port@4 { + reg = <4>; + csis1_ep: endpoint { + remote-endpoint = <&is_s5k6a3_ep>; + data-lanes = <1>; + samsung,csis-hs-settle = <18>; + samsung,csis-wclk; + }; + }; + }; + + fimc-is@13000000 { + status = "okay"; + pinctrl-0 = + <&cam_port_a_clk_active + &cam_bayer_clk_active + &isp_uart + &cam_i2c0 + &cam_i2c1>; + pinctrl-names = "default"; + s5k4e5 { + compatible = "samsung,s5k4e5"; + gpios = <&gpx1 2 1>; + clock-frequency = <24000000>; + port { + is_s5k4e5_ep: endpoint { + remote-endpoint = <&csis0_ep>; + }; + }; + }; + s5k6a3 { + compatible = "samsung,s5k6a3"; + gpios = <&gpx1 0 1>; + clock-frequency = <24000000>; + port { + is_s5k6a3_ep: endpoint { + remote-endpoint = <&csis1_ep>; + }; + }; + }; + }; + }; }; diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi old mode 100644 new mode 100755 index 564c05f..e18df49 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi @@ -410,5 +410,13 @@ bus-width = <2>; status = "disabled"; }; + + fimc_is: fimc-is@13000000 { + compatible = "samsung,exynos5250-fimc-is"; + reg = <0x13000000 0x200000>; + interrupt-parent = <&combiner>; + interrupts = <19 1>; + status = "disabled"; + }; }; }; -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html