On 31/01/2021 10:55, Mykyta Poturai wrote:
> Add "disable-hpd" boolean binding for the device tree. When this option
> is turned on HPD-related IRQ is disabled and it is assumed that the HDMI
> connector is connected all the time. This may be useful in systems where
> it is impossible or undesirable to connect the HPD pin, or the
> connection is broken.

DRM mode forcing exists for this reason.

You can even force an EDID to have a fixed mode.

Neil

> 
> Signed-off-by: Mykyta Poturai <dd...@aruko.org>
> ---
>  drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c 
> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 0c79a9ba48bb..4ca0ac130beb 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -194,6 +194,7 @@ struct dw_hdmi {
>       unsigned int audio_cts;
>       unsigned int audio_n;
>       bool audio_enable;
> +     bool disable_hpd;
>  
>       unsigned int reg_shift;
>       struct regmap *regm;
> @@ -1559,7 +1560,7 @@ static void dw_hdmi_phy_disable(struct dw_hdmi *hdmi, 
> void *data)
>  enum drm_connector_status dw_hdmi_phy_read_hpd(struct dw_hdmi *hdmi,
>                                              void *data)
>  {
> -     return hdmi_readb(hdmi, HDMI_PHY_STAT0) & HDMI_PHY_HPD ?
> +     return hdmi_readb(hdmi, HDMI_PHY_STAT0) & HDMI_PHY_HPD || 
> hdmi->disable_hpd ?
>               connector_status_connected : connector_status_disconnected;
>  }
>  EXPORT_SYMBOL_GPL(dw_hdmi_phy_read_hpd);
> @@ -1585,6 +1586,10 @@ void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi, void 
> *data)
>        * Configure the PHY RX SENSE and HPD interrupts polarities and clear
>        * any pending interrupt.
>        */
> +
> +     if (hdmi->disable_hpd)
> +             return;
> +
>       hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0);
>       hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE,
>                   HDMI_IH_PHY_STAT0);
> @@ -3212,6 +3217,10 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device 
> *pdev,
>       mutex_init(&hdmi->cec_notifier_mutex);
>       spin_lock_init(&hdmi->audio_lock);
>  
> +     if (of_property_read_bool(np, "disable-hpd")) {
> +             dev_info(hdmi->dev, "Disabling HPD\n");
> +             hdmi->disable_hpd = true;
> +     }
>       ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
>       if (ddc_node) {
>               hdmi->ddc = of_get_i2c_adapter_by_node(ddc_node);
> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to