Ben Skeggs
0a96099691
drm/nouveau/kms/nv50-: implement proper push buffer control logic
...
We had a, what was supposed to be temporary, hack in the KMS code where we'd
completely drain an EVO/NVD channel's push buffer when wrapping to the start
again, instead of treating it as a ring buffer.
Let's fix that, finally.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2020-07-24 18:50:56 +10:00
Ben Skeggs
f5650478ab
drm/nouveau/disp/nv50-: pass nvkm_memory objects for channel push buffers
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
a9c44a88ca
drm/nouveau/disp/nv50-: add channel interfaces to control error interrupts
...
This will be required to support Volta, but also allows us to remove code
that's duplicated for each channel type already.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
4a8621a24a
drm/nouveau/disp/nv50-: add channel interfaces to determine the user area
...
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
8531f57027
drm/nouveau/disp/nv50-: merge handling of pio and dma channels
...
Unnecessarily complicated, and a barrier to cleanly supporting Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
abc1d4379b
drm/nouveau/disp/nv50-: replace user object with engine pointer in channels
...
More simplification.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
bb3b0a4220
drm/nouveau/disp/nv50-: initialise from the engine, rather than the user object
...
Engines are initialised on an as-needed basis, so this results in the
same behaviour, whilst allowing us to simplify things a bit.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
83e85d91b2
drm/nouveau/dma: lookup objects with nvkm_object_search()
...
Custom code is no longer needed here.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2017-02-17 15:14:57 +10:00
Ben Skeggs
2a32b9b186
drm/nouveau/disp/nv50-: specify ctrl/user separately when constructing classes
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2016-11-17 09:50:38 +10:00
Ben Skeggs
4391d7f5c7
drm/nouveau/disp/nv50-: split chid into chid.ctrl and chid.user
...
GP102/GP104 make life difficult by redefining the channel indices for
some registers, but not others.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2016-11-17 09:50:38 +10:00
Ben Skeggs
fbd58ebda9
drm/nouveau/object: merge with handle
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2015-08-28 12:40:47 +10:00
Ben Skeggs
68f3f702b6
drm/nouveau/core: remove the remainder of the previous style
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2015-08-28 12:40:47 +10:00
Ben Skeggs
0ce41e3c66
drm/nouveau/disp: convert user classes to new-style nvkm_object
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2015-08-28 12:40:40 +10:00
Ben Skeggs
2a7909c0ad
drm/nouveau/disp: split user classes out from engine implementations
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2015-08-28 12:40:40 +10:00