summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b
diff options
context:
space:
mode:
authormpoojary <mpoojary@nvidia.com>2021-09-28 07:56:36 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2021-10-07 09:56:10 -0400
commit3af391e862bd580b9748b383c808d5ed63d52c1b (patch)
treec6d04f5c134cc0916cb9e369fbd5d87c45ad5dfc /drivers/gpu/nvgpu/gp10b
parentd87030e73048073d4bf1dd52a461b1efc1f04867 (diff)
gpu: nvgpu: adds support for ACR dbg/prod.
ACR ucode is encrypted using different keys for prod/dbg boards. This change adds a check to select ACR ucode based on board type. Note: This support is added for t18x. In the sub-sequent CL, support for T210 will be added and since ACR binaries are different for gp10b and gm20b, a new ACR init function is created for gp10b to accept new ACR prod/dbg binaries. Bug 2672836 dev-main reference patch: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2471590 Change-Id: Ib0a01bce4f3a3187aa15a669649f8510c88dfd0a Signed-off-by: mpoojary <mpoojary@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2601970 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b')
-rw-r--r--drivers/gpu/nvgpu/gp10b/acr_gp10b.c52
-rw-r--r--drivers/gpu/nvgpu/gp10b/acr_gp10b.h28
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c5
3 files changed, 83 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/acr_gp10b.c b/drivers/gpu/nvgpu/gp10b/acr_gp10b.c
new file mode 100644
index 00000000..d113c458
--- /dev/null
+++ b/drivers/gpu/nvgpu/gp10b/acr_gp10b.c
@@ -0,0 +1,52 @@
1/*
2 * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 */
22
23#include <nvgpu/types.h>
24#include <nvgpu/gk20a.h>
25#include <nvgpu/pmu.h>
26#include <nvgpu/acr/nvgpu_acr.h>
27
28#include "gm20b/acr_gm20b.h"
29#include "acr_gp10b.h"
30
31static void gp10b_acr_default_sw_init(struct gk20a *g, struct hs_acr *hs_acr)
32{
33 nvgpu_log_fn(g, " ");
34
35 /* ACR HS ucode type & f/w name*/
36 hs_acr->acr_type = ACR_DEFAULT;
37
38 if (!g->ops.pmu.is_debug_mode_enabled(g)) {
39 hs_acr->acr_fw_name = HSBIN_ACR_PROD_UCODE;
40 } else {
41 hs_acr->acr_fw_name = HSBIN_ACR_DBG_UCODE;
42 }
43}
44
45void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr)
46{
47 nvgpu_log_fn(g, " ");
48
49 /* inherit the gm20b config data */
50 nvgpu_gm20b_acr_sw_init(g, acr);
51 gp10b_acr_default_sw_init(g, &acr->acr);
52} \ No newline at end of file
diff --git a/drivers/gpu/nvgpu/gp10b/acr_gp10b.h b/drivers/gpu/nvgpu/gp10b/acr_gp10b.h
new file mode 100644
index 00000000..7e1261ca
--- /dev/null
+++ b/drivers/gpu/nvgpu/gp10b/acr_gp10b.h
@@ -0,0 +1,28 @@
1/*
2* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
3*
4* Permission is hereby granted, free of charge, to any person obtaining a
5* copy of this software and associated documentation files (the "Software"),
6* to deal in the Software without restriction, including without limitation
7* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8* and/or sell copies of the Software, and to permit persons to whom the
9* Software is furnished to do so, subject to the following conditions:
10*
11* The above copyright notice and this permission notice shall be included in
12* all copies or substantial portions of the Software.
13*
14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20* DEALINGS IN THE SOFTWARE.
21*/
22
23#ifndef ACR_SW_GP10B_H
24#define ACR_SW_GP10B_H
25struct gk20a;
26struct nvgpu_acr;
27void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr);
28#endif /* ACR_SW_GP10B_H */ \ No newline at end of file
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
index 6498f8c9..c6f3c3d9 100644
--- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * GP10B Tegra HAL interface 2 * GP10B Tegra HAL interface
3 * 3 *
4 * Copyright (c) 2014-2020, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2014-2021, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a 6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"), 7 * copy of this software and associated documentation files (the "Software"),
@@ -72,6 +72,7 @@
72#include "gm20b/gr_gm20b.h" 72#include "gm20b/gr_gm20b.h"
73#include "gm20b/fifo_gm20b.h" 73#include "gm20b/fifo_gm20b.h"
74#include "gm20b/acr_gm20b.h" 74#include "gm20b/acr_gm20b.h"
75#include "gp10b/acr_gp10b.h"
75#include "gm20b/pmu_gm20b.h" 76#include "gm20b/pmu_gm20b.h"
76#include "gm20b/clk_gm20b.h" 77#include "gm20b/clk_gm20b.h"
77#include "gm20b/mm_gm20b.h" 78#include "gm20b/mm_gm20b.h"
@@ -734,7 +735,7 @@ static const struct gpu_ops gp10b_ops = {
734 .read_vin_cal_gain_offset_fuse = NULL, 735 .read_vin_cal_gain_offset_fuse = NULL,
735 }, 736 },
736 .acr = { 737 .acr = {
737 .acr_sw_init = nvgpu_gm20b_acr_sw_init, 738 .acr_sw_init = nvgpu_gp10b_acr_sw_init,
738 }, 739 },
739 .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics, 740 .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics,
740 .get_litter_value = gp10b_get_litter_value, 741 .get_litter_value = gp10b_get_litter_value,