drm/nouveau/secboot/gp108: implement on top of acr_r370
Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Gourav Samaiya <gsamaiya@nvidia.com>
This commit is contained in:
parent
dcc80c8947
commit
2c5ac5ba4f
|
@ -60,6 +60,7 @@ int nvkm_secboot_reset(struct nvkm_secboot *, unsigned long);
|
|||
int gm200_secboot_new(struct nvkm_device *, int, struct nvkm_secboot **);
|
||||
int gm20b_secboot_new(struct nvkm_device *, int, struct nvkm_secboot **);
|
||||
int gp102_secboot_new(struct nvkm_device *, int, struct nvkm_secboot **);
|
||||
int gp108_secboot_new(struct nvkm_device *, int, struct nvkm_secboot **);
|
||||
int gp10b_secboot_new(struct nvkm_device *, int, struct nvkm_secboot **);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2345,6 +2345,7 @@ nv138_chipset = {
|
|||
.mc = gp100_mc_new,
|
||||
.mmu = gp100_mmu_new,
|
||||
.therm = gp100_therm_new,
|
||||
.secboot = gp108_secboot_new,
|
||||
.pci = gp100_pci_new,
|
||||
.pmu = gp102_pmu_new,
|
||||
.timer = gk20a_timer_new,
|
||||
|
@ -2356,6 +2357,10 @@ nv138_chipset = {
|
|||
.disp = gp102_disp_new,
|
||||
.dma = gf119_dma_new,
|
||||
.fifo = gp100_fifo_new,
|
||||
.gr = gp107_gr_new,
|
||||
.nvdec = gp102_nvdec_new,
|
||||
.sec2 = gp102_sec2_new,
|
||||
.sw = gf100_sw_new,
|
||||
};
|
||||
|
||||
static const struct nvkm_device_chip
|
||||
|
|
|
@ -505,6 +505,7 @@ nvkm_msgqueue_new(u32 version, struct nvkm_falcon *falcon,
|
|||
ret = msgqueue_0137bca5_new(falcon, sb, queue);
|
||||
break;
|
||||
case 0x0148cdec:
|
||||
case 0x015ccf3e:
|
||||
ret = msgqueue_0148cdec_new(falcon, sb, queue);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -12,4 +12,5 @@ nvkm-y += nvkm/subdev/secboot/acr_r375.o
|
|||
nvkm-y += nvkm/subdev/secboot/gm200.o
|
||||
nvkm-y += nvkm/subdev/secboot/gm20b.o
|
||||
nvkm-y += nvkm/subdev/secboot/gp102.o
|
||||
nvkm-y += nvkm/subdev/secboot/gp108.o
|
||||
nvkm-y += nvkm/subdev/secboot/gp10b.o
|
||||
|
|
|
@ -133,7 +133,7 @@ gp102_secboot_run_blob(struct nvkm_secboot *sb, struct nvkm_gpuobj *blob,
|
|||
return gm200_secboot_run_blob(sb, blob, falcon);
|
||||
}
|
||||
|
||||
static const struct nvkm_secboot_func
|
||||
const struct nvkm_secboot_func
|
||||
gp102_secboot = {
|
||||
.dtor = gm200_secboot_dtor,
|
||||
.oneinit = gm200_secboot_oneinit,
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright 2017 Red Hat Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#include "gm200.h"
|
||||
#include "acr.h"
|
||||
|
||||
int
|
||||
gp108_secboot_new(struct nvkm_device *device, int index,
|
||||
struct nvkm_secboot **psb)
|
||||
{
|
||||
struct gm200_secboot *gsb;
|
||||
struct nvkm_acr *acr;
|
||||
|
||||
acr = acr_r370_new(NVKM_SECBOOT_FALCON_SEC2,
|
||||
BIT(NVKM_SECBOOT_FALCON_FECS) |
|
||||
BIT(NVKM_SECBOOT_FALCON_GPCCS) |
|
||||
BIT(NVKM_SECBOOT_FALCON_SEC2));
|
||||
if (IS_ERR(acr))
|
||||
return PTR_ERR(acr);
|
||||
|
||||
if (!(gsb = kzalloc(sizeof(*gsb), GFP_KERNEL))) {
|
||||
acr->func->dtor(acr);
|
||||
return -ENOMEM;
|
||||
}
|
||||
*psb = &gsb->base;
|
||||
|
||||
return nvkm_secboot_ctor(&gp102_secboot, acr, device, index, &gsb->base);
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("nvidia/gp108/acr/bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/acr/unload_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/acr/ucode_load.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/acr/ucode_unload.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/fecs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_bl.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_inst.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_data.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/gpccs_sig.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_ctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_nonctx.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_bundle_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/gr/sw_method_init.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/nvdec/scrubber.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/desc.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/image.bin");
|
||||
MODULE_FIRMWARE("nvidia/gp108/sec2/sig.bin");
|
|
@ -40,6 +40,8 @@ int nvkm_secboot_ctor(const struct nvkm_secboot_func *, struct nvkm_acr *,
|
|||
int nvkm_secboot_falcon_reset(struct nvkm_secboot *);
|
||||
int nvkm_secboot_falcon_run(struct nvkm_secboot *);
|
||||
|
||||
extern const struct nvkm_secboot_func gp102_secboot;
|
||||
|
||||
struct flcn_u64 {
|
||||
u32 lo;
|
||||
u32 hi;
|
||||
|
|
Loading…
Reference in New Issue