Commit 6bc3ea47 authored by Adam Ford's avatar Adam Ford Committed by Shawn Guo
Browse files

arm64: dts: imx8mn-beacon: Add support for OV5640 Camera



The baseboard has a very specific pinout for the TD Next 5640
camera which uses an OV5640 sensor.  Enable it as part of the
deveopment kit baseboard instead of an overlay.

Enable the camera with the following
  media-ctl -l "'ov5640 1-0010':0 -> 'csis-32e30000.mipi-csi':0 [1]"
  media-ctl -v -V "'ov5640 1-0010':0 [fmt:UYVY8_1X16/640x480 field:none]"
  media-ctl -v -V "'crossbar':0 [fmt:UYVY8_1X16/640x480 field:none]"
  media-ctl -v -V "'mxc_isi.0':0 [fmt:UYVY8_1X16/640x480 field:none]"

Signed-off-by: default avatarAdam Ford <aford173@gmail.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent ae9279f3
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
@@ -43,6 +43,17 @@ reg_audio: regulator-audio {
		enable-active-high;
	};

	reg_camera: regulator-camera {
		compatible = "regulator-fixed";
		regulator-name = "mipi_pwr";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&pca6416_1 0 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		startup-delay-us = <100000>;
		regulator-always-on;
	};

	reg_usdhc2_vmmc: regulator-usdhc2 {
		compatible = "regulator-fixed";
		regulator-name = "vsd_3v3";
@@ -96,6 +107,36 @@ eeprom@0 {
	};
};

&i2c2 {
	clock-frequency = <384000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";

	camera@10 {
		compatible = "ovti,ov5640";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ov5640>;
		reg = <0x10>;
		clocks = <&clk IMX8MN_CLK_CLKO1>;
		clock-names = "xclk";
		assigned-clocks = <&clk IMX8MN_CLK_CLKO1>;
		assigned-clock-parents = <&clk IMX8MN_CLK_24M>;
		assigned-clock-rates = <24000000>;
		AVDD-supply = <&reg_camera>;  /* 2.8v */
		powerdown-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;

		port {
			/* MIPI CSI-2 bus endpoint */
			ov5640_to_mipi_csi2: endpoint {
				remote-endpoint = <&mipi_csi_in>;
				clock-lanes = <0>;
				data-lanes = <1 2>;
			};
		};
	};
};
&i2c4 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
@@ -145,11 +186,28 @@ wm8962: audio-codec@1a {
	};
};

&isi {
	status = "okay";
};

&easrc {
	fsl,asrc-rate = <48000>;
	status = "okay";
};

&mipi_csi {
	status = "okay";

	ports {
		port@0 {
			mipi_csi_in: endpoint {
				remote-endpoint = <&ov5640_to_mipi_csi2>;
				data-lanes = <1 2>;
			};
		};
	};
};

&sai3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai3>;
@@ -226,6 +284,14 @@ MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x41
		>;
	};

	pinctrl_ov5640: ov5640grp {
		fsl,pins = <
			MX8MN_IOMUXC_GPIO1_IO07_GPIO1_IO7		0x19
			MX8MN_IOMUXC_GPIO1_IO06_GPIO1_IO6		0x19
			MX8MN_IOMUXC_GPIO1_IO14_CCMSRCGPCMIX_CLKO1	0x59
		>;
	};

	pinctrl_pcal6414: pcal6414-gpiogrp {
		fsl,pins = <
			MX8MN_IOMUXC_SAI2_MCLK_GPIO4_IO27		0x19