drm/nouveau/disp/nv04: implement a base display object class
authorBen Skeggs <bskeggs@redhat.com>
Wed, 30 Jan 2013 23:04:48 +0000 (09:04 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 20 Feb 2013 06:00:45 +0000 (16:00 +1000)
Will be used for upcoming vblank event interfaces.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/engine/disp/nv04.c
drivers/gpu/drm/nouveau/core/include/core/class.h
drivers/gpu/drm/nouveau/nv04_display.c
drivers/gpu/drm/nouveau/nv04_display.h

index 1c919f2af89f818757c75be470bf3e617df472ac..6eaf7257be775eca6a5a62682727646035be9413 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include <engine/disp.h>
+#include <core/class.h>
 
 struct nv04_disp_priv {
        struct nouveau_disp base;
@@ -30,6 +31,7 @@ struct nv04_disp_priv {
 
 static struct nouveau_oclass
 nv04_disp_sclass[] = {
+       { NV04_DISP_CLASS, &nouveau_object_ofuncs },
        {},
 };
 
index 47c4b3a5bd3a282e4c4f10232ed9de4ecef3a594..994a280596050f00211e032dcef635651e9d8cb2 100644 (file)
@@ -154,6 +154,14 @@ struct nve0_channel_ind_class {
        u32 engine;
 };
 
+/* 0046: NV04_DISP
+ */
+
+#define NV04_DISP_CLASS                                              0x00000046
+
+struct nv04_display_class {
+};
+
 /* 5070: NV50_DISP
  * 8270: NV84_DISP
  * 8370: NVA0_DISP
index 2cd6fb8c548e830e8fc629cf9fbe8bc60c3b3f63..edc31560b848292bfea5960c1f5e9d778dc12c21 100644 (file)
@@ -22,6 +22,9 @@
  * Author: Ben Skeggs
  */
 
+#include <core/object.h>
+#include <core/class.h>
+
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
 
@@ -71,6 +74,11 @@ nv04_display_create(struct drm_device *dev)
 
        nouveau_hw_save_vga_fonts(dev, 1);
 
+       ret = nouveau_object_new(nv_object(drm), NVDRM_DEVICE, 0xd1500000,
+                                NV04_DISP_CLASS, NULL, 0, &disp->core);
+       if (ret)
+               return ret;
+
        nv04_crtc_create(dev, 0);
        if (nv_two_heads(dev))
                nv04_crtc_create(dev, 1);
index 45322802e37d5576084646b565fbaace947691dd..a0a031dad13f366a9b69510afaa55200337fba3b 100644 (file)
@@ -80,6 +80,7 @@ struct nv04_display {
        struct nv04_mode_state saved_reg;
        uint32_t saved_vga_font[4][16384];
        uint32_t dac_users[4];
+       struct nouveau_object *core;
 };
 
 static inline struct nv04_display *