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

Reply via email to