[PATCH RESEND 41/45] media: qcom: camss: create TPG links for IFE

From: Gjorgji . Rosikopulos . gjorgji . rosikopulos

Date: Wed Oct 07 2026 - 05:20:04 EST


From: Prashant Shrotriya <prashant.shrotriya@xxxxxxxxxxxxxxxx>

The IFE topology uses its own entity-link callback. Create TPG-to-CSID
links there so a TPG can feed the IFE pipeline.

Signed-off-by: Prashant Shrotriya <prashant.shrotriya@xxxxxxxxxxxxxxxx>
Signed-off-by: Atanas Filipov <atanas.filipov@xxxxxxxxxxxxxxxx>
---
drivers/media/platform/qcom/camss/camss-ife.c | 22 ++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/camss/camss-ife.c b/drivers/media/platform/qcom/camss/camss-ife.c
index e2049e00ea96..ab6102fd1126 100644
--- a/drivers/media/platform/qcom/camss/camss-ife.c
+++ b/drivers/media/platform/qcom/camss/camss-ife.c
@@ -12,6 +12,7 @@
#include "camss.h"
#include "camss-csid.h"
#include "camss-ife.h"
+#include "camss-tpg.h"

#define CAMSS_IFE_PREFIX "ife"
#define CAMSS_IFE_IRQ_NAME "msm_vfe"
@@ -1574,9 +1575,28 @@ int camss_ife_subdev_init(struct camss *camss, struct ife_device *ife,

int camss_ife_link_entities(struct camss *camss)
{
- int ife_id, csid_id;
+ int csid_id;
+ int tpg_id;
+ int ife_id;
int rc;

+ for (tpg_id = 0; tpg_id < camss->res->tpg_num; tpg_id++) {
+ for (csid_id = 0; csid_id < camss->res->csid_num; csid_id++) {
+ rc = media_create_pad_link(&camss->tpg[tpg_id].subdev.entity,
+ MSM_TPG_PAD_SRC,
+ &camss->csid[csid_id].subdev.entity,
+ MSM_CSID_PAD_SINK, 0);
+ if (rc) {
+ dev_err(camss->dev,
+ "Failed to link %s->%s: %d\n",
+ camss->tpg[tpg_id].subdev.entity.name,
+ camss->csid[csid_id].subdev.entity.name,
+ rc);
+ return rc;
+ }
+ }
+ }
+
for (ife_id = 0; ife_id < camss->res->csiphy_num; ife_id++) {
for (csid_id = 0; csid_id < camss->res->csid_num; csid_id++) {
rc = media_create_pad_link(&camss->csiphy[ife_id].subdev.entity,
--
2.34.1