Commit be99d041 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/gr/gf100-: move reset during golden ctx init to fecs_reset()



Ampere.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent 40bbee55
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -1438,11 +1438,7 @@ gf100_grctx_generate(struct gf100_gr *gr, struct gf100_gr_chan *chan, struct nvk
		grctx->unkn88c(gr, true);

	/* Reset FECS. */
	nvkm_wr32(device, 0x409614, 0x00000070);
	nvkm_usec(device, 10, NVKM_DELAY);
	nvkm_mask(device, 0x409614, 0x00000700, 0x00000700);
	nvkm_usec(device, 10, NVKM_DELAY);
	nvkm_rd32(device, 0x409614);
	gr->func->fecs.reset(gr);

	if (grctx->unkn88c)
		grctx->unkn88c(gr, false);
+13 −0
Original line number Diff line number Diff line
@@ -2400,6 +2400,18 @@ gf100_gr_init(struct gf100_gr *gr)
	return gf100_gr_init_ctxctl(gr);
}

void
gf100_gr_fecs_reset(struct gf100_gr *gr)
{
	struct nvkm_device *device = gr->base.engine.subdev.device;

	nvkm_wr32(device, 0x409614, 0x00000070);
	nvkm_usec(device, 10, NVKM_DELAY);
	nvkm_mask(device, 0x409614, 0x00000700, 0x00000700);
	nvkm_usec(device, 10, NVKM_DELAY);
	nvkm_rd32(device, 0x409614);
}

#include "fuc/hubgf100.fuc3.h"

struct gf100_gr_ucode
@@ -2456,6 +2468,7 @@ gf100_gr = {
	.trap_mp = gf100_gr_trap_mp,
	.mmio = gf100_gr_pack_mmio,
	.fecs.ucode = &gf100_gr_fecs_ucode,
	.fecs.reset = gf100_gr_fecs_reset,
	.gpccs.ucode = &gf100_gr_gpccs_ucode,
	.rops = gf100_gr_rops,
	.grctx = &gf100_grctx,
+2 −0
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@ struct gf100_gr_func {
	const struct gf100_gr_pack *mmio;
	struct {
		struct gf100_gr_ucode *ucode;
		void (*reset)(struct gf100_gr *);
	} fecs;
	struct {
		struct gf100_gr_ucode *ucode;
@@ -202,6 +203,7 @@ void gf100_gr_init_shader_exceptions(struct gf100_gr *, int, int);
void gf100_gr_init_400054(struct gf100_gr *);
void gf100_gr_init_num_tpc_per_gpc(struct gf100_gr *, bool, bool);
extern const struct gf100_gr_func_zbc gf100_gr_zbc;
void gf100_gr_fecs_reset(struct gf100_gr *);

void gf117_gr_init_zcull(struct gf100_gr *);

+1 −0
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ gf104_gr = {
	.trap_mp = gf100_gr_trap_mp,
	.mmio = gf104_gr_pack_mmio,
	.fecs.ucode = &gf100_gr_fecs_ucode,
	.fecs.reset = gf100_gr_fecs_reset,
	.gpccs.ucode = &gf100_gr_gpccs_ucode,
	.rops = gf100_gr_rops,
	.grctx = &gf104_grctx,
+1 −0
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ gf108_gr = {
	.trap_mp = gf100_gr_trap_mp,
	.mmio = gf108_gr_pack_mmio,
	.fecs.ucode = &gf100_gr_fecs_ucode,
	.fecs.reset = gf100_gr_fecs_reset,
	.gpccs.ucode = &gf100_gr_gpccs_ucode,
	.rops = gf100_gr_rops,
	.grctx = &gf108_grctx,
Loading