summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/regops_gp10b.c
diff options
context:
space:
mode:
authorSunny He <suhe@nvidia.com>2017-07-28 21:36:52 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-08-02 17:43:25 -0400
commita15e110a9b790f55a5c6e257cfbf7f7235f5a334 (patch)
tree199209146e3e67927c13e2ece240de40f973e1ea /drivers/gpu/nvgpu/gp10b/regops_gp10b.c
parent43ae97000be786e4118d431637f05b1462e296c4 (diff)
gpu: nvgpu: Reorg regops HAL initialization
Reorganize HAL initialization to remove inheritance and construct the gpu_ops struct at compile time. This patch only covers the regops sub-module of the gpu_ops struct. Perform HAL function assignments in hal_gxxxx.c through the population of a chip-specific copy of gpu_ops. Jira NVGPU-74 Change-Id: I7e2ccf158a8e7efa453a3326e86146660f18926f Signed-off-by: Sunny He <suhe@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1530135 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman <alexw@nvidia.com> Tested-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/regops_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/regops_gp10b.c65
1 files changed, 14 insertions, 51 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/regops_gp10b.c b/drivers/gpu/nvgpu/gp10b/regops_gp10b.c
index 885221df..f90ecaa6 100644
--- a/drivers/gpu/nvgpu/gp10b/regops_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/regops_gp10b.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Tegra GK20A GPU Debugger Driver Register Ops 2 * Tegra GK20A GPU Debugger Driver Register Ops
3 * 3 *
4 * Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2015-2017, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms and conditions of the GNU General Public License, 7 * under the terms and conditions of the GNU General Public License,
@@ -406,105 +406,68 @@ static const struct regop_offset_range gp10b_qctl_whitelist_ranges[] = {
406static const u32 gp10b_qctl_whitelist_ranges_count = 406static const u32 gp10b_qctl_whitelist_ranges_count =
407 ARRAY_SIZE(gp10b_qctl_whitelist_ranges); 407 ARRAY_SIZE(gp10b_qctl_whitelist_ranges);
408 408
409static const struct regop_offset_range *gp10b_get_global_whitelist_ranges(void) 409const struct regop_offset_range *gp10b_get_global_whitelist_ranges(void)
410{ 410{
411 return gp10b_global_whitelist_ranges; 411 return gp10b_global_whitelist_ranges;
412} 412}
413 413
414static int gp10b_get_global_whitelist_ranges_count(void) 414int gp10b_get_global_whitelist_ranges_count(void)
415{ 415{
416 return gp10b_global_whitelist_ranges_count; 416 return gp10b_global_whitelist_ranges_count;
417} 417}
418 418
419static const struct regop_offset_range *gp10b_get_context_whitelist_ranges(void) 419const struct regop_offset_range *gp10b_get_context_whitelist_ranges(void)
420{ 420{
421 return gp10b_global_whitelist_ranges; 421 return gp10b_global_whitelist_ranges;
422} 422}
423 423
424static int gp10b_get_context_whitelist_ranges_count(void) 424int gp10b_get_context_whitelist_ranges_count(void)
425{ 425{
426 return gp10b_global_whitelist_ranges_count; 426 return gp10b_global_whitelist_ranges_count;
427} 427}
428 428
429static const u32 *gp10b_get_runcontrol_whitelist(void) 429const u32 *gp10b_get_runcontrol_whitelist(void)
430{ 430{
431 return gp10b_runcontrol_whitelist; 431 return gp10b_runcontrol_whitelist;
432} 432}
433 433
434static int gp10b_get_runcontrol_whitelist_count(void) 434int gp10b_get_runcontrol_whitelist_count(void)
435{ 435{
436 return gp10b_runcontrol_whitelist_count; 436 return gp10b_runcontrol_whitelist_count;
437} 437}
438 438
439static const 439const struct regop_offset_range *gp10b_get_runcontrol_whitelist_ranges(void)
440struct regop_offset_range *gp10b_get_runcontrol_whitelist_ranges(void)
441{ 440{
442 return gp10b_runcontrol_whitelist_ranges; 441 return gp10b_runcontrol_whitelist_ranges;
443} 442}
444 443
445static int gp10b_get_runcontrol_whitelist_ranges_count(void) 444int gp10b_get_runcontrol_whitelist_ranges_count(void)
446{ 445{
447 return gp10b_runcontrol_whitelist_ranges_count; 446 return gp10b_runcontrol_whitelist_ranges_count;
448} 447}
449 448
450static const u32 *gp10b_get_qctl_whitelist(void) 449const u32 *gp10b_get_qctl_whitelist(void)
451{ 450{
452 return gp10b_qctl_whitelist; 451 return gp10b_qctl_whitelist;
453} 452}
454 453
455static int gp10b_get_qctl_whitelist_count(void) 454int gp10b_get_qctl_whitelist_count(void)
456{ 455{
457 return gp10b_qctl_whitelist_count; 456 return gp10b_qctl_whitelist_count;
458} 457}
459 458
460static const struct regop_offset_range *gp10b_get_qctl_whitelist_ranges(void) 459const struct regop_offset_range *gp10b_get_qctl_whitelist_ranges(void)
461{ 460{
462 return gp10b_qctl_whitelist_ranges; 461 return gp10b_qctl_whitelist_ranges;
463} 462}
464 463
465static int gp10b_get_qctl_whitelist_ranges_count(void) 464int gp10b_get_qctl_whitelist_ranges_count(void)
466{ 465{
467 return gp10b_qctl_whitelist_ranges_count; 466 return gp10b_qctl_whitelist_ranges_count;
468} 467}
469 468
470static int gp10b_apply_smpc_war(struct dbg_session_gk20a *dbg_s) 469int gp10b_apply_smpc_war(struct dbg_session_gk20a *dbg_s)
471{ 470{
472 /* Not needed on gp10b */ 471 /* Not needed on gp10b */
473 return 0; 472 return 0;
474} 473}
475
476void gp10b_init_regops(struct gpu_ops *gops)
477{
478 gops->regops.get_global_whitelist_ranges =
479 gp10b_get_global_whitelist_ranges;
480 gops->regops.get_global_whitelist_ranges_count =
481 gp10b_get_global_whitelist_ranges_count;
482
483 gops->regops.get_context_whitelist_ranges =
484 gp10b_get_context_whitelist_ranges;
485 gops->regops.get_context_whitelist_ranges_count =
486 gp10b_get_context_whitelist_ranges_count;
487
488 gops->regops.get_runcontrol_whitelist =
489 gp10b_get_runcontrol_whitelist;
490 gops->regops.get_runcontrol_whitelist_count =
491 gp10b_get_runcontrol_whitelist_count;
492
493 gops->regops.get_runcontrol_whitelist_ranges =
494 gp10b_get_runcontrol_whitelist_ranges;
495 gops->regops.get_runcontrol_whitelist_ranges_count =
496 gp10b_get_runcontrol_whitelist_ranges_count;
497
498 gops->regops.get_qctl_whitelist =
499 gp10b_get_qctl_whitelist;
500 gops->regops.get_qctl_whitelist_count =
501 gp10b_get_qctl_whitelist_count;
502
503 gops->regops.get_qctl_whitelist_ranges =
504 gp10b_get_qctl_whitelist_ranges;
505 gops->regops.get_qctl_whitelist_ranges_count =
506 gp10b_get_qctl_whitelist_ranges_count;
507
508 gops->regops.apply_smpc_war =
509 gp10b_apply_smpc_war;
510}