summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/acr_gp106.c
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2016-06-17 04:39:34 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:17 -0500
commitd4eb7f691ef14263377c0f33777b104e2b1a0c53 (patch)
treeaa6f0dbbe9cfea722f62bce036130ff999d2c108 /drivers/gpu/nvgpu/gp106/acr_gp106.c
parent454cb1631be1a09b25c45a18a97fdaae2f5cdf76 (diff)
gpu: nvgpu: select FW based on ARCH
JIRA DNVGPU-34 Change-Id: Iea1964c7d12536591659188c8e969fc7fb632d12 Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: http://git-master/r/1166785 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/acr_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/gp106/acr_gp106.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gp106/acr_gp106.c b/drivers/gpu/nvgpu/gp106/acr_gp106.c
index 0e49214e..a578c4a0 100644
--- a/drivers/gpu/nvgpu/gp106/acr_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/acr_gp106.c
@@ -27,6 +27,7 @@
27#include "gm20b/acr_gm20b.h" 27#include "gm20b/acr_gm20b.h"
28#include "gm206/pmu_gm206.h" 28#include "gm206/pmu_gm206.h"
29#include "sec2_gp106.h" 29#include "sec2_gp106.h"
30#include "nvgpu_gpuid_t18x.h"
30 31
31/*Defines*/ 32/*Defines*/
32#define gp106_dbg_pmu(fmt, arg...) \ 33#define gp106_dbg_pmu(fmt, arg...) \
@@ -185,11 +186,22 @@ release_img_fw:
185 186
186int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) 187int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
187{ 188{
189 u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl;
188 struct lsf_ucode_desc_v1 *lsf_desc; 190 struct lsf_ucode_desc_v1 *lsf_desc;
189 const struct firmware *fecs_sig; 191 const struct firmware *fecs_sig = NULL;
190 int err; 192 int err;
191 193
192 fecs_sig = gk20a_request_firmware(g, GM20B_FECS_UCODE_SIG); 194 switch (ver) {
195 case NVGPU_GPUID_GP104:
196 fecs_sig = gk20a_request_firmware(g, GP104_FECS_UCODE_SIG);
197 break;
198 case NVGPU_GPUID_GP106:
199 fecs_sig = gk20a_request_firmware(g, GP106_FECS_UCODE_SIG);
200 break;
201 default:
202 gk20a_err(g->dev, "no support for GPUID %x", ver);
203 }
204
193 if (!fecs_sig) { 205 if (!fecs_sig) {
194 gk20a_err(dev_from_gk20a(g), "failed to load fecs sig"); 206 gk20a_err(dev_from_gk20a(g), "failed to load fecs sig");
195 return -ENOENT; 207 return -ENOENT;
@@ -252,14 +264,25 @@ rel_sig:
252} 264}
253int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) 265int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
254{ 266{
267 u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl;
255 struct lsf_ucode_desc_v1 *lsf_desc; 268 struct lsf_ucode_desc_v1 *lsf_desc;
256 const struct firmware *gpccs_sig; 269 const struct firmware *gpccs_sig = NULL;
257 int err; 270 int err;
258 271
259 if (g->ops.securegpccs == false) 272 if (g->ops.securegpccs == false)
260 return -ENOENT; 273 return -ENOENT;
261 274
262 gpccs_sig = gk20a_request_firmware(g, T18x_GPCCS_UCODE_SIG); 275 switch (ver) {
276 case NVGPU_GPUID_GP104:
277 gpccs_sig = gk20a_request_firmware(g, GP104_GPCCS_UCODE_SIG);
278 break;
279 case NVGPU_GPUID_GP106:
280 gpccs_sig = gk20a_request_firmware(g, GP106_GPCCS_UCODE_SIG);
281 break;
282 default:
283 gk20a_err(g->dev, "no support for GPUID %x", ver);
284 }
285
263 if (!gpccs_sig) { 286 if (!gpccs_sig) {
264 gk20a_err(dev_from_gk20a(g), "failed to load gpccs sig"); 287 gk20a_err(dev_from_gk20a(g), "failed to load gpccs sig");
265 return -ENOENT; 288 return -ENOENT;