diff options
Diffstat (limited to 'drivers/gpio/gpio-zynq.c')
| -rw-r--r-- | drivers/gpio/gpio-zynq.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c index 66d3d247d76d..e72794e463aa 100644 --- a/drivers/gpio/gpio-zynq.c +++ b/drivers/gpio/gpio-zynq.c @@ -709,11 +709,17 @@ static int zynq_gpio_probe(struct platform_device *pdev)  		dev_err(&pdev->dev, "input clock not found.\n");  		return PTR_ERR(gpio->clk);  	} +	ret = clk_prepare_enable(gpio->clk); +	if (ret) { +		dev_err(&pdev->dev, "Unable to enable clock.\n"); +		return ret; +	} +	pm_runtime_set_active(&pdev->dev);  	pm_runtime_enable(&pdev->dev);  	ret = pm_runtime_get_sync(&pdev->dev);  	if (ret < 0) -		return ret; +		goto err_pm_dis;  	/* report a bug if gpio chip registration fails */  	ret = gpiochip_add_data(chip, gpio); @@ -745,6 +751,9 @@ err_rm_gpiochip:  	gpiochip_remove(chip);  err_pm_put:  	pm_runtime_put(&pdev->dev); +err_pm_dis: +	pm_runtime_disable(&pdev->dev); +	clk_disable_unprepare(gpio->clk);  	return ret;  }  |