To support the per-SKU GSP WPR2 heap initialization, introduce tu102_gsp_init_fw_heap() as the common function for the support SKUs. No functional change is intended. Signed-off-by: Zhi Wang <zhiw@xxxxxxxxxx> --- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h | 2 ++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 4 +++- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 9 +++++++++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c | 1 + 7 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c index c849c6299c52..00a7ec875400 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c @@ -31,6 +31,7 @@ ad102_gsp_r535_113_01 = { .wpr_heap.os_carveout_size = 20 << 20, .wpr_heap.base_size = 8 << 20, .wpr_heap.min_size = 84 << 20, + .wpr_heap.init_fw_heap = tu102_gsp_init_fw_heap, .booter.ctor = ga102_gsp_booter_ctor, diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c index 223f68b532ef..e5423199232a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c @@ -47,6 +47,7 @@ ga100_gsp_r535_113_01 = { .wpr_heap.base_size = 8 << 20, .wpr_heap.min_size = 64 << 20, + .wpr_heap.init_fw_heap = tu102_gsp_init_fw_heap, .booter.ctor = tu102_gsp_booter_ctor, diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c index 4c4b4168a266..a79dcca873f0 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c @@ -159,6 +159,7 @@ ga102_gsp_r535_113_01 = { .wpr_heap.os_carveout_size = 20 << 20, .wpr_heap.base_size = 8 << 20, .wpr_heap.min_size = 84 << 20, + .wpr_heap.init_fw_heap = tu102_gsp_init_fw_heap, .booter.ctor = ga102_gsp_booter_ctor, diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h index 579d83048164..dfb41be3d677 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h @@ -28,6 +28,7 @@ struct nvkm_gsp_func { u32 os_carveout_size; u32 base_size; u64 min_size; + int (*init_fw_heap)(struct nvkm_gsp *gsp); } wpr_heap; struct { @@ -48,6 +49,7 @@ extern const struct nvkm_falcon_func tu102_gsp_flcn; extern const struct nvkm_falcon_fw_func tu102_gsp_fwsec; int tu102_gsp_booter_ctor(struct nvkm_gsp *, const char *, const struct firmware *, struct nvkm_falcon *, struct nvkm_falcon_fw *); +int tu102_gsp_init_fw_heap(struct nvkm_gsp *gsp); int tu102_gsp_oneinit(struct nvkm_gsp *); int tu102_gsp_reset(struct nvkm_gsp *); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c index 6f2319845322..c56c545f2bdb 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c @@ -2619,7 +2619,9 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp) /* Release FW images - we've copied them to DMA buffers now. */ r535_gsp_dtor_fws(gsp); - nvkm_gsp_init_fw_heap(gsp); + ret = gsp->func->wpr_heap.init_fw_heap(gsp); + if (WARN_ON(ret)) + return ret; ret = nvkm_gsp_fwsec_frts(gsp); if (WARN_ON(ret)) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c index 59c5f2b9172a..e279a322704a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c @@ -76,6 +76,14 @@ tu102_gsp_booter_ctor(struct nvkm_gsp *gsp, const char *name, const struct firmw return ret; } +int +tu102_gsp_init_fw_heap(struct nvkm_gsp *gsp) +{ + nvkm_gsp_init_fw_heap(gsp); + + return 0; +} + static int tu102_gsp_fwsec_load_bld(struct nvkm_falcon_fw *fw) { @@ -171,6 +179,7 @@ tu102_gsp_r535_113_01 = { .wpr_heap.base_size = 8 << 20, .wpr_heap.min_size = 64 << 20, + .wpr_heap.init_fw_heap = tu102_gsp_init_fw_heap, .booter.ctor = tu102_gsp_booter_ctor, diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c index 04fbd9ed28b1..daa954835ef9 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c @@ -30,6 +30,7 @@ tu116_gsp_r535_113_01 = { .wpr_heap.base_size = 8 << 20, .wpr_heap.min_size = 64 << 20, + .wpr_heap.init_fw_heap = tu102_gsp_init_fw_heap, .booter.ctor = tu102_gsp_booter_ctor, -- 2.34.1