diff mbox

drm/tilcdc: Defer probe if there are no connectors

Message ID 20180330131553.9060-1-sjoerd.simons@collabora.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Sjoerd Simons March 30, 2018, 1:15 p.m. UTC
During probe there may not be any connectors yet if e.g. the panel
failed or hasn't been probed yet. I hitting this in practice the panels
probing was being delayed due to using a gpio backlight.

Fix this by returning -EPROBE_DEFER so the probing will be retried.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

---

 drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jyri Sarha July 6, 2018, 9:26 a.m. UTC | #1
On 30/03/18 16:15, Sjoerd Simons wrote:
> During probe there may not be any connectors yet if e.g. the panel
> failed or hasn't been probed yet. I hitting this in practice the panels
> probing was being delayed due to using a gpio backlight.
> 
> Fix this by returning -EPROBE_DEFER so the probing will be retried.
> 
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
> 

Sorry that I did not have time to look into this earlier.

I do not really like the way this solves the the issue. The problem
isn't really about the patch, but the way the old tilcdc internal panel
driver works. But since there is no easy way to fix this better, I'll
merge the patch and hopefully fix the internal panel module later.

BR,
Jyri

> ---
> 
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 1afde61f1247..59f0a44bb6e3 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -380,7 +380,7 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
>  	if (!priv->external_connector &&
>  	    ((priv->num_encoders == 0) || (priv->num_connectors == 0))) {
>  		dev_err(dev, "no encoders/connectors found\n");
> -		ret = -ENXIO;
> +		ret = -EPROBE_DEFER;
>  		goto init_failed;
>  	}
>  
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 1afde61f1247..59f0a44bb6e3 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -380,7 +380,7 @@  static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
 	if (!priv->external_connector &&
 	    ((priv->num_encoders == 0) || (priv->num_connectors == 0))) {
 		dev_err(dev, "no encoders/connectors found\n");
-		ret = -ENXIO;
+		ret = -EPROBE_DEFER;
 		goto init_failed;
 	}