summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Volmat <alain.volmat@foss.st.com>2026-08-21 08:38:16 +0200
committerHans Verkuil <hverkuil+cisco@kernel.org>2026-09-09 09:16:32 +0200
commitb8eaee70a455fe980e1161178605404090caa75d (patch)
treeed6787875b63a478412a70f5aeef34a066f059cb
parent7898737c9d0f0c38682d8b684a3dcf1222bb81be (diff)
downloadlinux-next-b8eaee70a455fe980e1161178605404090caa75d.tar.gz
linux-next-b8eaee70a455fe980e1161178605404090caa75d.zip
media: stm32: dcmipp: instantiate & link stm32mp25 subdevs
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> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
-rw-r--r--drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c42
1 files 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 6abbf0f023ee..54e28b4a5b2c 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, MEDIA_LNK_FL_ENABLED),
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