[PATCH 13/13] media: stm32: dcmipp: instantiate & link stm32mp25 subdevs
From: Alain Volmat <alain.volmat@foss.st.com>
Date: 2026-02-02 13:58:13
Also in:
linux-devicetree, linux-media, lkml
Subsystem:
media drivers for stm32 - dcmi / dcmipp, media input infrastructure (v4l/dvb), the rest · Maintainers:
Hugues Fruchet, Alain Volmat, Mauro Carvalho Chehab, Linus Torvalds
Add topology of the two pixel pipes (main & aux) of the stm32mp25. Do not make the link from dcmipp_input immutable and enabled by default since not all pipes are always used together so when a pipeline is not being used its link should be disconnected to allow proper pipeline check. Not doing this would most probably lead to pipeline start failure due to incompatible pads configurations on the unused pipe. Signed-off-by: Alain Volmat <alain.volmat@foss.st.com> --- .../platform/st/stm32/stm32-dcmipp/dcmipp-core.c | 42 ++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c b/drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c
index a52b3b0e3c37..44440f8ea9f5 100644
--- a/drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c
+++ b/drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c@@ -75,6 +75,11 @@ static const struct dcmipp_pipeline_config stm32mp13_pipe_cfg = { .hw_revision = DCMIPP_STM32MP13_VERR }; +#define ID_MAIN_ISP 3 +#define ID_MAIN_POSTPROC 4 +#define ID_MAIN_CAPTURE 5 +#define ID_AUX_POSTPROC 6 +#define ID_AUX_CAPTURE 7 static const struct dcmipp_ent_config stm32mp25_ent_config[] = { { .name = "dcmipp_input",
@@ -91,13 +96,46 @@ static const struct dcmipp_ent_config stm32mp25_ent_config[] = { .init = dcmipp_capture_ent_init, .release = dcmipp_capture_ent_release, }, + { + .name = "dcmipp_main_isp", + .init = dcmipp_isp_ent_init, + .release = dcmipp_isp_ent_release, + }, + { + .name = "dcmipp_main_postproc", + .init = dcmipp_pixelproc_ent_init, + .release = dcmipp_pixelproc_ent_release, + }, + { + .name = "dcmipp_main_capture", + .init = dcmipp_capture_ent_init, + .release = dcmipp_capture_ent_release, + }, + { + .name = "dcmipp_aux_postproc", + .init = dcmipp_pixelproc_ent_init, + .release = dcmipp_pixelproc_ent_release, + }, + { + .name = "dcmipp_aux_capture", + .init = dcmipp_capture_ent_init, + .release = dcmipp_capture_ent_release, + }, }; static const struct dcmipp_ent_link stm32mp25_ent_links[] = { - DCMIPP_ENT_LINK(ID_INPUT, 1, ID_DUMP_BYTEPROC, 0, - MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE), + DCMIPP_ENT_LINK(ID_INPUT, 1, ID_DUMP_BYTEPROC, 0, 0), DCMIPP_ENT_LINK(ID_DUMP_BYTEPROC, 1, ID_DUMP_CAPTURE, 0, MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE), + DCMIPP_ENT_LINK(ID_INPUT, 2, ID_MAIN_ISP, 0, 0), + DCMIPP_ENT_LINK(ID_MAIN_ISP, 1, ID_MAIN_POSTPROC, 0, + MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE), + DCMIPP_ENT_LINK(ID_MAIN_ISP, 2, ID_AUX_POSTPROC, 0, 0), + DCMIPP_ENT_LINK(ID_MAIN_POSTPROC, 1, ID_MAIN_CAPTURE, 0, + MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE), + DCMIPP_ENT_LINK(ID_INPUT, 3, ID_AUX_POSTPROC, 0, 0), + DCMIPP_ENT_LINK(ID_AUX_POSTPROC, 1, ID_AUX_CAPTURE, 0, + MEDIA_LNK_FL_ENABLED | MEDIA_LNK_FL_IMMUTABLE), }; #define DCMIPP_STM32MP25_VERR 0x30
--
2.34.1