[PATCH 47/74] media: qcom: camss: Pass new struct camss_buf_done_info to camss_buf_done
From: bod
Date: Mon Oct 05 2026 - 13:31:14 EST
From: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
Right now we pass hw_id and port_id to camss_buf_done. That data will be
useful outside of this method so in preparation for better passing of
data-around define camss_buf_done_info including the two data fields.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
---
drivers/media/platform/qcom/camss/camss-csid-680.c | 8 ++++++--
drivers/media/platform/qcom/camss/camss-csid-gen3.c | 5 ++++-
drivers/media/platform/qcom/camss/camss.c | 8 ++++----
drivers/media/platform/qcom/camss/camss.h | 7 ++++++-
4 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/drivers/media/platform/qcom/camss/camss-csid-680.c b/drivers/media/platform/qcom/camss/camss-csid-680.c
index 345a67c8fb947..8ed190db5b528 100644
--- a/drivers/media/platform/qcom/camss/camss-csid-680.c
+++ b/drivers/media/platform/qcom/camss/camss-csid-680.c
@@ -373,6 +373,7 @@ static void csid_rup_complete(struct csid_device *csid, int rdi)
*/
static irqreturn_t csid_isr(int irq, void *dev)
{
+ struct camss_buf_done_info info;
struct csid_device *csid = dev;
u32 buf_done_val, val, val_top;
int i;
@@ -398,8 +399,11 @@ static irqreturn_t csid_isr(int irq, void *dev)
if (val & CSID_CSI2_RDIN_RUP_DONE)
csid_rup_complete(csid, i);
- if (buf_done_val & BIT(BUF_DONE_IRQ_STATUS_RDI_OFFSET + i))
- camss_buf_done(csid->camss, csid->id, i);
+ if (buf_done_val & BIT(BUF_DONE_IRQ_STATUS_RDI_OFFSET + i)) {
+ info.hw_id = csid->id;
+ info.port_id = i;
+ camss_buf_done(csid->camss, &info);
+ }
}
/* Issue clear command */
diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen3.c b/drivers/media/platform/qcom/camss/camss-csid-gen3.c
index 0fdbf75fb27db..3a48bd072e0df 100644
--- a/drivers/media/platform/qcom/camss/camss-csid-gen3.c
+++ b/drivers/media/platform/qcom/camss/camss-csid-gen3.c
@@ -258,6 +258,7 @@ static void csid_subdev_reg_update(struct csid_device *csid, int port_id, bool c
*/
static irqreturn_t csid_isr(int irq, void *dev)
{
+ struct camss_buf_done_info info;
struct csid_device *csid = dev;
u32 val, buf_done_val;
u8 reset_done;
@@ -289,7 +290,9 @@ static irqreturn_t csid_isr(int irq, void *dev)
* CSID from VFE. Once CSID received bus done, need notify
* VFE of this event. Trigger VFE to handle bus done process.
*/
- camss_buf_done(csid->camss, csid->id, i);
+ info.hw_id = csid->id;
+ info.port_id = i;
+ camss_buf_done(csid->camss, &info);
}
}
diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index 2551f0dfa37bb..065d14a872526 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -5033,14 +5033,14 @@ void camss_reg_update(struct camss *camss, int hw_id, int port_id, bool is_clear
}
}
-void camss_buf_done(struct camss *camss, int hw_id, int port_id)
+void camss_buf_done(struct camss *camss, struct camss_buf_done_info *info)
{
struct vfe_device *vfe;
- if (hw_id < camss->res->vfe_num) {
- vfe = &camss->vfe[hw_id];
+ if (info->hw_id < camss->res->vfe_num) {
+ vfe = &camss->vfe[info->hw_id];
- vfe->res->hw_ops->vfe_buf_done(vfe, port_id);
+ vfe->res->hw_ops->vfe_buf_done(vfe, info->port_id);
}
}
diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/platform/qcom/camss/camss.h
index 93d691c8ac63b..6a0d781ae7951 100644
--- a/drivers/media/platform/qcom/camss/camss.h
+++ b/drivers/media/platform/qcom/camss/camss.h
@@ -140,6 +140,11 @@ struct camss {
const struct camss_resources *res;
};
+struct camss_buf_done_info {
+ int hw_id;
+ int port_id;
+};
+
struct camss_camera_interface {
u8 csiphy_id;
struct csiphy_csi2_cfg csi2;
@@ -176,7 +181,7 @@ void camss_pm_domain_off(struct camss *camss, int id);
int camss_vfe_get(struct camss *camss, int id);
void camss_vfe_put(struct camss *camss, int id);
void camss_delete(struct camss *camss);
-void camss_buf_done(struct camss *camss, int hw_id, int port_id);
+void camss_buf_done(struct camss *camss, struct camss_buf_done_info *info);
void camss_reg_update(struct camss *camss, int hw_id,
int port_id, bool is_clear);
--
2.55.0