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/gp106/clk_arb_gp106.c | |
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/gp106/clk_arb_gp106.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/clk_arb_gp106.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c b/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c index 001f2bfc..87fc6a1f 100644 --- a/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c +++ b/drivers/gpu/nvgpu/gp106/clk_arb_gp106.c | |||
@@ -31,6 +31,13 @@ u32 gp106_get_arbiter_clk_domains(struct gk20a *g) | |||
31 | return (CTRL_CLK_DOMAIN_MCLK|CTRL_CLK_DOMAIN_GPC2CLK); | 31 | return (CTRL_CLK_DOMAIN_MCLK|CTRL_CLK_DOMAIN_GPC2CLK); |
32 | } | 32 | } |
33 | 33 | ||
34 | int gp106_get_arbiter_f_points(struct gk20a *g,u32 api_domain, | ||
35 | u32 *num_points, u16 *freqs_in_mhz) | ||
36 | { | ||
37 | return g->ops.clk.clk_domain_get_f_points(g, | ||
38 | api_domain, num_points, freqs_in_mhz); | ||
39 | } | ||
40 | |||
34 | int gp106_get_arbiter_clk_range(struct gk20a *g, u32 api_domain, | 41 | int gp106_get_arbiter_clk_range(struct gk20a *g, u32 api_domain, |
35 | u16 *min_mhz, u16 *max_mhz) | 42 | u16 *min_mhz, u16 *max_mhz) |
36 | { | 43 | { |
@@ -129,6 +136,8 @@ int gp106_init_clk_arbiter(struct gk20a *g) | |||
129 | if (!arb) | 136 | if (!arb) |
130 | return -ENOMEM; | 137 | return -ENOMEM; |
131 | 138 | ||
139 | arb->clk_arb_events_supported = true; | ||
140 | |||
132 | err = nvgpu_mutex_init(&arb->pstate_lock); | 141 | err = nvgpu_mutex_init(&arb->pstate_lock); |
133 | if (err) | 142 | if (err) |
134 | goto mutex_fail; | 143 | goto mutex_fail; |