From be60d9a000f20ef32564d519d8097efe94c0fb2c Mon Sep 17 00:00:00 2001 From: Harshdeep Dhatt Date: Wed, 12 Feb 2020 17:05:18 -0700 Subject: [PATCH] msm: kgsl: Set bus scaling function during gmu probe When setting the bus scaling function, we are checking for gmu based targets before gmu has probed. Simplify this by setting the bus scaling function to interconnect by default. Then, replace it with gmu based routine during gmu probe. This works because only gmu based targets set bus votes via gmu. Change-Id: Ib332e736b39e0f38b1028049422ba95bd0370839 Signed-off-by: Harshdeep Dhatt --- drivers/gpu/msm/kgsl_bus.c | 19 +------------------ drivers/gpu/msm/kgsl_gmu.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/msm/kgsl_bus.c b/drivers/gpu/msm/kgsl_bus.c index 8d0aafbc7d77..bddf3de31e97 100644 --- a/drivers/gpu/msm/kgsl_bus.c +++ b/drivers/gpu/msm/kgsl_bus.c @@ -10,20 +10,6 @@ #include "kgsl_device.h" #include "kgsl_trace.h" -static int gmu_bus_set(struct kgsl_device *device, int buslevel, - u32 ab) -{ - struct kgsl_pwrctrl *pwr = &device->pwrctrl; - int ret; - - ret = gmu_core_dcvs_set(device, INVALID_DCVS_IDX, buslevel); - - if (!ret) - icc_set_bw(pwr->icc_path, MBps_to_icc(ab), 0); - - return ret; -} - static int interconnect_bus_set(struct kgsl_device *device, int level, u32 ab) { @@ -179,10 +165,7 @@ done: return PTR_ERR(pwr->icc_path); } - if (gmu_core_scales_bandwidth(device)) - pwr->bus_set = gmu_bus_set; - else - pwr->bus_set = interconnect_bus_set; + pwr->bus_set = interconnect_bus_set; return 0; } diff --git a/drivers/gpu/msm/kgsl_gmu.c b/drivers/gpu/msm/kgsl_gmu.c index d3961bf1b067..7d1c93a5e7bc 100644 --- a/drivers/gpu/msm/kgsl_gmu.c +++ b/drivers/gpu/msm/kgsl_gmu.c @@ -1282,6 +1282,20 @@ static void gmu_acd_probe(struct kgsl_device *device, struct gmu_device *gmu, "AOP mailbox init failed: %d\n", ret); } +static int gmu_bus_set(struct kgsl_device *device, int buslevel, + u32 ab) +{ + struct kgsl_pwrctrl *pwr = &device->pwrctrl; + int ret; + + ret = gmu_core_dcvs_set(device, INVALID_DCVS_IDX, buslevel); + + if (!ret) + icc_set_bw(pwr->icc_path, MBps_to_icc(ab), 0); + + return ret; +} + /* Do not access any GMU registers in GMU probe function */ static int gmu_probe(struct kgsl_device *device, struct device_node *node) { @@ -1409,6 +1423,9 @@ static int gmu_probe(struct kgsl_device *device, struct device_node *node) gmu_acd_probe(device, gmu, node); + if (gmu_core_scales_bandwidth(device)) + pwr->bus_set = gmu_bus_set; + set_bit(GMU_ENABLED, &device->gmu_core.flags); device->gmu_core.dev_ops = &adreno_a6xx_gmudev;