summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b
diff options
context:
space:
mode:
authorDebarshi Dutta <ddutta@nvidia.com>2018-09-04 01:25:33 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-20 13:50:12 -0400
commit519948a9c664020fd0b37118749faad2dfd73d97 (patch)
tree1eb57dc393075670331ca89cf366a093d75d3f47 /drivers/gpu/nvgpu/gv11b
parent1c7258411da89aea5279e9a8d117479928f8bf64 (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.c11
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 =