From ffc94db8f0d3db59f2ce646dcde278c308648e76 Mon Sep 17 00:00:00 2001 From: Harshdeep Dhatt Date: Thu, 12 Mar 2020 16:38:47 -0600 Subject: [PATCH] msm: kgsl: Scale hub clock to 150 Mhz This is a new clock in a660 which needs to be run at 150 Mhz instead of running at 19.2 Mhz by default. Also, there is no need to store a gmu_clk pointer so get rid of it too. Change-Id: If2741c061339e914683ca25565d1bac3ec6ac100 Signed-off-by: Harshdeep Dhatt --- drivers/gpu/msm/kgsl_gmu.c | 30 ++++++++++++++++++++---------- drivers/gpu/msm/kgsl_gmu.h | 2 -- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/msm/kgsl_gmu.c b/drivers/gpu/msm/kgsl_gmu.c index 5eef477f2971..d3b3d398f270 100644 --- a/drivers/gpu/msm/kgsl_gmu.c +++ b/drivers/gpu/msm/kgsl_gmu.c @@ -1309,14 +1309,6 @@ static int gmu_probe(struct kgsl_device *device, struct platform_device *pdev) gmu->num_clks = ret; - /* Get a pointer to the GMU clock */ - gmu->gmu_clk = kgsl_of_clk_by_name(gmu->clks, gmu->num_clks, "gmu_clk"); - if (!gmu->gmu_clk) { - dev_err(&pdev->dev, "Couldn't get gmu_clk\n"); - ret = -ENODEV; - goto error; - } - /* Set up GMU IOMMU and shared memory with GMU */ ret = gmu_iommu_init(gmu, pdev->dev.of_node); if (ret) @@ -1406,14 +1398,32 @@ error: return ret; } +static int gmu_clk_set_rate(struct gmu_device *gmu, const char *id, + unsigned long rate) +{ + struct clk *clk; + + clk = kgsl_of_clk_by_name(gmu->clks, gmu->num_clks, id); + if (!clk) + return -ENODEV; + + return clk_set_rate(clk, rate); +} + static int gmu_enable_clks(struct kgsl_device *device) { struct gmu_device *gmu = KGSL_GMU_DEVICE(device); int ret; - ret = clk_set_rate(gmu->gmu_clk, GMU_FREQUENCY); + ret = gmu_clk_set_rate(gmu, "gmu_clk", GMU_FREQUENCY); if (ret) { - dev_err(&gmu->pdev->dev, "Unable to set GMU clock\n"); + dev_err(&gmu->pdev->dev, "Unable to set the GMU clock\n"); + return ret; + } + + ret = gmu_clk_set_rate(gmu, "hub_clk", 150000000); + if (ret && ret != ENODEV) { + dev_err(&gmu->pdev->dev, "Unable to set the HUB clock\n"); return ret; } diff --git a/drivers/gpu/msm/kgsl_gmu.h b/drivers/gpu/msm/kgsl_gmu.h index b6a815d90965..062cb362bfaa 100644 --- a/drivers/gpu/msm/kgsl_gmu.h +++ b/drivers/gpu/msm/kgsl_gmu.h @@ -194,8 +194,6 @@ struct gmu_device { struct clk_bulk_data *clks; /** @num_clks: Number of entries in the @clks array */ int num_clks; - /** @gmu_clk: Pointer to the core GMU clock */ - struct clk *gmu_clk; enum gmu_load_mode load_mode; unsigned int wakeup_pwrlevel; unsigned int idle_level;