diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/gr_gp10b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/gr_gp10b.c | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c index 66d48e6a..2fd393bd 100644 --- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c | |||
@@ -2291,45 +2291,6 @@ int gr_gp10b_get_preemption_mode_flags(struct gk20a *g, | |||
2291 | 2291 | ||
2292 | return 0; | 2292 | return 0; |
2293 | } | 2293 | } |
2294 | int gp10b_gr_fuse_override(struct gk20a *g) | ||
2295 | { | ||
2296 | struct device_node *np = dev_from_gk20a(g)->of_node; | ||
2297 | u32 *fuses; | ||
2298 | int count, i; | ||
2299 | |||
2300 | if (!np) /* may be pcie device */ | ||
2301 | return 0; | ||
2302 | |||
2303 | count = of_property_count_elems_of_size(np, "fuse-overrides", 8); | ||
2304 | if (count <= 0) | ||
2305 | return count; | ||
2306 | |||
2307 | fuses = nvgpu_kmalloc(g, sizeof(u32) * count * 2); | ||
2308 | if (!fuses) | ||
2309 | return -ENOMEM; | ||
2310 | of_property_read_u32_array(np, "fuse-overrides", fuses, count * 2); | ||
2311 | for (i = 0; i < count; i++) { | ||
2312 | u32 fuse, value; | ||
2313 | |||
2314 | fuse = fuses[2 * i]; | ||
2315 | value = fuses[2 * i + 1]; | ||
2316 | switch (fuse) { | ||
2317 | case GM20B_FUSE_OPT_TPC_DISABLE: | ||
2318 | gm20b_gr_tpc_disable_override(g, value); | ||
2319 | break; | ||
2320 | case GP10B_FUSE_OPT_ECC_EN: | ||
2321 | g->gr.t18x.fecs_feature_override_ecc_val = value; | ||
2322 | break; | ||
2323 | default: | ||
2324 | nvgpu_err(g, "ignore unknown fuse override %08x", fuse); | ||
2325 | break; | ||
2326 | } | ||
2327 | } | ||
2328 | |||
2329 | nvgpu_kfree(g, fuses); | ||
2330 | |||
2331 | return 0; | ||
2332 | } | ||
2333 | 2294 | ||
2334 | int gr_gp10b_init_preemption_state(struct gk20a *g) | 2295 | int gr_gp10b_init_preemption_state(struct gk20a *g) |
2335 | { | 2296 | { |