drm/nouveau/acr/gm20b: regression fixes
Missed some Tegra-specific quirks when reworking ACR to support Ampere. Fixes: 2541626cfb79 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs") Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Tested-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt> Tested-by: Nicolas Chauvet <kwizart@gmail.com> Signed-off-by: Lyude Paul <lyude@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230130223715.1831509-3-bskeggs@redhat.com
This commit is contained in:
parent
b480600988
commit
9074109676
@ -151,6 +151,9 @@ nvkm_firmware_mem_page(struct nvkm_memory *memory)
|
||||
static enum nvkm_memory_target
|
||||
nvkm_firmware_mem_target(struct nvkm_memory *memory)
|
||||
{
|
||||
if (nvkm_firmware_mem(memory)->device->func->tegra)
|
||||
return NVKM_MEM_TARGET_NCOH;
|
||||
|
||||
return NVKM_MEM_TARGET_HOST;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,16 @@ gm200_flcn_pio_dmem_rd(struct nvkm_falcon *falcon, u8 port, const u8 *img, int l
|
||||
img += 4;
|
||||
len -= 4;
|
||||
}
|
||||
|
||||
/* Sigh. Tegra PMU FW's init message... */
|
||||
if (len) {
|
||||
u32 data = nvkm_falcon_rd32(falcon, 0x1c4 + (port * 8));
|
||||
|
||||
while (len--) {
|
||||
*(u8 *)img++ = data & 0xff;
|
||||
data >>= 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -64,6 +74,8 @@ gm200_flcn_pio_dmem_wr(struct nvkm_falcon *falcon, u8 port, const u8 *img, int l
|
||||
img += 4;
|
||||
len -= 4;
|
||||
}
|
||||
|
||||
WARN_ON(len);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -74,7 +86,7 @@ gm200_flcn_pio_dmem_wr_init(struct nvkm_falcon *falcon, u8 port, bool sec, u32 d
|
||||
|
||||
const struct nvkm_falcon_func_pio
|
||||
gm200_flcn_dmem_pio = {
|
||||
.min = 4,
|
||||
.min = 1,
|
||||
.max = 0x100,
|
||||
.wr_init = gm200_flcn_pio_dmem_wr_init,
|
||||
.wr = gm200_flcn_pio_dmem_wr,
|
||||
|
@ -225,7 +225,7 @@ gm20b_pmu_init(struct nvkm_pmu *pmu)
|
||||
|
||||
pmu->initmsg_received = false;
|
||||
|
||||
nvkm_falcon_load_dmem(falcon, &args, addr_args, sizeof(args), 0);
|
||||
nvkm_falcon_pio_wr(falcon, (u8 *)&args, 0, 0, DMEM, addr_args, sizeof(args), 0, false);
|
||||
nvkm_falcon_start(falcon);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user