summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/falcon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/falcon')
-rw-r--r--drivers/gpu/nvgpu/common/falcon/falcon.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/common/falcon/falcon.c b/drivers/gpu/nvgpu/common/falcon/falcon.c
index 81ba5e81..6e5a477d 100644
--- a/drivers/gpu/nvgpu/common/falcon/falcon.c
+++ b/drivers/gpu/nvgpu/common/falcon/falcon.c
@@ -397,10 +397,11 @@ int nvgpu_flcn_bl_bootstrap(struct nvgpu_falcon *flcn,
397 return status; 397 return status;
398} 398}
399 399
400void nvgpu_flcn_sw_init(struct gk20a *g, u32 flcn_id) 400int nvgpu_flcn_sw_init(struct gk20a *g, u32 flcn_id)
401{ 401{
402 struct nvgpu_falcon *flcn = NULL; 402 struct nvgpu_falcon *flcn = NULL;
403 struct gpu_ops *gops = &g->ops; 403 struct gpu_ops *gops = &g->ops;
404 int err = 0;
404 405
405 switch (flcn_id) { 406 switch (flcn_id) {
406 case FALCON_ID_PMU: 407 case FALCON_ID_PMU:
@@ -431,12 +432,15 @@ void nvgpu_flcn_sw_init(struct gk20a *g, u32 flcn_id)
431 break; 432 break;
432 default: 433 default:
433 nvgpu_err(g, "Invalid/Unsupported falcon ID %x", flcn_id); 434 nvgpu_err(g, "Invalid/Unsupported falcon ID %x", flcn_id);
435 err = -ENODEV;
434 break; 436 break;
435 }; 437 };
436 438
437 /* call to HAL method to assign flcn base & ops to selected falcon */ 439 if (err != 0) {
438 if (flcn) { 440 return err;
439 flcn->g = g;
440 gops->falcon.falcon_hal_sw_init(flcn);
441 } 441 }
442
443 /* call to HAL method to assign flcn base & ops to selected falcon */
444 flcn->g = g;
445 return gops->falcon.falcon_hal_sw_init(flcn);
442} 446}