Hi Depeng and Bryan.
On 12/11/24 16:07, Depeng Shao wrote:
> The RUP registers and buf done irq are moved from the IFE to CSID register
> block on recent CAMSS implementations. Add callbacks structure to wrapper
> the location change with minimum logic disruption.
>
> Signed-off-by: Depeng Shao <quic_depengs@quicinc.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
It's unexpected to see two your Signed-off-by: tags, either one is invalid
or the authorship of the change shall be changed appropriately.
> ---
> .../media/platform/qcom/camss/camss-csid.h | 9 ++++++++
> drivers/media/platform/qcom/camss/camss.c | 22 +++++++++++++++++++
> drivers/media/platform/qcom/camss/camss.h | 3 +++
> 3 files changed, 34 insertions(+)
>
> diff --git a/drivers/media/platform/qcom/camss/camss-csid.h b/drivers/media/platform/qcom/camss/camss-csid.h
> index f52209b96583..1369e7ea7219 100644
> --- a/drivers/media/platform/qcom/camss/camss-csid.h
> +++ b/drivers/media/platform/qcom/camss/camss-csid.h
> @@ -152,6 +152,14 @@ struct csid_hw_ops {
> * @csid: CSID device
> */
> void (*subdev_init)(struct csid_device *csid);
> +
> + /*
> + * reg_update - receive message from other sub device
> + * @csid: CSID device
> + * @port_id: Port id
> + * @is_clear: Indicate if it is clearing reg update or setting reg update
> + */
> + void (*reg_update)(struct csid_device *csid, int port_id, bool is_clear);
> };
>
> struct csid_subdev_resources {
> @@ -168,6 +176,7 @@ struct csid_device {
> struct media_pad pads[MSM_CSID_PADS_NUM];
> void __iomem *base;
> u32 irq;
> + u32 reg_update;
> char irq_name[30];
> struct camss_clock *clock;
> int nclocks;
> diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
> index 9fb31f4c18ad..e24084ff88de 100644
> --- a/drivers/media/platform/qcom/camss/camss.c
> +++ b/drivers/media/platform/qcom/camss/camss.c
> @@ -2087,6 +2087,28 @@ static int camss_link_entities(struct camss *camss)
> return 0;
> }
>
> +void camss_reg_update(struct camss *camss, int hw_id, int port_id, bool is_clear)
> +{
> + struct csid_device *csid;
> +
> + if (hw_id < camss->res->csid_num) {
> + csid = &camss->csid[hw_id];
> +
> + csid->res->hw_ops->reg_update(csid, port_id, is_clear);
> + }
> +}
> +
> +void camss_buf_done(struct camss *camss, int hw_id, int port_id)
> +{
> + struct vfe_device *vfe;
> +
> + if (hw_id < camss->res->vfe_num) {
> + vfe = &camss->vfe[hw_id];
> +
> + vfe->res->hw_ops->vfe_buf_done(vfe, port_id);
> + }
> +}
> +
> /*
> * camss_register_entities - Register subdev nodes and create links
> * @camss: CAMSS device
> diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/platform/qcom/camss/camss.h
> index 9da7f48f5dd7..6dceff8ce319 100644
> --- a/drivers/media/platform/qcom/camss/camss.h
> +++ b/drivers/media/platform/qcom/camss/camss.h
> @@ -161,5 +161,8 @@ 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_reg_update(struct camss *camss, int hw_id,
> + int port_id, bool is_clear);
>
> #endif /* QC_MSM_CAMSS_H */
--
Best wishes,
Vladimir