summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/clk/clk.h
diff options
context:
space:
mode:
authorVijayakumar Subbu <vsubbu@nvidia.com>2016-07-30 13:44:30 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:49 -0500
commit432017248e432df0619dc2df30f915a52634338f (patch)
tree40bb7a77983fb2753271bc46b346a44ebd6121cf /drivers/gpu/nvgpu/clk/clk.h
parent38ad90b4840434df4650c617a236e1b01f8a43c6 (diff)
gpu: nvgpu: Add dGPU clocks support
JIRA DNVGPU-42 Change-Id: Ic2fca9d0cf82f2823654ac5e8f0772a1eec7b3b5 Signed-off-by: Vijayakumar Subbu <vsubbu@nvidia.com> Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1205850 (cherry picked from commit b9f5c6bc4e649162d63e33d65b725872340ca114) Reviewed-on: http://git-master/r/1227257 GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/clk/clk.h')
-rw-r--r--drivers/gpu/nvgpu/clk/clk.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/clk/clk.h b/drivers/gpu/nvgpu/clk/clk.h
new file mode 100644
index 00000000..d638424f
--- /dev/null
+++ b/drivers/gpu/nvgpu/clk/clk.h
@@ -0,0 +1,86 @@
1/*
2 * general clock structures & definitions
3 *
4 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
5 *
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,
8 * version 2, as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * more details.
14 */
15#ifndef _CLK_H_
16#define _CLK_H_
17
18#include "clk_vin.h"
19#include "clk_fll.h"
20#include "clk_domain.h"
21#include "clk_prog.h"
22#include "clk_vf_point.h"
23#include "gk20a/gk20a.h"
24
25#define NV_PERF_DOMAIN_4X_CLOCK_DOMAIN_SKIP 0x10
26#define NV_PERF_DOMAIN_4X_CLOCK_DOMAIN_MASK 0x1F
27#define NV_PERF_DOMAIN_4X_CLOCK_DOMAIN_SHIFT 0
28
29/* clock related defines for GPUs supporting clock control from pmu*/
30struct clk_pmupstate {
31 struct avfsvinobjs avfs_vinobjs;
32 struct avfsfllobjs avfs_fllobjs;
33 struct clk_domains clk_domainobjs;
34 struct clk_progs clk_progobjs;
35 struct clk_vf_points clk_vf_pointobjs;
36};
37
38struct clockentry {
39 u8 vbios_clk_domain;
40 u8 clk_which;
41 u8 perf_index;
42 u32 api_clk_domain;
43};
44
45#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_MAX_NUMCLKS 9
46
47struct vbios_clock_domain {
48 u8 clock_type;
49 u8 num_domains;
50 struct clockentry clock_entry[NV_PERF_HEADER_4X_CLOCKS_DOMAINS_MAX_NUMCLKS];
51};
52
53struct vbios_clocks_table_1x_hal_clock_entry {
54 enum nv_pmu_clk_clkwhich domain;
55 bool b_noise_aware_capable;
56};
57
58#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_GPC2CLK 0
59#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_XBAR2CLK 1
60#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_DRAMCLK 2
61#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_SYS2CLK 3
62#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_HUB2CLK 4
63#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_MSDCLK 5
64#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_PWRCLK 6
65#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_DISPCLK 7
66#define NV_PERF_HEADER_4X_CLOCKS_DOMAINS_4_NUMCLKS 8
67
68#define PERF_CLK_MCLK 0
69#define PERF_CLK_DISPCLK 1
70#define PERF_CLK_GPC2CLK 2
71#define PERF_CLK_HOSTCLK 3
72#define PERF_CLK_LTC2CLK 4
73#define PERF_CLK_SYS2CLK 5
74#define PERF_CLK_HUB2CLK 6
75#define PERF_CLK_LEGCLK 7
76#define PERF_CLK_MSDCLK 8
77#define PERF_CLK_XCLK 9
78#define PERF_CLK_PWRCLK 10
79#define PERF_CLK_XBAR2CLK 11
80#define PERF_CLK_PCIEGENCLK 12
81#define PERF_CLK_NUM 13
82
83u32 clk_pmu_vf_inject(struct gk20a *g);
84u32 clk_pmu_vin_load(struct gk20a *g);
85
86#endif