On Mon, Aug 19, 2024 at 01:29:29AM GMT, Cristian Ciocaltea wrote: > +static irqreturn_t dw_hdmi_qp_main_hardirq(int irq, void *dev_id) > +{ > + struct dw_hdmi_qp *hdmi = dev_id; > + struct dw_hdmi_qp_i2c *i2c = hdmi->i2c; > + u32 stat; > + > + stat = dw_hdmi_qp_read(hdmi, MAINUNIT_1_INT_STATUS); > + > + i2c->stat = stat & (I2CM_OP_DONE_IRQ | I2CM_READ_REQUEST_IRQ | > + I2CM_NACK_RCVD_IRQ); > + > + if (i2c->stat) { > + dw_hdmi_qp_write(hdmi, i2c->stat, MAINUNIT_1_INT_CLEAR); > + complete(&i2c->cmp); > + } > + > + if (stat) > + return IRQ_HANDLED; > + > + return IRQ_NONE; > +} If the scrambler is enabled, you need to deal with hotplug. On hotplug, the monitor will drop its TMDS ratio and scrambling status, but the driver will keep assuming it's been programmed. If you don't have a way to deal with hotplug yet, then I'd suggest to just drop the scrambler setup for now. Maxime
Attachment:
signature.asc
Description: PGP signature