Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: imx53-smd: Add OV5642 video capture support

Add video capture support from the OV5642 to IPU CSI0 on
the i.MX53 SMD.

Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
[fabio: remove unnecessary 'regulator-always-on' from camera regulators]
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Steve Longerbeam and committed by
Shawn Guo
e2c16156 e5ad3230

+73
+73
arch/arm/boot/dts/imx53-smd.dts
··· 185 185 >; 186 186 }; 187 187 188 + pinctrl_ipu_csi0: ipucsi0grp { 189 + fsl,pins = < 190 + MX53_PAD_CSI0_DAT12__IPU_CSI0_D_12 0x1c4 191 + MX53_PAD_CSI0_DAT13__IPU_CSI0_D_13 0x1c4 192 + MX53_PAD_CSI0_DAT14__IPU_CSI0_D_14 0x1c4 193 + MX53_PAD_CSI0_DAT15__IPU_CSI0_D_15 0x1c4 194 + MX53_PAD_CSI0_DAT16__IPU_CSI0_D_16 0x1c4 195 + MX53_PAD_CSI0_DAT17__IPU_CSI0_D_17 0x1c4 196 + MX53_PAD_CSI0_DAT18__IPU_CSI0_D_18 0x1c4 197 + MX53_PAD_CSI0_DAT19__IPU_CSI0_D_19 0x1c4 198 + MX53_PAD_CSI0_PIXCLK__IPU_CSI0_PIXCLK 0x1e4 199 + MX53_PAD_CSI0_VSYNC__IPU_CSI0_VSYNC 0x1e4 200 + MX53_PAD_CSI0_MCLK__IPU_CSI0_HSYNC 0x1e4 201 + MX53_PAD_CSI0_DATA_EN__IPU_CSI0_DATA_EN 0x1e4 202 + >; 203 + }; 204 + 205 + pinctrl_ov5642: ov5642grp { 206 + fsl,pins = < 207 + MX53_PAD_NANDF_WP_B__GPIO6_9 0x1e4 208 + MX53_PAD_NANDF_RB0__GPIO6_10 0x1e4 209 + MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 0x1c4 210 + >; 211 + }; 212 + 188 213 pinctrl_uart1: uart1grp { 189 214 fsl,pins = < 190 215 MX53_PAD_CSI0_DAT10__UART1_TXD_MUX 0x1e4 ··· 281 256 camera: ov5642@3c { 282 257 compatible = "ovti,ov5642"; 283 258 reg = <0x3c>; 259 + pinctrl-names = "default"; 260 + pinctrl-0 = <&pinctrl_ov5642>; 261 + assigned-clocks = <&clks IMX5_CLK_SSI_EXT1_SEL>, 262 + <&clks IMX5_CLK_SSI_EXT1_COM_SEL>; 263 + assigned-clock-parents = <&clks IMX5_CLK_PLL2_SW>, 264 + <&clks IMX5_CLK_SSI_EXT1_PODF>; 265 + assigned-clock-rates = <0>, <24000000>; 266 + clocks = <&clks IMX5_CLK_SSI_EXT1_GATE>; 267 + clock-names = "xclk"; 268 + DVDD-supply = <&ldo9_reg>; 269 + AVDD-supply = <&ldo7_reg>; 270 + reset-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>; 271 + powerdown-gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>; 272 + 273 + port { 274 + ov5642_to_ipu_csi0: endpoint { 275 + remote-endpoint = <&ipu_csi0_from_parallel_sensor>; 276 + bus-width = <8>; 277 + hsync-active = <1>; 278 + vsync-active = <1>; 279 + }; 280 + }; 284 281 }; 285 282 286 283 pmic: dialog@48 { 287 284 compatible = "dlg,da9053", "dlg,da9052"; 288 285 reg = <0x48>; 286 + interrupt-parent = <&gpio7>; 287 + interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 288 + 289 + regulators { 290 + ldo7_reg: ldo7 { 291 + regulator-min-microvolt = <1200000>; 292 + regulator-max-microvolt = <3600000>; 293 + }; 294 + 295 + ldo9_reg: ldo9 { 296 + regulator-min-microvolt = <1250000>; 297 + regulator-max-microvolt = <3650000>; 298 + }; 299 + }; 289 300 }; 290 301 }; 291 302 ··· 331 270 phy-mode = "rmii"; 332 271 phy-reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>; 333 272 status = "okay"; 273 + }; 274 + 275 + &ipu_csi0_from_parallel_sensor { 276 + remote-endpoint = <&ov5642_to_ipu_csi0>; 277 + data-shift = <12>; /* Lines 19:12 used */ 278 + hsync-active = <1>; 279 + vsync-active = <1>; 280 + }; 281 + 282 + &ipu_csi0 { 283 + pinctrl-names = "default"; 284 + pinctrl-0 = <&pinctrl_ipu_csi0>; 334 285 };