1*464c2572SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*464c2572SKrzysztof Kozlowski%YAML 1.2 3*464c2572SKrzysztof Kozlowski--- 4*464c2572SKrzysztof Kozlowski$id: http://devicetree.org/schemas/media/samsung,fimc.yaml# 5*464c2572SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml# 6*464c2572SKrzysztof Kozlowski 7*464c2572SKrzysztof Kozlowskititle: Samsung S5P/Exynos SoC Camera Subsystem (FIMC) 8*464c2572SKrzysztof Kozlowski 9*464c2572SKrzysztof Kozlowskimaintainers: 10*464c2572SKrzysztof Kozlowski - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 11*464c2572SKrzysztof Kozlowski - Sylwester Nawrocki <s.nawrocki@samsung.com> 12*464c2572SKrzysztof Kozlowski 13*464c2572SKrzysztof Kozlowskidescription: | 14*464c2572SKrzysztof Kozlowski The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices 15*464c2572SKrzysztof Kozlowski represented by separate device tree nodes. Currently this includes: Fully 16*464c2572SKrzysztof Kozlowski Integrated Mobile Camera (FIMC, in the S5P SoCs series known as CAMIF), MIPI 17*464c2572SKrzysztof Kozlowski CSIS, FIMC-LITE and FIMC-IS (ISP). 18*464c2572SKrzysztof Kozlowski 19*464c2572SKrzysztof Kozlowskiproperties: 20*464c2572SKrzysztof Kozlowski compatible: 21*464c2572SKrzysztof Kozlowski const: samsung,fimc 22*464c2572SKrzysztof Kozlowski 23*464c2572SKrzysztof Kozlowski ranges: true 24*464c2572SKrzysztof Kozlowski 25*464c2572SKrzysztof Kozlowski '#address-cells': 26*464c2572SKrzysztof Kozlowski const: 1 27*464c2572SKrzysztof Kozlowski 28*464c2572SKrzysztof Kozlowski '#size-cells': 29*464c2572SKrzysztof Kozlowski const: 1 30*464c2572SKrzysztof Kozlowski 31*464c2572SKrzysztof Kozlowski '#clock-cells': 32*464c2572SKrzysztof Kozlowski const: 1 33*464c2572SKrzysztof Kozlowski description: | 34*464c2572SKrzysztof Kozlowski The clock specifier cell stores an index of a clock: 0, 1 for 35*464c2572SKrzysztof Kozlowski CAM_A_CLKOUT, CAM_B_CLKOUT clocks respectively. 36*464c2572SKrzysztof Kozlowski 37*464c2572SKrzysztof Kozlowski clocks: 38*464c2572SKrzysztof Kozlowski minItems: 2 39*464c2572SKrzysztof Kozlowski maxItems: 4 40*464c2572SKrzysztof Kozlowski 41*464c2572SKrzysztof Kozlowski clock-names: 42*464c2572SKrzysztof Kozlowski minItems: 2 43*464c2572SKrzysztof Kozlowski items: 44*464c2572SKrzysztof Kozlowski - const: sclk_cam0 45*464c2572SKrzysztof Kozlowski - const: sclk_cam1 46*464c2572SKrzysztof Kozlowski - const: pxl_async0 47*464c2572SKrzysztof Kozlowski - const: pxl_async1 48*464c2572SKrzysztof Kozlowski 49*464c2572SKrzysztof Kozlowski clock-output-names: 50*464c2572SKrzysztof Kozlowski maxItems: 2 51*464c2572SKrzysztof Kozlowski 52*464c2572SKrzysztof Kozlowski parallel-ports: 53*464c2572SKrzysztof Kozlowski $ref: /schemas/graph.yaml#/properties/ports 54*464c2572SKrzysztof Kozlowski description: 55*464c2572SKrzysztof Kozlowski Active parallel video input ports. 56*464c2572SKrzysztof Kozlowski 57*464c2572SKrzysztof Kozlowski patternProperties: 58*464c2572SKrzysztof Kozlowski "^port@[01]$": 59*464c2572SKrzysztof Kozlowski $ref: /schemas/graph.yaml#/$defs/port-base 60*464c2572SKrzysztof Kozlowski description: 61*464c2572SKrzysztof Kozlowski Camera A and camera B inputs. 62*464c2572SKrzysztof Kozlowski 63*464c2572SKrzysztof Kozlowski properties: 64*464c2572SKrzysztof Kozlowski endpoint: 65*464c2572SKrzysztof Kozlowski $ref: /schemas/media/video-interfaces.yaml# 66*464c2572SKrzysztof Kozlowski unevaluatedProperties: false 67*464c2572SKrzysztof Kozlowski 68*464c2572SKrzysztof Kozlowski pinctrl-names: 69*464c2572SKrzysztof Kozlowski minItems: 1 70*464c2572SKrzysztof Kozlowski items: 71*464c2572SKrzysztof Kozlowski - const: default 72*464c2572SKrzysztof Kozlowski - const: idle 73*464c2572SKrzysztof Kozlowski - const: active_a 74*464c2572SKrzysztof Kozlowski - const: active_b 75*464c2572SKrzysztof Kozlowski 76*464c2572SKrzysztof KozlowskipatternProperties: 77*464c2572SKrzysztof Kozlowski "^csis@[0-9a-f]+$": 78*464c2572SKrzysztof Kozlowski type: object 79*464c2572SKrzysztof Kozlowski $ref: samsung,exynos4210-csis.yaml# 80*464c2572SKrzysztof Kozlowski description: MIPI CSI-2 receiver. 81*464c2572SKrzysztof Kozlowski 82*464c2572SKrzysztof Kozlowski "^fimc@[0-9a-f]+$": 83*464c2572SKrzysztof Kozlowski type: object 84*464c2572SKrzysztof Kozlowski $ref: samsung,exynos4210-fimc.yaml# 85*464c2572SKrzysztof Kozlowski description: Fully Integrated Mobile Camera. 86*464c2572SKrzysztof Kozlowski 87*464c2572SKrzysztof Kozlowski "^fimc-is@[0-9a-f]+$": 88*464c2572SKrzysztof Kozlowski type: object 89*464c2572SKrzysztof Kozlowski $ref: samsung,exynos4212-fimc-is.yaml# 90*464c2572SKrzysztof Kozlowski description: Imaging Subsystem (FIMC-IS). 91*464c2572SKrzysztof Kozlowski 92*464c2572SKrzysztof Kozlowski "^fimc-lite@[0-9a-f]+$": 93*464c2572SKrzysztof Kozlowski type: object 94*464c2572SKrzysztof Kozlowski $ref: samsung,exynos4212-fimc-lite.yaml# 95*464c2572SKrzysztof Kozlowski description: Camera host interface (FIMC-LITE). 96*464c2572SKrzysztof Kozlowski 97*464c2572SKrzysztof Kozlowskirequired: 98*464c2572SKrzysztof Kozlowski - compatible 99*464c2572SKrzysztof Kozlowski - '#address-cells' 100*464c2572SKrzysztof Kozlowski - '#clock-cells' 101*464c2572SKrzysztof Kozlowski - clocks 102*464c2572SKrzysztof Kozlowski - clock-names 103*464c2572SKrzysztof Kozlowski - clock-output-names 104*464c2572SKrzysztof Kozlowski - ranges 105*464c2572SKrzysztof Kozlowski - '#size-cells' 106*464c2572SKrzysztof Kozlowski 107*464c2572SKrzysztof KozlowskiadditionalProperties: false 108*464c2572SKrzysztof Kozlowski 109*464c2572SKrzysztof Kozlowskiexamples: 110*464c2572SKrzysztof Kozlowski - | 111*464c2572SKrzysztof Kozlowski #include <dt-bindings/clock/exynos4.h> 112*464c2572SKrzysztof Kozlowski #include <dt-bindings/gpio/gpio.h> 113*464c2572SKrzysztof Kozlowski #include <dt-bindings/interrupt-controller/arm-gic.h> 114*464c2572SKrzysztof Kozlowski 115*464c2572SKrzysztof Kozlowski camera@11800000 { 116*464c2572SKrzysztof Kozlowski compatible = "samsung,fimc"; 117*464c2572SKrzysztof Kozlowski #clock-cells = <1>; 118*464c2572SKrzysztof Kozlowski #address-cells = <1>; 119*464c2572SKrzysztof Kozlowski #size-cells = <1>; 120*464c2572SKrzysztof Kozlowski ranges = <0x0 0x0 0x18000000>; 121*464c2572SKrzysztof Kozlowski 122*464c2572SKrzysztof Kozlowski clocks = <&clock CLK_SCLK_CAM0>, <&clock CLK_SCLK_CAM1>, 123*464c2572SKrzysztof Kozlowski <&clock CLK_PIXELASYNCM0>, <&clock CLK_PIXELASYNCM1>; 124*464c2572SKrzysztof Kozlowski clock-names = "sclk_cam0", "sclk_cam1", "pxl_async0", "pxl_async1"; 125*464c2572SKrzysztof Kozlowski clock-output-names = "cam_a_clkout", "cam_b_clkout"; 126*464c2572SKrzysztof Kozlowski 127*464c2572SKrzysztof Kozlowski assigned-clocks = <&clock CLK_MOUT_CAM0>, 128*464c2572SKrzysztof Kozlowski <&clock CLK_MOUT_CAM1>; 129*464c2572SKrzysztof Kozlowski assigned-clock-parents = <&clock CLK_XUSBXTI>, 130*464c2572SKrzysztof Kozlowski <&clock CLK_XUSBXTI>; 131*464c2572SKrzysztof Kozlowski 132*464c2572SKrzysztof Kozlowski pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>; 133*464c2572SKrzysztof Kozlowski pinctrl-names = "default"; 134*464c2572SKrzysztof Kozlowski 135*464c2572SKrzysztof Kozlowski fimc@11800000 { 136*464c2572SKrzysztof Kozlowski compatible = "samsung,exynos4212-fimc"; 137*464c2572SKrzysztof Kozlowski reg = <0x11800000 0x1000>; 138*464c2572SKrzysztof Kozlowski interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 139*464c2572SKrzysztof Kozlowski clocks = <&clock CLK_FIMC0>, 140*464c2572SKrzysztof Kozlowski <&clock CLK_SCLK_FIMC0>; 141*464c2572SKrzysztof Kozlowski clock-names = "fimc", "sclk_fimc"; 142*464c2572SKrzysztof Kozlowski power-domains = <&pd_cam>; 143*464c2572SKrzysztof Kozlowski samsung,sysreg = <&sys_reg>; 144*464c2572SKrzysztof Kozlowski iommus = <&sysmmu_fimc0>; 145*464c2572SKrzysztof Kozlowski 146*464c2572SKrzysztof Kozlowski samsung,pix-limits = <4224 8192 1920 4224>; 147*464c2572SKrzysztof Kozlowski samsung,mainscaler-ext; 148*464c2572SKrzysztof Kozlowski samsung,isp-wb; 149*464c2572SKrzysztof Kozlowski samsung,cam-if; 150*464c2572SKrzysztof Kozlowski }; 151*464c2572SKrzysztof Kozlowski 152*464c2572SKrzysztof Kozlowski /* ... FIMC 1-3 */ 153*464c2572SKrzysztof Kozlowski 154*464c2572SKrzysztof Kozlowski csis@11880000 { 155*464c2572SKrzysztof Kozlowski compatible = "samsung,exynos4210-csis"; 156*464c2572SKrzysztof Kozlowski reg = <0x11880000 0x4000>; 157*464c2572SKrzysztof Kozlowski interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; 158*464c2572SKrzysztof Kozlowski clocks = <&clock CLK_CSIS0>, 159*464c2572SKrzysztof Kozlowski <&clock CLK_SCLK_CSIS0>; 160*464c2572SKrzysztof Kozlowski clock-names = "csis", "sclk_csis"; 161*464c2572SKrzysztof Kozlowski assigned-clocks = <&clock CLK_MOUT_CSIS0>, 162*464c2572SKrzysztof Kozlowski <&clock CLK_SCLK_CSIS0>; 163*464c2572SKrzysztof Kozlowski assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>; 164*464c2572SKrzysztof Kozlowski assigned-clock-rates = <0>, <176000000>; 165*464c2572SKrzysztof Kozlowski 166*464c2572SKrzysztof Kozlowski bus-width = <4>; 167*464c2572SKrzysztof Kozlowski power-domains = <&pd_cam>; 168*464c2572SKrzysztof Kozlowski phys = <&mipi_phy 0>; 169*464c2572SKrzysztof Kozlowski phy-names = "csis"; 170*464c2572SKrzysztof Kozlowski #address-cells = <1>; 171*464c2572SKrzysztof Kozlowski #size-cells = <0>; 172*464c2572SKrzysztof Kozlowski 173*464c2572SKrzysztof Kozlowski vddcore-supply = <&ldo8_reg>; 174*464c2572SKrzysztof Kozlowski vddio-supply = <&ldo10_reg>; 175*464c2572SKrzysztof Kozlowski 176*464c2572SKrzysztof Kozlowski /* Camera C (3) MIPI CSI-2 (CSIS0) */ 177*464c2572SKrzysztof Kozlowski port@3 { 178*464c2572SKrzysztof Kozlowski reg = <3>; 179*464c2572SKrzysztof Kozlowski endpoint { 180*464c2572SKrzysztof Kozlowski remote-endpoint = <&s5c73m3_ep>; 181*464c2572SKrzysztof Kozlowski data-lanes = <1 2 3 4>; 182*464c2572SKrzysztof Kozlowski samsung,csis-hs-settle = <12>; 183*464c2572SKrzysztof Kozlowski }; 184*464c2572SKrzysztof Kozlowski }; 185*464c2572SKrzysztof Kozlowski }; 186*464c2572SKrzysztof Kozlowski 187*464c2572SKrzysztof Kozlowski /* ... CSIS 1 */ 188*464c2572SKrzysztof Kozlowski 189*464c2572SKrzysztof Kozlowski fimc-lite@12390000 { 190*464c2572SKrzysztof Kozlowski compatible = "samsung,exynos4212-fimc-lite"; 191*464c2572SKrzysztof Kozlowski reg = <0x12390000 0x1000>; 192*464c2572SKrzysztof Kozlowski interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; 193*464c2572SKrzysztof Kozlowski power-domains = <&pd_isp>; 194*464c2572SKrzysztof Kozlowski clocks = <&isp_clock CLK_ISP_FIMC_LITE0>; 195*464c2572SKrzysztof Kozlowski clock-names = "flite"; 196*464c2572SKrzysztof Kozlowski iommus = <&sysmmu_fimc_lite0>; 197*464c2572SKrzysztof Kozlowski }; 198*464c2572SKrzysztof Kozlowski 199*464c2572SKrzysztof Kozlowski /* ... FIMC-LITE 1 */ 200*464c2572SKrzysztof Kozlowski 201*464c2572SKrzysztof Kozlowski fimc-is@12000000 { 202*464c2572SKrzysztof Kozlowski compatible = "samsung,exynos4212-fimc-is"; 203*464c2572SKrzysztof Kozlowski reg = <0x12000000 0x260000>; 204*464c2572SKrzysztof Kozlowski interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, 205*464c2572SKrzysztof Kozlowski <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 206*464c2572SKrzysztof Kozlowski clocks = <&isp_clock CLK_ISP_FIMC_LITE0>, 207*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_FIMC_LITE1>, 208*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_PPMUISPX>, 209*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_PPMUISPMX>, 210*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_FIMC_ISP>, 211*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_FIMC_DRC>, 212*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_FIMC_FD>, 213*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_MCUISP>, 214*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_GICISP>, 215*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_MCUCTL_ISP>, 216*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_PWM_ISP>, 217*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_DIV_ISP0>, 218*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_DIV_ISP1>, 219*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_DIV_MCUISP0>, 220*464c2572SKrzysztof Kozlowski <&isp_clock CLK_ISP_DIV_MCUISP1>, 221*464c2572SKrzysztof Kozlowski <&clock CLK_MOUT_MPLL_USER_T>, 222*464c2572SKrzysztof Kozlowski <&clock CLK_ACLK200>, 223*464c2572SKrzysztof Kozlowski <&clock CLK_ACLK400_MCUISP>, 224*464c2572SKrzysztof Kozlowski <&clock CLK_DIV_ACLK200>, 225*464c2572SKrzysztof Kozlowski <&clock CLK_DIV_ACLK400_MCUISP>, 226*464c2572SKrzysztof Kozlowski <&clock CLK_UART_ISP_SCLK>; 227*464c2572SKrzysztof Kozlowski clock-names = "lite0", "lite1", "ppmuispx", 228*464c2572SKrzysztof Kozlowski "ppmuispmx", "isp", 229*464c2572SKrzysztof Kozlowski "drc", "fd", "mcuisp", 230*464c2572SKrzysztof Kozlowski "gicisp", "mcuctl_isp", "pwm_isp", 231*464c2572SKrzysztof Kozlowski "ispdiv0", "ispdiv1", "mcuispdiv0", 232*464c2572SKrzysztof Kozlowski "mcuispdiv1", "mpll", "aclk200", 233*464c2572SKrzysztof Kozlowski "aclk400mcuisp", "div_aclk200", 234*464c2572SKrzysztof Kozlowski "div_aclk400mcuisp", "uart"; 235*464c2572SKrzysztof Kozlowski iommus = <&sysmmu_fimc_isp>, <&sysmmu_fimc_drc>, 236*464c2572SKrzysztof Kozlowski <&sysmmu_fimc_fd>, <&sysmmu_fimc_mcuctl>; 237*464c2572SKrzysztof Kozlowski iommu-names = "isp", "drc", "fd", "mcuctl"; 238*464c2572SKrzysztof Kozlowski power-domains = <&pd_isp>; 239*464c2572SKrzysztof Kozlowski 240*464c2572SKrzysztof Kozlowski #address-cells = <1>; 241*464c2572SKrzysztof Kozlowski #size-cells = <1>; 242*464c2572SKrzysztof Kozlowski ranges; 243*464c2572SKrzysztof Kozlowski 244*464c2572SKrzysztof Kozlowski pmu@10020000 { 245*464c2572SKrzysztof Kozlowski reg = <0x10020000 0x3000>; 246*464c2572SKrzysztof Kozlowski }; 247*464c2572SKrzysztof Kozlowski 248*464c2572SKrzysztof Kozlowski i2c-isp@12140000 { 249*464c2572SKrzysztof Kozlowski compatible = "samsung,exynos4212-i2c-isp"; 250*464c2572SKrzysztof Kozlowski reg = <0x12140000 0x100>; 251*464c2572SKrzysztof Kozlowski clocks = <&isp_clock CLK_ISP_I2C1_ISP>; 252*464c2572SKrzysztof Kozlowski clock-names = "i2c_isp"; 253*464c2572SKrzysztof Kozlowski pinctrl-0 = <&fimc_is_i2c1>; 254*464c2572SKrzysztof Kozlowski pinctrl-names = "default"; 255*464c2572SKrzysztof Kozlowski #address-cells = <1>; 256*464c2572SKrzysztof Kozlowski #size-cells = <0>; 257*464c2572SKrzysztof Kozlowski 258*464c2572SKrzysztof Kozlowski image-sensor@10 { 259*464c2572SKrzysztof Kozlowski compatible = "samsung,s5k6a3"; 260*464c2572SKrzysztof Kozlowski reg = <0x10>; 261*464c2572SKrzysztof Kozlowski svdda-supply = <&cam_io_reg>; 262*464c2572SKrzysztof Kozlowski svddio-supply = <&ldo19_reg>; 263*464c2572SKrzysztof Kozlowski afvdd-supply = <&ldo19_reg>; 264*464c2572SKrzysztof Kozlowski clock-frequency = <24000000>; 265*464c2572SKrzysztof Kozlowski /* CAM_B_CLKOUT */ 266*464c2572SKrzysztof Kozlowski clocks = <&camera 1>; 267*464c2572SKrzysztof Kozlowski clock-names = "extclk"; 268*464c2572SKrzysztof Kozlowski gpios = <&gpm1 6 GPIO_ACTIVE_LOW>; 269*464c2572SKrzysztof Kozlowski 270*464c2572SKrzysztof Kozlowski port { 271*464c2572SKrzysztof Kozlowski endpoint { 272*464c2572SKrzysztof Kozlowski remote-endpoint = <&csis1_ep>; 273*464c2572SKrzysztof Kozlowski data-lanes = <1>; 274*464c2572SKrzysztof Kozlowski }; 275*464c2572SKrzysztof Kozlowski }; 276*464c2572SKrzysztof Kozlowski }; 277*464c2572SKrzysztof Kozlowski }; 278*464c2572SKrzysztof Kozlowski }; 279*464c2572SKrzysztof Kozlowski }; 280