aboutsummaryrefslogtreecommitdiffstats
path: root/include/os/linux/os_ops.c
blob: f1ab4b1579981743c800c9a97e091ca8d1f8931b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "os_linux.h"

#include "os_ops_gm20b.h"
#include "os_ops_gp10b.h"
#include "os_ops_gp106.h"
#include "os_ops_gv11b.h"
#include "os_ops_gv100.h"

#if defined(CONFIG_TEGRA_GPU_NEXT)
#include "nvgpu_gpuid_next.h"
#endif

int nvgpu_init_os_linux_ops(struct nvgpu_os_linux *l)
{
	struct gk20a *g = &l->g;
	u32 ver = g->params.gpu_arch + g->params.gpu_impl;

	switch (ver) {
	case GK20A_GPUID_GM20B:
	case GK20A_GPUID_GM20B_B:
		nvgpu_gm20b_init_os_ops(l);
		break;
	case NVGPU_GPUID_GP10B:
		nvgpu_gp10b_init_os_ops(l);
		break;
	case NVGPU_GPUID_GP106:
		nvgpu_gp106_init_os_ops(l);
		break;
	case NVGPU_GPUID_GV100:
		nvgpu_gv100_init_os_ops(l);
		break;
	case NVGPU_GPUID_GV11B:
		nvgpu_gv11b_init_os_ops(l);
		break;
#if defined(CONFIG_TEGRA_GPU_NEXT)
	case NVGPU_GPUID_NEXT:
		NVGPU_NEXT_INIT_OS_OPS(l);
		break;
#endif
	default:
		break;
	}

	return 0;
}
>166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200