summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Suvorov <oleksandr.suvorov@toradex.com>2020-06-09 19:37:31 +0300
committerOleksandr Suvorov <oleksandr.suvorov@toradex.com>2020-06-19 11:39:10 +0300
commit89ddf87e6b1242d8ff7ae91796a44b257ae8ec18 (patch)
treeef828b0aa72d15990e5368266cf471bebfa8a661
parentf73d8b1caf5b6b837ed39e2bdd60040163d43c56 (diff)
overlays: apalis-imx6: add csi camera ov5640 V1.1B
Add support of MIPI CSI-2 serial camera interface for Apalis iMX6 module. Related-to: ELB-1316 Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
-rw-r--r--overlays/apalis-imx6_ov5640_overlay.dts113
1 files changed, 113 insertions, 0 deletions
diff --git a/overlays/apalis-imx6_ov5640_overlay.dts b/overlays/apalis-imx6_ov5640_overlay.dts
new file mode 100644
index 0000000..a66c6c3
--- /dev/null
+++ b/overlays/apalis-imx6_ov5640_overlay.dts
@@ -0,0 +1,113 @@
+// CSI Camera Module 5MP OV5640 orderable at Toradex.
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <imx6q-pinfunc.h>
+
+/ {
+ compatible = "toradex,apalis_imx6q";
+
+ fragment@0 {
+ target-path="/";
+ __overlay__ {
+ clk_ov5640_osc: clk_ov5640_osc_int {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <22000000>;
+ };
+
+ reg_ov5640_1v8_d_o_vdd: regulator-ov5640-1v8-d-o-vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "DOVDD/DVDD_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ vin-supply = <&reg_3v3_sw>;
+ };
+
+ reg_ov5640_2v8_a_vdd: regulator-ov5640-2v8-a-vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD/AFVDD_2.8V";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-always-on;
+ vin-supply = <&reg_3v3_sw>;
+ };
+ };
+ };
+
+ fragment@1 {
+ target-path = "/soc/aips-bus@2100000/i2c@21a8000";
+ __overlay__ {
+ status = "okay";
+
+ ov5640_mipi@3c {
+ compatible = "ovti,ov5640";
+ reg = <0x3c>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_cam_mclk_stash &pinctrl_apalis_gpio1 &pinctrl_csi_reset>;
+ clocks = <&clk_ov5640_osc>;
+ clock-names = "xclk";
+ DOVDD-supply = <&reg_ov5640_1v8_d_o_vdd>;
+ AVDD-supply = <&reg_ov5640_2v8_a_vdd>;
+ DVDD-supply = <&reg_ov5640_1v8_d_o_vdd>;
+ powerdown-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ port {
+ /* MIPI CSI bus endpoint */
+ ov5640_to_mipi_csi2: endpoint {
+ remote-endpoint = <&mipi_csi_from_ov5640>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+ };
+ };
+
+ fragment@2 {
+ target-path = "/soc/aips-bus@2100000/mipi@21dc000/";
+ __overlay__ {
+ status = "okay";
+
+ port@0 {
+ reg = <0>;
+
+ mipi_csi_from_ov5640: endpoint {
+ remote-endpoint = <&ov5640_to_mipi_csi2>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+ };
+
+ fragment@3 {
+ target-path = "/soc/aips-bus@2000000/iomuxc@20e0000/";
+ __overlay__ {
+ pinctrl-0 = <&pinctrl_apalis_gpio2 &pinctrl_apalis_gpio3
+ &pinctrl_apalis_gpio4 &pinctrl_apalis_gpio5
+ &pinctrl_apalis_gpio6 &pinctrl_apalis_gpio7
+ &pinctrl_apalis_gpio8
+ >;
+
+ pinctrl_cam_mclk_stash: cammclkstashgrp {
+ fsl,pins = <
+ /* CAM sys_mclk */
+ MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x0000
+ >;
+ };
+
+ pinctrl_csi_reset: csiresetgrp {
+ fsl,pins = <
+ MX6QDL_PAD_NANDF_D4__GPIO2_IO04 0x130b0 /* reset */
+ >;
+ };
+ };
+ };
+};
+