From 80f81e2bd4c37b05a65002b37115fa365e42a23a Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Wed, 4 Jun 2025 14:21:13 +0200 Subject: [PATCH] shields: st_mb1897_cam: addition of MB1897 camera board Addition of a shield st_mb1897_cam embedding a GC2145 CSI sensor which can be connected to the STM32MP135F-DK via a 15pins FFC. Signed-off-by: Alain Volmat --- boards/shields/st_mb1897_cam/Kconfig.shield | 6 +++ .../st_mb1897_cam/boards/stm32mp135f_dk.conf | 3 ++ .../boards/stm32mp135f_dk.overlay | 13 ++++++ boards/shields/st_mb1897_cam/doc/index.rst | 38 ++++++++++++++++ .../st_mb1897_cam/doc/st_mb1897_cam.webp | Bin 0 -> 9410 bytes boards/shields/st_mb1897_cam/shield.yml | 6 +++ .../st_mb1897_cam/st_mb1897_cam.overlay | 43 ++++++++++++++++++ 7 files changed, 109 insertions(+) create mode 100644 boards/shields/st_mb1897_cam/Kconfig.shield create mode 100644 boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.conf create mode 100644 boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.overlay create mode 100644 boards/shields/st_mb1897_cam/doc/index.rst create mode 100644 boards/shields/st_mb1897_cam/doc/st_mb1897_cam.webp create mode 100644 boards/shields/st_mb1897_cam/shield.yml create mode 100644 boards/shields/st_mb1897_cam/st_mb1897_cam.overlay diff --git a/boards/shields/st_mb1897_cam/Kconfig.shield b/boards/shields/st_mb1897_cam/Kconfig.shield new file mode 100644 index 00000000000..cee07707133 --- /dev/null +++ b/boards/shields/st_mb1897_cam/Kconfig.shield @@ -0,0 +1,6 @@ +# Copyright (c) 2025 STMicroelectronics + +# SPDX-License-Identifier: Apache-2.0 + +config SHIELD_ST_MB1897_CAM + def_bool $(shields_list_contains,st_mb1897_cam) diff --git a/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.conf b/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.conf new file mode 100644 index 00000000000..e3796594377 --- /dev/null +++ b/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.conf @@ -0,0 +1,3 @@ +CONFIG_VIDEO_STM32_DCMIPP_SENSOR_PIXEL_FORMAT="RGBP" +CONFIG_VIDEO_STM32_DCMIPP_SENSOR_WIDTH=640 +CONFIG_VIDEO_STM32_DCMIPP_SENSOR_HEIGHT=480 diff --git a/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.overlay b/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.overlay new file mode 100644 index 00000000000..1c41c5b9790 --- /dev/null +++ b/boards/shields/st_mb1897_cam/boards/stm32mp135f_dk.overlay @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2025 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&mipid02 { + status = "okay"; +}; + +&mco1 { + status = "okay"; +}; diff --git a/boards/shields/st_mb1897_cam/doc/index.rst b/boards/shields/st_mb1897_cam/doc/index.rst new file mode 100644 index 00000000000..5ff70361352 --- /dev/null +++ b/boards/shields/st_mb1897_cam/doc/index.rst @@ -0,0 +1,38 @@ +.. _st_mb1897_cam: + +ST_MB1897_CAM +############# + +Overview +******** + +The STM32MP135F discovery board is delivered with a CSI camera module +connected to the STM32MP135F-DK board via a 15pins FFC connector. +The camera module board (MB1897) embeds a Galaxycore GC2145 CSI sensor. + +.. figure:: st_mb1897_cam.webp + :align: center + :alt: ST-MB1897-CAM + + MB1897 Image (Credit: STMicroelectronics.) + +Requirements +************ + +The camera module bundle is compatible with STM32 Discovery kits and +Evaluation boards featuring a 15 pins FFC connector, such as the STM32MP13 +Discovery kit. + +Usage +***** + +The shield can be used in any application by setting ``SHIELD`` to +``st_mb1897_cam`` for boards with the necessary device tree node labels. + +Set ``--shield "st_mb1897_cam"`` when you invoke ``west build``. For example: + +.. zephyr-app-commands:: + :zephyr-app: samples/drivers/video/capture + :board: stm32mp135f_dk + :shield: st_mb1897_cam + :goals: build diff --git a/boards/shields/st_mb1897_cam/doc/st_mb1897_cam.webp b/boards/shields/st_mb1897_cam/doc/st_mb1897_cam.webp new file mode 100644 index 0000000000000000000000000000000000000000..b3e6153471c6cc41d454855889b9a281bca19f9a GIT binary patch literal 9410 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 +#include + +/ { + chosen { + zephyr,camera = &csi_capture_port; + }; +}; + +&csi_interface { + status = "okay"; +}; + +&csi_ep_in { + remote-endpoint-label = "gc2145_ep_out"; + bus-type = ; + data-lanes = <1 2>; +}; + +&csi_i2c { + status = "okay"; + + gc2145: camera@3c { + compatible = "galaxycore,gc2145"; + reg = <0x3c>; + pwdn-gpios = <&csi_connector CSI_IO1 GPIO_ACTIVE_LOW>; + reset-gpios = <&csi_connector CSI_IO0 GPIO_ACTIVE_LOW>; + + port { + gc2145_ep_out: endpoint { + remote-endpoint-label = "csi_ep_in"; + data-lanes = <1 2>; + bus-type = ; + }; + }; + }; +};