mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
gpu: nvgpu: check for valid function pointers
Before calling prod settings functions, check for availability of those functions. Similar check is extended for get_clk_freqs. Bug 1735760 Change-Id: Ic4b38079043ab2049a479a2d8bb0cb6091e94f4a Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/1181571 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Adeel Raza <araza@nvidia.com>
This commit is contained in:
committed by
Seshendra Gadagottu
parent
e2b965e555
commit
021c23e46e
@@ -118,10 +118,13 @@ static int gk20a_scale_make_freq_table(struct gk20a_scale_profile *profile)
|
||||
int num_freqs, err;
|
||||
unsigned long *freqs;
|
||||
|
||||
/* get gpu frequency table */
|
||||
err = platform->get_clk_freqs(profile->dev, &freqs,
|
||||
if (platform->get_clk_freqs) {
|
||||
/* get gpu frequency table */
|
||||
err = platform->get_clk_freqs(profile->dev, &freqs,
|
||||
&num_freqs);
|
||||
if (err)
|
||||
if (err)
|
||||
return -ENOSYS;
|
||||
} else
|
||||
return -ENOSYS;
|
||||
|
||||
profile->devfreq_profile.freq_table = (unsigned long *)freqs;
|
||||
|
||||
@@ -4656,6 +4656,8 @@ out:
|
||||
|
||||
static void gr_gk20a_load_gating_prod(struct gk20a *g)
|
||||
{
|
||||
gk20a_dbg_fn("");
|
||||
|
||||
/* slcg prod values */
|
||||
if (g->ops.clock_gating.slcg_bus_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_bus_load_gating_prod(g,
|
||||
@@ -4669,7 +4671,9 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g)
|
||||
if (g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod(g,
|
||||
g->slcg_enabled);
|
||||
g->ops.clock_gating.slcg_perf_load_gating_prod(g, g->slcg_enabled);
|
||||
if (g->ops.clock_gating.slcg_perf_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_perf_load_gating_prod(g,
|
||||
g->slcg_enabled);
|
||||
if (g->ops.clock_gating.slcg_xbar_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_xbar_load_gating_prod(g,
|
||||
g->slcg_enabled);
|
||||
@@ -4681,14 +4685,19 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g)
|
||||
if (g->ops.clock_gating.blcg_ce_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_ce_load_gating_prod(g,
|
||||
g->blcg_enabled);
|
||||
g->ops.clock_gating.blcg_gr_load_gating_prod(g, g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_gr_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_gr_load_gating_prod(g,
|
||||
g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod(g,
|
||||
g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_xbar_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_xbar_load_gating_prod(g,
|
||||
g->blcg_enabled);
|
||||
g->ops.clock_gating.pg_gr_load_gating_prod(g, true);
|
||||
if (g->ops.clock_gating.pg_gr_load_gating_prod)
|
||||
g->ops.clock_gating.pg_gr_load_gating_prod(g, true);
|
||||
|
||||
gk20a_dbg_fn("done");
|
||||
}
|
||||
|
||||
static int gk20a_init_gr_prepare(struct gk20a *g)
|
||||
|
||||
Reference in New Issue
Block a user