diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2016-06-17 04:39:34 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:56:17 -0500 |
commit | d4eb7f691ef14263377c0f33777b104e2b1a0c53 (patch) | |
tree | aa6f0dbbe9cfea722f62bce036130ff999d2c108 /drivers/gpu/nvgpu/gp106/acr_gp106.c | |
parent | 454cb1631be1a09b25c45a18a97fdaae2f5cdf76 (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.c | 31 |
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 | ||
186 | int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) | 187 | int 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 | } |
253 | int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) | 265 | int 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; |