diff options
Diffstat (limited to 'drivers/gpu/drm/tegra')
| -rw-r--r-- | drivers/gpu/drm/tegra/dc.c | 20 | ||||
| -rw-r--r-- | drivers/gpu/drm/tegra/fb.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/tegra/hdmi.c | 34 | 
3 files changed, 41 insertions, 21 deletions
| diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 7c70fd31a4c2..1a7b08f35776 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -2503,7 +2503,6 @@ static int tegra_dc_couple(struct tegra_dc *dc)  static int tegra_dc_probe(struct platform_device *pdev)  { -	struct resource *regs;  	struct tegra_dc *dc;  	int err; @@ -2560,8 +2559,7 @@ static int tegra_dc_probe(struct platform_device *pdev)  		tegra_powergate_power_off(dc->powergate);  	} -	regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); -	dc->regs = devm_ioremap_resource(&pdev->dev, regs); +	dc->regs = devm_platform_ioremap_resource(pdev, 0);  	if (IS_ERR(dc->regs))  		return PTR_ERR(dc->regs); @@ -2573,7 +2571,13 @@ static int tegra_dc_probe(struct platform_device *pdev)  	err = tegra_dc_rgb_probe(dc);  	if (err < 0 && err != -ENODEV) { -		dev_err(&pdev->dev, "failed to probe RGB output: %d\n", err); +		const char *level = KERN_ERR; + +		if (err == -EPROBE_DEFER) +			level = KERN_DEBUG; + +		dev_printk(level, dc->dev, "failed to probe RGB output: %d\n", +			   err);  		return err;  	} @@ -2588,10 +2592,16 @@ static int tegra_dc_probe(struct platform_device *pdev)  	if (err < 0) {  		dev_err(&pdev->dev, "failed to register host1x client: %d\n",  			err); -		return err; +		goto disable_pm;  	}  	return 0; + +disable_pm: +	pm_runtime_disable(&pdev->dev); +	tegra_dc_rgb_remove(dc); + +	return err;  }  static int tegra_dc_remove(struct platform_device *pdev) diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index 84f0e01e3428..b8a328f53862 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -314,19 +314,13 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev,  	struct drm_device *drm = fbdev->base.dev;  	int err; -	err = drm_fb_helper_init(drm, &fbdev->base, max_connectors); +	err = drm_fb_helper_init(drm, &fbdev->base);  	if (err < 0) {  		dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n",  			err);  		return err;  	} -	err = drm_fb_helper_single_add_all_connectors(&fbdev->base); -	if (err < 0) { -		dev_err(drm->dev, "failed to add connectors: %d\n", err); -		goto fini; -	} -  	err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp);  	if (err < 0) {  		dev_err(drm->dev, "failed to set initial configuration: %d\n", diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c index 6f117628f257..38252c0f068d 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c @@ -1648,6 +1648,7 @@ static irqreturn_t tegra_hdmi_irq(int irq, void *data)  static int tegra_hdmi_probe(struct platform_device *pdev)  { +	const char *level = KERN_ERR;  	struct tegra_hdmi *hdmi;  	struct resource *regs;  	int err; @@ -1686,21 +1687,36 @@ static int tegra_hdmi_probe(struct platform_device *pdev)  	}  	hdmi->hdmi = devm_regulator_get(&pdev->dev, "hdmi"); -	if (IS_ERR(hdmi->hdmi)) { -		dev_err(&pdev->dev, "failed to get HDMI regulator\n"); -		return PTR_ERR(hdmi->hdmi); +	err = PTR_ERR_OR_ZERO(hdmi->hdmi); +	if (err) { +		if (err == -EPROBE_DEFER) +			level = KERN_DEBUG; + +		dev_printk(level, &pdev->dev, +			   "failed to get HDMI regulator: %d\n", err); +		return err;  	}  	hdmi->pll = devm_regulator_get(&pdev->dev, "pll"); -	if (IS_ERR(hdmi->pll)) { -		dev_err(&pdev->dev, "failed to get PLL regulator\n"); -		return PTR_ERR(hdmi->pll); +	err = PTR_ERR_OR_ZERO(hdmi->pll); +	if (err) { +		if (err == -EPROBE_DEFER) +			level = KERN_DEBUG; + +		dev_printk(level, &pdev->dev, +			   "failed to get PLL regulator: %d\n", err); +		return err;  	}  	hdmi->vdd = devm_regulator_get(&pdev->dev, "vdd"); -	if (IS_ERR(hdmi->vdd)) { -		dev_err(&pdev->dev, "failed to get VDD regulator\n"); -		return PTR_ERR(hdmi->vdd); +	err = PTR_ERR_OR_ZERO(hdmi->vdd); +	if (err) { +		if (err == -EPROBE_DEFER) +			level = KERN_DEBUG; + +		dev_printk(level, &pdev->dev, +			   "failed to get VDD regulator: %d\n", err); +		return err;  	}  	hdmi->output.dev = &pdev->dev; |