diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/falcon/falcon.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/falcon/falcon.c | 14 |
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 | ||
400 | void nvgpu_flcn_sw_init(struct gk20a *g, u32 flcn_id) | 400 | int 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 | } |