summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--overlays/Makefile1
-rw-r--r--overlays/verdin-imx8mp_mezzanine-ov5640-2_overlay.dts89
-rw-r--r--overlays/verdin-imx8mp_mezzanine-ov5640_overlay.dts22
-rw-r--r--overlays/verdin-imx8mp_ov5640_overlay.dts2
4 files changed, 100 insertions, 14 deletions
diff --git a/overlays/Makefile b/overlays/Makefile
index fe1aa7d..666c63c 100644
--- a/overlays/Makefile
+++ b/overlays/Makefile
@@ -89,6 +89,7 @@ dtb-y += verdin-imx8mm_sn65dsi84_overlay.dtbo
dtb-y += verdin-imx8mp_lt8912_overlay.dtbo
dtb-y += verdin-imx8mp_mezzanine-lvds-single-channel_overlay.dtbo
dtb-y += verdin-imx8mp_mezzanine-lvds-dual-channel_overlay.dtbo
+dtb-y += verdin-imx8mp_mezzanine-ov5640-2_overlay.dtbo
dtb-y += verdin-imx8mp_mezzanine-ov5640_overlay.dtbo
dtb-y += verdin-imx8mp_mezzanine-touch-atmel-mxt_overlay.dtbo
dtb-y += verdin-imx8mp_native-hdmi_overlay.dtbo
diff --git a/overlays/verdin-imx8mp_mezzanine-ov5640-2_overlay.dts b/overlays/verdin-imx8mp_mezzanine-ov5640-2_overlay.dts
new file mode 100644
index 0000000..d94dc2e
--- /dev/null
+++ b/overlays/verdin-imx8mp_mezzanine-ov5640-2_overlay.dts
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2021 Toradex
+ */
+
+// Verdin iMX8M Plus Mezzanine orderable at Toradex.
+// CSI Camera Module 5MP OV5640 previously orderable at Toradex.
+
+// Note: Uses the same Verdin GPIO2 as used for the Atmel MXT Touchscreen
+// and the same I2C bus as used for DSI display adapters!
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/imx8mp-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "toradex,verdin-imx8mp";
+};
+
+&cameradev {
+ status = "okay";
+};
+
+/* Verdin I2C_2_DSI (JP3 2-3, JP4 2-3) */
+&i2c2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ ov5640_mipi@3c {
+ assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
+ assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
+ assigned-clock-rates = <24000000>;
+ AVDD-supply = <&reg_3p3v>;
+ compatible = "ovti,ov5640";
+ clock-names = "xclk";
+ clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
+ csi_id = <1>;
+ DOVDD-supply = <&reg_3p3v>;
+ DVDD-supply = <&reg_3p3v>;
+ mclk = <24000000>;
+ mclk_source = <0>;
+ mipi_csi;
+ pinctrl-names = "default";
+ /* Verdin GPIO2 (JP6 1-2) */
+ powerdown-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+ PVDD-supply = <&reg_3p3v>;
+ reg = <0x3c>;
+ /* Verdin GPIO1 (JP5 1-2) */
+ reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ port {
+ ov5640_mipi_1_ep: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ remote-endpoint = <&mipi_csi1_ep>;
+ };
+ };
+ };
+};
+
+&isi_1 {
+ status = "okay";
+
+ cap_device {
+ status = "okay";
+ };
+};
+
+&mipi_csi_1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ port@1 {
+ reg = <1>;
+
+ mipi_csi1_ep: endpoint {
+ csis-hs-settle = <13>;
+ csis-clk-settle = <2>;
+ csis-wclk;
+ data-lanes = <2>;
+ remote-endpoint = <&ov5640_mipi_1_ep>;
+ };
+ };
+};
diff --git a/overlays/verdin-imx8mp_mezzanine-ov5640_overlay.dts b/overlays/verdin-imx8mp_mezzanine-ov5640_overlay.dts
index 4a5e7fc..dc6eb18 100644
--- a/overlays/verdin-imx8mp_mezzanine-ov5640_overlay.dts
+++ b/overlays/verdin-imx8mp_mezzanine-ov5640_overlay.dts
@@ -6,6 +6,9 @@
// Verdin iMX8M Plus Mezzanine orderable at Toradex.
// CSI Camera Module 5MP OV5640 previously orderable at Toradex.
+// Note: Uses the same GPIOs as the first camera interface CSI_1
+// and the same I2C bus as used for DSI display adapters!
+
/dts-v1/;
/plugin/;
@@ -41,13 +44,13 @@
mclk_source = <0>;
mipi_csi;
pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_gpio1>, <&pinctrl_gpio2>;
- /* Verdin GPIO2 (JP6 1-2) */
- powerdown-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&pinctrl_gpio5>, <&pinctrl_gpio6>;
+ /* Verdin GPIO6 (JP6 2-3) */
+ powerdown-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
PVDD-supply = <&reg_3p3v>;
reg = <0x3c>;
- /* Verdin GPIO1 (JP5 1-2) */
- reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+ /* Verdin GPIO5 (JP5 2-3) */
+ reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
status = "okay";
port {
@@ -60,15 +63,6 @@
};
};
-/* make sure Verdin GPIO1 and GPIO2 are NOT muxed by default to avoid any conflict */
-&iomuxc {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_gpio3>, <&pinctrl_gpio4>,
- <&pinctrl_gpio7>, <&pinctrl_gpio8>,
- <&pinctrl_gpio_hog1>, <&pinctrl_gpio_hog2>, <&pinctrl_gpio_hog3>,
- <&pinctrl_hdmi_hog>, <&pinctrl_pmic_tpm_ena>;
-};
-
&isi_1 {
status = "okay";
diff --git a/overlays/verdin-imx8mp_ov5640_overlay.dts b/overlays/verdin-imx8mp_ov5640_overlay.dts
index 98fbb83..956cb38 100644
--- a/overlays/verdin-imx8mp_ov5640_overlay.dts
+++ b/overlays/verdin-imx8mp_ov5640_overlay.dts
@@ -41,9 +41,11 @@
mipi_csi;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio5>, <&pinctrl_gpio6>;
+ /* Verdin GPIO6 */
powerdown-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
PVDD-supply = <&reg_3p3v>;
reg = <0x3c>;
+ /* Verdin GPIO5 */
reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
status = "okay";