These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / nvkm / subdev / timer / gk20a.c
index 80e3806..9ed5f64 100644 (file)
  *
  * Authors: Ben Skeggs
  */
-#include "nv04.h"
+#include "priv.h"
 
-static int
-gk20a_timer_init(struct nvkm_object *object)
-{
-       struct nv04_timer_priv *priv = (void *)object;
-       u32 hi = upper_32_bits(priv->suspend_time);
-       u32 lo = lower_32_bits(priv->suspend_time);
-       int ret;
-
-       ret = nvkm_timer_init(&priv->base);
-       if (ret)
-               return ret;
-
-       nv_debug(priv, "time low        : 0x%08x\n", lo);
-       nv_debug(priv, "time high       : 0x%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 */
-       nv_wr32(priv, NV04_PTIMER_TIME_1, hi);
-       nv_wr32(priv, 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,
-       }
-};