summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/timer
diff options
context:
space:
mode:
authorBen Skeggs2015-08-20 06:54:10 +0200
committerBen Skeggs2015-08-28 04:40:19 +0200
commit56f67dc19623b6cd4db57ee07d6f0cad32bcd5af (patch)
tree55f4b766376d59272fab0df9b1682a21a5e3f1f0 /drivers/gpu/drm/nouveau/nvkm/subdev/timer
parentdrm/nouveau/kms/nv04: fix incorrect use of register accessors (diff)
downloadkernel-qcow2-linux-56f67dc19623b6cd4db57ee07d6f0cad32bcd5af.tar.gz
kernel-qcow2-linux-56f67dc19623b6cd4db57ee07d6f0cad32bcd5af.tar.xz
kernel-qcow2-linux-56f67dc19623b6cd4db57ee07d6f0cad32bcd5af.zip
drm/nouveau/tmr: type-safe PTIMER-based delay/wait macros
These require an explicit struct nvkm_device pointer, unlike the previous macros which take a void *, and work for (almost) anything derived from nvkm_object by using some heuristics. These macros are more general than the previous ones, and can be used to handle PTIMER-based busy-waits (will be used in later devinit fixes) as well as more complicated wait conditions. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/timer')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c57
1 files changed, 0 insertions, 57 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c
index c59b2353683b..4c34e2bd0487 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c
@@ -23,63 +23,6 @@
*/
#include <subdev/timer.h>
-bool
-nvkm_timer_wait_eq(void *obj, u64 nsec, u32 addr, u32 mask, u32 data)
-{
- struct nvkm_timer *ptimer = nvkm_timer(obj);
- struct nvkm_device *device = ptimer->subdev.device;
- u64 time0;
-
- time0 = ptimer->read(ptimer);
- do {
- if (nv_iclass(obj, NV_SUBDEV_CLASS)) {
- if ((nvkm_rd32(device, addr) & mask) == data)
- return true;
- } else {
- if ((nv_ro32(obj, addr) & mask) == data)
- return true;
- }
- } while (ptimer->read(ptimer) - time0 < nsec);
-
- return false;
-}
-
-bool
-nvkm_timer_wait_ne(void *obj, u64 nsec, u32 addr, u32 mask, u32 data)
-{
- struct nvkm_timer *ptimer = nvkm_timer(obj);
- struct nvkm_device *device = ptimer->subdev.device;
- u64 time0;
-
- time0 = ptimer->read(ptimer);
- do {
- if (nv_iclass(obj, NV_SUBDEV_CLASS)) {
- if ((nvkm_rd32(device, addr) & mask) != data)
- return true;
- } else {
- if ((nv_ro32(obj, addr) & mask) != data)
- return true;
- }
- } while (ptimer->read(ptimer) - time0 < nsec);
-
- return false;
-}
-
-bool
-nvkm_timer_wait_cb(void *obj, u64 nsec, bool (*func)(void *), void *data)
-{
- struct nvkm_timer *ptimer = nvkm_timer(obj);
- u64 time0;
-
- time0 = ptimer->read(ptimer);
- do {
- if (func(data) == true)
- return true;
- } while (ptimer->read(ptimer) - time0 < nsec);
-
- return false;
-}
-
void
nvkm_timer_alarm(void *obj, u32 nsec, struct nvkm_alarm *alarm)
{