diff options
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c index 1fc1b0f2..c0e1b1bb 100644 --- a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c +++ b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | |||
@@ -68,6 +68,7 @@ | |||
68 | #include <gp10b/ce_gp10b.h> | 68 | #include <gp10b/ce_gp10b.h> |
69 | #include "gp10b/gr_gp10b.h" | 69 | #include "gp10b/gr_gp10b.h" |
70 | #include <gp10b/fifo_gp10b.h> | 70 | #include <gp10b/fifo_gp10b.h> |
71 | #include "gp10b/clk_arb_gp10b.h" | ||
71 | 72 | ||
72 | #include <gp106/pmu_gp106.h> | 73 | #include <gp106/pmu_gp106.h> |
73 | #include <gp106/acr_gp106.h> | 74 | #include <gp106/acr_gp106.h> |
@@ -522,6 +523,15 @@ static const struct gpu_ops vgpu_gv11b_ops = { | |||
522 | .pmu_pg_set_sub_feature_mask = NULL, | 523 | .pmu_pg_set_sub_feature_mask = NULL, |
523 | .is_pmu_supported = NULL, | 524 | .is_pmu_supported = NULL, |
524 | }, | 525 | }, |
526 | .clk_arb = { | ||
527 | .get_arbiter_clk_domains = gp10b_get_arbiter_clk_domains, | ||
528 | .get_arbiter_f_points = gp10b_get_arbiter_f_points, | ||
529 | .get_arbiter_clk_range = gp10b_get_arbiter_clk_range, | ||
530 | .get_arbiter_clk_default = gp10b_get_arbiter_clk_default, | ||
531 | .arbiter_clk_init = gp10b_init_clk_arbiter, | ||
532 | .clk_arb_run_arbiter_cb = gp10b_clk_arb_run_arbiter_cb, | ||
533 | .clk_arb_cleanup = gp10b_clk_arb_cleanup, | ||
534 | }, | ||
525 | .regops = { | 535 | .regops = { |
526 | .exec_regops = vgpu_exec_regops, | 536 | .exec_regops = vgpu_exec_regops, |
527 | .get_global_whitelist_ranges = | 537 | .get_global_whitelist_ranges = |
@@ -627,6 +637,7 @@ static const struct gpu_ops vgpu_gv11b_ops = { | |||
627 | int vgpu_gv11b_init_hal(struct gk20a *g) | 637 | int vgpu_gv11b_init_hal(struct gk20a *g) |
628 | { | 638 | { |
629 | struct gpu_ops *gops = &g->ops; | 639 | struct gpu_ops *gops = &g->ops; |
640 | struct vgpu_priv_data *priv = vgpu_get_priv_data(g); | ||
630 | 641 | ||
631 | gops->ltc = vgpu_gv11b_ops.ltc; | 642 | gops->ltc = vgpu_gv11b_ops.ltc; |
632 | gops->ce2 = vgpu_gv11b_ops.ce2; | 643 | gops->ce2 = vgpu_gv11b_ops.ce2; |
@@ -641,6 +652,7 @@ int vgpu_gv11b_init_hal(struct gk20a *g) | |||
641 | #endif | 652 | #endif |
642 | gops->therm = vgpu_gv11b_ops.therm; | 653 | gops->therm = vgpu_gv11b_ops.therm; |
643 | gops->pmu = vgpu_gv11b_ops.pmu; | 654 | gops->pmu = vgpu_gv11b_ops.pmu; |
655 | gops->clk_arb = vgpu_gv11b_ops.clk_arb; | ||
644 | gops->regops = vgpu_gv11b_ops.regops; | 656 | gops->regops = vgpu_gv11b_ops.regops; |
645 | gops->mc = vgpu_gv11b_ops.mc; | 657 | gops->mc = vgpu_gv11b_ops.mc; |
646 | gops->debug = vgpu_gv11b_ops.debug; | 658 | gops->debug = vgpu_gv11b_ops.debug; |
@@ -661,6 +673,10 @@ int vgpu_gv11b_init_hal(struct gk20a *g) | |||
661 | gops->get_litter_value = vgpu_gv11b_ops.get_litter_value; | 673 | gops->get_litter_value = vgpu_gv11b_ops.get_litter_value; |
662 | gops->semaphore_wakeup = gk20a_channel_semaphore_wakeup; | 674 | gops->semaphore_wakeup = gk20a_channel_semaphore_wakeup; |
663 | 675 | ||
676 | if (priv->constants.can_set_clkrate) { | ||
677 | gops->clk.support_clk_freq_controller = true; | ||
678 | } | ||
679 | |||
664 | g->name = "gv11b"; | 680 | g->name = "gv11b"; |
665 | 681 | ||
666 | return 0; | 682 | return 0; |