mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-27 08:05:27 +08:00
drm/nouveau/gr/gf100-: move fecs bind_pointer into a function
Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
8c7db76844
commit
b7f713b8d3
@ -1523,13 +1523,9 @@ gf100_grctx_generate(struct gf100_gr *gr)
|
||||
/* Make channel current. */
|
||||
addr = nvkm_memory_addr(inst) >> 12;
|
||||
if (gr->firmware) {
|
||||
nvkm_wr32(device, 0x409840, 0x00000030);
|
||||
nvkm_wr32(device, 0x409500, 0x80000000 | addr);
|
||||
nvkm_wr32(device, 0x409504, 0x00000003);
|
||||
nvkm_msec(device, 2000,
|
||||
if (nvkm_rd32(device, 0x409800) & 0x00000010)
|
||||
break;
|
||||
);
|
||||
ret = gf100_gr_fecs_bind_pointer(gr, 0x80000000 | addr);
|
||||
if (ret)
|
||||
goto done;
|
||||
|
||||
nvkm_kmap(data);
|
||||
nvkm_wo32(data, 0x1c, 1);
|
||||
|
@ -715,6 +715,25 @@ gf100_gr_pack_mmio[] = {
|
||||
* PGRAPH engine/subdev functions
|
||||
******************************************************************************/
|
||||
|
||||
int
|
||||
gf100_gr_fecs_bind_pointer(struct gf100_gr *gr, u32 inst)
|
||||
{
|
||||
struct nvkm_device *device = gr->base.engine.subdev.device;
|
||||
|
||||
nvkm_wr32(device, 0x409840, 0x00000030);
|
||||
nvkm_wr32(device, 0x409500, inst);
|
||||
nvkm_wr32(device, 0x409504, 0x00000003);
|
||||
nvkm_msec(device, 2000,
|
||||
u32 stat = nvkm_rd32(device, 0x409800);
|
||||
if (stat & 0x00000020)
|
||||
return -EIO;
|
||||
if (stat & 0x00000010)
|
||||
return 0;
|
||||
);
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static int
|
||||
gf100_gr_fecs_set_reglist_virtual_address(struct gf100_gr *gr, u64 addr)
|
||||
{
|
||||
|
@ -138,6 +138,8 @@ int gf100_gr_new_(const struct gf100_gr_func *, struct nvkm_device *,
|
||||
int, struct nvkm_gr **);
|
||||
void *gf100_gr_dtor(struct nvkm_gr *);
|
||||
|
||||
int gf100_gr_fecs_bind_pointer(struct gf100_gr *, u32 inst);
|
||||
|
||||
struct gf100_gr_func_zbc {
|
||||
void (*clear_color)(struct gf100_gr *, int zbc);
|
||||
void (*clear_depth)(struct gf100_gr *, int zbc);
|
||||
|
Loading…
Reference in New Issue
Block a user