diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2015-10-26 17:40:59 +0900 |
---|---|---|
committer | Alexandre Courbot <acourbot@nvidia.com> | 2015-12-11 17:42:07 +0900 |
commit | 635fc6c30934cdc45b401679651303f9f8ddc592 (patch) | |
tree | 900bdbcb57f04340996582c0ffd0d28e82c7ba8d | |
parent | 115ed46bd31dd8596f6d889eb3ec0464c263e26e (diff) | |
download | nouveau-635fc6c30934cdc45b401679651303f9f8ddc592.tar.gz |
add pll_g reference clock
-rw-r--r-- | drm/nouveau/include/nvkm/core/tegra.h | 1 | ||||
-rw-r--r-- | drm/nouveau/nvkm/engine/device/tegra.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/drm/nouveau/include/nvkm/core/tegra.h b/drm/nouveau/include/nvkm/core/tegra.h index 16641cec1..450deb2ed 100644 --- a/drm/nouveau/include/nvkm/core/tegra.h +++ b/drm/nouveau/include/nvkm/core/tegra.h @@ -11,6 +11,7 @@ struct nvkm_device_tegra { struct reset_control *rst; struct clk *clk; + struct clk *clk_ref; struct clk *clk_pwr; struct regulator *vdd; diff --git a/drm/nouveau/nvkm/engine/device/tegra.c b/drm/nouveau/nvkm/engine/device/tegra.c index 7f8a42721..6e6c8d3c1 100644 --- a/drm/nouveau/nvkm/engine/device/tegra.c +++ b/drm/nouveau/nvkm/engine/device/tegra.c @@ -35,6 +35,11 @@ nvkm_device_tegra_power_up(struct nvkm_device_tegra *tdev) ret = clk_prepare_enable(tdev->clk); if (ret) goto err_clk; + if (tdev->clk_ref) { + ret = clk_prepare_enable(tdev->clk_ref); + if (ret) + goto err_clk_ref; + } ret = clk_prepare_enable(tdev->clk_pwr); if (ret) goto err_clk_pwr; @@ -57,6 +62,9 @@ nvkm_device_tegra_power_up(struct nvkm_device_tegra *tdev) err_clamp: clk_disable_unprepare(tdev->clk_pwr); err_clk_pwr: + if (tdev->clk_ref) + clk_disable_unprepare(tdev->clk_ref); +err_clk_ref: clk_disable_unprepare(tdev->clk); err_clk: regulator_disable(tdev->vdd); @@ -71,6 +79,8 @@ nvkm_device_tegra_power_down(struct nvkm_device_tegra *tdev) udelay(10); clk_disable_unprepare(tdev->clk_pwr); + if (tdev->clk_ref) + clk_disable_unprepare(tdev->clk_ref); clk_disable_unprepare(tdev->clk); udelay(10); @@ -269,6 +279,12 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func, if (IS_ERR(tdev->clk)) return PTR_ERR(tdev->clk); + tdev->clk_ref = devm_clk_get(&pdev->dev, "pllg_ref"); + if (IS_ERR(tdev->clk_ref)) { + dev_dbg(&pdev->dev, "failed to get pllg_ref clock: %ld\n", + PTR_ERR(tdev->clk_ref)); + tdev->clk_ref = NULL; + } tdev->clk_pwr = devm_clk_get(&pdev->dev, "pwr"); if (IS_ERR(tdev->clk_pwr)) return PTR_ERR(tdev->clk_pwr); |