Re: [PATCH v2] drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux transfer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 15/12/2022 22:10, Stephen Boyd wrote:
Quoting Dmitry Baryshkov (2022-12-15 10:46:42)
On 15/12/2022 20:32, Kuogee Hsieh wrote:
       if (!aux->cmd_busy)
               return;

       if (aux->native)
-             dp_aux_native_handler(aux, isr);
+             ret = dp_aux_native_handler(aux, isr);
       else
-             dp_aux_i2c_handler(aux, isr);
+             ret = dp_aux_i2c_handler(aux, isr);

-     complete(&aux->comp);
+     if (ret == IRQ_HANDLED)
+             complete(&aux->comp);

Can you just move the complete() into the individual handling functions?
Then you won't have to return the error code from dp_aux_*_handler() at
all. You can check `isr' in that function and call complete if there was
any error.

I'd prefer we apply my patch and pass the irqreturn_t variable to the
caller of this function so spurious irqs are shutdown. Should I send it
as a proper patch?

I'm for handling the spurious IRQs in a proper way. However I believe that it's not related to the issue Kuogee is trying to fix.

Thus I think we should have two separate patches: one fixing the EDID corruption issue (for which the proper fix is !isr check, IIUC) and the irqreturn_t. And for the irqreturn_t it might be beneficial to move complete() call to the dp_aux_foo_handler(). Or might be not. That would depend on the patch itself.


--
With best wishes
Dmitry




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux