Message ID | 20241211140738.3835588-10-quic_depengs@quicinc.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | media: qcom: camss: Add sm8550 support | expand |
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
On 12/12/2024 01:09, Vladimir Zapolskiy wrote: >> >> 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. TBH I thought nothing of this at all. @Depeng for the record you can add Co-developed-by with my SOB. --- bod
On 12/12/24 03:32, Bryan O'Donoghue wrote: > On 12/12/2024 01:09, Vladimir Zapolskiy wrote: >>> >>> 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. > > TBH I thought nothing of this at all. > > @Depeng for the record you can add Co-developed-by with my SOB. > Thank you, then this will become aligned with Documentation/process/5.Posting.rst -- Best wishes, Vladimir
Hi Vladimir, On 12/12/2024 9:09 AM, Vladimir Zapolskiy wrote: > 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. > Thanks for pointing out this, I will update it based on Bryan's suggestion. Thanks, Depeng
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 */