Hi Bryan,
On 8/15/2024 8:25 AM, Bryan O'Donoghue wrote:
On 12/08/2024 15:41, Depeng Shao wrote:
+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);
+ }
+}
The naming here doesn't make the action clear
hw_ops->rup_update(csid, port, clear);
"is_clear" is not required since the type is a bool the "is" is implied in the the logical state so just "clear" will do.
But re: my previous comment on having the ISR do the clear as is done in the VFE 480, I don't think this is_clear parameter is warranted.
We want the calling function to request the rup_update() for the rup_update() function to wait on completion and the ISR() to do the clear once the RUP interrupt has been raised.
At least I think that's how it should work - could you please experiment with your code for the flow - as it appears to match the VFE 480 logic.
Thanks for catching this, I forget to add the rup irq, so this logic is also missed. I have tried it just now, the logic works good, will add it in next version patch.