* DEALINGS IN THE SOFTWARE.
  */
 
+#include <engine/falcon.h>
+#include <core/msgqueue.h>
 #include "priv.h"
 
+static void
+gm20b_pmu_recv(struct nvkm_pmu *pmu)
+{
+       nvkm_msgqueue_recv(pmu->queue);
+}
+
 static const struct nvkm_pmu_func
 gm20b_pmu = {
-       .reset = gt215_pmu_reset,
+       .intr = gt215_pmu_intr,
+       .recv = gm20b_pmu_recv,
 };
 
 int
 gm20b_pmu_new(struct nvkm_device *device, int index, struct nvkm_pmu **ppmu)
 {
-       return nvkm_pmu_new_(&gm20b_pmu, device, index, ppmu);
+       int ret;
+
+       ret = nvkm_pmu_new_(&gm20b_pmu, device, index, ppmu);
+       if (ret)
+               return ret;
+
+       return 0;
 }