diff options
author | Debarshi Dutta <ddutta@nvidia.com> | 2018-09-04 01:25:33 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-09-20 13:50:12 -0400 |
commit | 519948a9c664020fd0b37118749faad2dfd73d97 (patch) | |
tree | 1eb57dc393075670331ca89cf366a093d75d3f47 /drivers/gpu/nvgpu/gv11b | |
parent | 1c7258411da89aea5279e9a8d117479928f8bf64 (diff) |
gpu: nvgpu: add igpu support for clk_arbiter.
This patch constructs clk_arbiter specific code for gp10b as well as
gv11b and does the necessary plumbing in the clk_arbiter code. The
changes made are as follows.
1) Constructed clk_arb_gp10b.* files which add support for clk_arb
related HALS including the nvgpu_clk_arb_init and nvgpu_clk_arb_cb.
This doesn't have support for debugfs nor the VFUpdateEvent yet and
consequently no support for arb->notifications.
2) Added gpcclk specific variables corresponding to every gpc2clk in
a given clk_arb related struct.
3) Linux specific support_clk_freq_controller is assigned true in
platform_gp10b.c and platform_gv11b.c files.
4) Incremented the clk_arb_worker.put atomic variable during
worker_deinit so as to allow the worker thread to be stopped.
5) Added the flag clk_arb_events_supported as part of struct
nvgpu_clk_arb. This flag is used to selectively account for the extra
refcounting present in OS specific code i.e.
nvgpu_clk_arb_commit_request_fd. For igpus, the extra refcount is
reduced during nvgpu_clk_arb_release_completion_dev.
Bug 2061372
Change-Id: Id00acb106db2b46e55aa0324034a16a73723c078
Signed-off-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1774281
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 591a7786..9444002b 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -67,6 +67,7 @@ | |||
67 | #include "gp10b/mm_gp10b.h" | 67 | #include "gp10b/mm_gp10b.h" |
68 | #include "gp10b/pmu_gp10b.h" | 68 | #include "gp10b/pmu_gp10b.h" |
69 | #include "gp10b/gr_gp10b.h" | 69 | #include "gp10b/gr_gp10b.h" |
70 | #include "gp10b/clk_arb_gp10b.h" | ||
70 | 71 | ||
71 | #include "gp106/pmu_gp106.h" | 72 | #include "gp106/pmu_gp106.h" |
72 | #include "gp106/acr_gp106.h" | 73 | #include "gp106/acr_gp106.h" |
@@ -708,6 +709,15 @@ static const struct gpu_ops gv11b_ops = { | |||
708 | .handle_ext_irq = gv11b_pmu_handle_ext_irq, | 709 | .handle_ext_irq = gv11b_pmu_handle_ext_irq, |
709 | .is_debug_mode_enabled = gm20b_pmu_is_debug_mode_en, | 710 | .is_debug_mode_enabled = gm20b_pmu_is_debug_mode_en, |
710 | }, | 711 | }, |
712 | .clk_arb = { | ||
713 | .get_arbiter_clk_domains = gp10b_get_arbiter_clk_domains, | ||
714 | .get_arbiter_f_points = gp10b_get_arbiter_f_points, | ||
715 | .get_arbiter_clk_range = gp10b_get_arbiter_clk_range, | ||
716 | .get_arbiter_clk_default = gp10b_get_arbiter_clk_default, | ||
717 | .arbiter_clk_init = gp10b_init_clk_arbiter, | ||
718 | .clk_arb_run_arbiter_cb = gp10b_clk_arb_run_arbiter_cb, | ||
719 | .clk_arb_cleanup = gp10b_clk_arb_cleanup, | ||
720 | }, | ||
711 | .regops = { | 721 | .regops = { |
712 | .exec_regops = exec_regops_gk20a, | 722 | .exec_regops = exec_regops_gk20a, |
713 | .get_global_whitelist_ranges = | 723 | .get_global_whitelist_ranges = |
@@ -847,6 +857,7 @@ int gv11b_init_hal(struct gk20a *g) | |||
847 | gops->falcon = gv11b_ops.falcon; | 857 | gops->falcon = gv11b_ops.falcon; |
848 | gops->priv_ring = gv11b_ops.priv_ring; | 858 | gops->priv_ring = gv11b_ops.priv_ring; |
849 | gops->fuse = gv11b_ops.fuse; | 859 | gops->fuse = gv11b_ops.fuse; |
860 | gops->clk_arb = gv11b_ops.clk_arb; | ||
850 | 861 | ||
851 | /* Lone functions */ | 862 | /* Lone functions */ |
852 | gops->chip_init_gpu_characteristics = | 863 | gops->chip_init_gpu_characteristics = |