[PATCH] drm/bridge: ti-tfp410: Fall back to HPD polling if HPD irq is not available

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Apr 2 11:21:33 UTC 2019


Hi Peter,

Thank you for the patch.

On Mon, Apr 01, 2019 at 03:33:42PM +0300, Peter Ujfalusi wrote:
> In case either the HPD gpio is not specified or when the HPD gpio can not
> be used as interrupt we should tell the core that the HPD needs to be
> polled for detecting hotplug.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
> ---
>  drivers/gpu/drm/bridge/ti-tfp410.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
> index 285be4a0f4bd..6fc831eb3804 100644
> --- a/drivers/gpu/drm/bridge/ti-tfp410.c
> +++ b/drivers/gpu/drm/bridge/ti-tfp410.c
> @@ -31,6 +31,7 @@ struct tfp410 {
>  
>  	struct i2c_adapter	*ddc;
>  	struct gpio_desc	*hpd;
> +	int			hpd_irq;
>  	struct delayed_work	hpd_work;
>  	struct gpio_desc	*powerdown;
>  
> @@ -124,8 +125,10 @@ static int tfp410_attach(struct drm_bridge *bridge)
>  		return -ENODEV;
>  	}
>  
> -	if (dvi->hpd)
> +	if (dvi->hpd_irq >= 0)

Do you need a new hpd_irq field ? Can't you just test dvi->hpd as done
today, simply adding the else clause to this if ?

>  		dvi->connector.polled = DRM_CONNECTOR_POLL_HPD;
> +	else
> +		dvi->connector.polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
>  
>  	drm_connector_helper_add(&dvi->connector,
>  				 &tfp410_con_helper_funcs);
> @@ -324,10 +327,15 @@ static int tfp410_init(struct device *dev, bool i2c)
>  		return PTR_ERR(dvi->powerdown);
>  	}
>  
> -	if (dvi->hpd) {
> +	if (dvi->hpd)
> +		dvi->hpd_irq = gpiod_to_irq(dvi->hpd);
> +	else
> +		dvi->hpd_irq = -ENXIO;
> +
> +	if (dvi->hpd_irq >= 0) {
>  		INIT_DELAYED_WORK(&dvi->hpd_work, tfp410_hpd_work_func);
>  
> -		ret = devm_request_threaded_irq(dev, gpiod_to_irq(dvi->hpd),
> +		ret = devm_request_threaded_irq(dev, dvi->hpd_irq,
>  			NULL, tfp410_hpd_irq_thread, IRQF_TRIGGER_RISING |
>  			IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
>  			"hdmi-hpd", dvi);

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list