mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
drm/nouveau/fifo/gk104-: better detection of chid when parsing engine status
The previous commit simply changes the interface, but should result in the same behaviour as previously. This commit has been split out from it as it can result in a different channel being selected. Signed-off-by: Ben Skeggs <[email protected]>
This commit is contained in:
parent
b88917fe0f
commit
ec5c6bda19
1 changed files with 19 additions and 1 deletions
|
|
@ -48,6 +48,7 @@ static void
|
|||
gk104_fifo_engine_status(struct gk104_fifo *fifo, int engn,
|
||||
struct gk104_fifo_engine_status *status)
|
||||
{
|
||||
struct nvkm_engine *engine = fifo->engine[engn].engine;
|
||||
struct nvkm_subdev *subdev = &fifo->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
u32 stat = nvkm_rd32(device, 0x002640 + (engn * 0x08));
|
||||
|
|
@ -61,7 +62,24 @@ gk104_fifo_engine_status(struct gk104_fifo *fifo, int engn,
|
|||
status->load = !!(stat & 0x00002000);
|
||||
status->prev.tsg = !!(stat & 0x00001000);
|
||||
status->prev.id = (stat & 0x00000fff);
|
||||
status->chan = status->load ? &status->next : &status->prev;
|
||||
status->chan = NULL;
|
||||
|
||||
if (status->busy && status->chsw) {
|
||||
if (status->load && status->save) {
|
||||
if (engine && nvkm_engine_chsw_load(engine))
|
||||
status->chan = &status->next;
|
||||
else
|
||||
status->chan = &status->prev;
|
||||
} else
|
||||
if (status->load) {
|
||||
status->chan = &status->next;
|
||||
} else {
|
||||
status->chan = &status->prev;
|
||||
}
|
||||
} else
|
||||
if (status->load) {
|
||||
status->chan = &status->prev;
|
||||
}
|
||||
|
||||
nvkm_debug(subdev, "engine %02d: busy %d faulted %d chsw %d "
|
||||
"save %d load %d %sid %d%s-> %sid %d%s\n",
|
||||
|
|
|
|||
Loading…
Reference in a new issue