[PATCH 13/13] media: stm32: dcmipp: instantiate & link stm32mp25 subdevs
Alain Volmat
alain.volmat at foss.st.com
Mon Feb 2 05:57:38 PST 2026
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 at 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
More information about the linux-arm-kernel
mailing list