summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2015-08-20 14:54:21 +1000
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 12:40:45 +1000
commit31649ecf47a44e02e73bffc5680c8f56d6cf587a (patch)
treed59914684674c64bb608fc01b65d7a05f4080c5b /drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c
parent57113c0170b9efeacb3e3e9d4c2178c30d9cd991 (diff)
drm/nouveau/tmr: convert to new-style nvkm_subdev
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c45
1 files changed, 13 insertions, 32 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c
index 46bfa10b5b97..9ed5f64912d0 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.c
@@ -21,38 +21,19 @@
*
* Authors: Ben Skeggs
*/
-#include "nv04.h"
+#include "priv.h"
-static int
-gk20a_timer_init(struct nvkm_object *object)
-{
- struct nv04_timer *tmr = (void *)object;
- struct nvkm_subdev *subdev = &tmr->base.subdev;
- struct nvkm_device *device = subdev->device;
- u32 hi = upper_32_bits(tmr->suspend_time);
- u32 lo = lower_32_bits(tmr->suspend_time);
- int ret;
-
- ret = nvkm_timer_init(&tmr->base);
- if (ret)
- return ret;
-
- nvkm_debug(subdev, "time low : %08x\n", lo);
- nvkm_debug(subdev, "time high : %08x\n", hi);
+static const struct nvkm_timer_func
+gk20a_timer = {
+ .intr = nv04_timer_intr,
+ .read = nv04_timer_read,
+ .time = nv04_timer_time,
+ .alarm_init = nv04_timer_alarm_init,
+ .alarm_fini = nv04_timer_alarm_fini,
+};
- /* restore the time before suspend */
- nvkm_wr32(device, NV04_PTIMER_TIME_1, hi);
- nvkm_wr32(device, NV04_PTIMER_TIME_0, lo);
- return 0;
+int
+gk20a_timer_new(struct nvkm_device *device, int index, struct nvkm_timer **ptmr)
+{
+ return nvkm_timer_new_(&gk20a_timer, device, index, ptmr);
}
-
-struct nvkm_oclass
-gk20a_timer_oclass = {
- .handle = NV_SUBDEV(TIMER, 0xff),
- .ofuncs = &(struct nvkm_ofuncs) {
- .ctor = nv04_timer_ctor,
- .dtor = nv04_timer_dtor,
- .init = gk20a_timer_init,
- .fini = nv04_timer_fini,
- }
-};