drm/nouveau/core: add top plumbing
authorBen Skeggs <bskeggs@redhat.com>
Fri, 8 Apr 2016 07:24:40 +0000 (17:24 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 20 May 2016 04:43:04 +0000 (14:43 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/core/device.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/Kbuild
drivers/gpu/drm/nouveau/nvkm/subdev/top/Kbuild [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h [new file with mode: 0644]

index 4993a863adb9eb0f84eadbc979a174b0975d0b09..c612dc1f1eb4ef651faa4ec398904a894b0ac814 100644 (file)
@@ -7,6 +7,7 @@ enum nvkm_devidx {
        NVKM_SUBDEV_PCI,
        NVKM_SUBDEV_VBIOS,
        NVKM_SUBDEV_DEVINIT,
+       NVKM_SUBDEV_TOP,
        NVKM_SUBDEV_IBUS,
        NVKM_SUBDEV_GPIO,
        NVKM_SUBDEV_I2C,
@@ -131,6 +132,7 @@ struct nvkm_device {
        struct nvkm_secboot *secboot;
        struct nvkm_therm *therm;
        struct nvkm_timer *timer;
+       struct nvkm_top *top;
        struct nvkm_volt *volt;
 
        struct nvkm_engine *bsp;
@@ -200,6 +202,7 @@ struct nvkm_device_chip {
        int (*secboot )(struct nvkm_device *, int idx, struct nvkm_secboot **);
        int (*therm   )(struct nvkm_device *, int idx, struct nvkm_therm **);
        int (*timer   )(struct nvkm_device *, int idx, struct nvkm_timer **);
+       int (*top     )(struct nvkm_device *, int idx, struct nvkm_top **);
        int (*volt    )(struct nvkm_device *, int idx, struct nvkm_volt **);
 
        int (*bsp     )(struct nvkm_device *, int idx, struct nvkm_engine **);
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h
new file mode 100644 (file)
index 0000000..4219adc
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __NVKM_TOP_H__
+#define __NVKM_TOP_H__
+#include <core/subdev.h>
+
+struct nvkm_top {
+       struct nvkm_subdev subdev;
+};
+#endif
index 3bf08cb1a289cd5e378f9d97a1785d376866da86..eece74d57b51dcda54d940b8b243edc7c3c62d50 100644 (file)
@@ -50,6 +50,7 @@ nvkm_subdev_name[NVKM_SUBDEV_NR] = {
        [NVKM_SUBDEV_SECBOOT ] = "secboot",
        [NVKM_SUBDEV_THERM   ] = "therm",
        [NVKM_SUBDEV_TIMER   ] = "tmr",
+       [NVKM_SUBDEV_TOP     ] = "top",
        [NVKM_SUBDEV_VOLT    ] = "volt",
        [NVKM_ENGINE_BSP     ] = "bsp",
        [NVKM_ENGINE_CE0     ] = "ce0",
index 9f32c8739254b41b06c854a0a434458566f3817e..e3cb8e526b900e08e6f53df89f1c332d45cba661 100644 (file)
@@ -2150,6 +2150,7 @@ nvkm_device_subdev(struct nvkm_device *device, int index)
        _(SECBOOT , device->secboot , &device->secboot->subdev);
        _(THERM   , device->therm   , &device->therm->subdev);
        _(TIMER   , device->timer   , &device->timer->subdev);
+       _(TOP     , device->top     , &device->top->subdev);
        _(VOLT    , device->volt    , &device->volt->subdev);
 #undef _
        default:
@@ -2604,6 +2605,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
                _(NVKM_SUBDEV_SECBOOT ,  secboot);
                _(NVKM_SUBDEV_THERM   ,    therm);
                _(NVKM_SUBDEV_TIMER   ,    timer);
+               _(NVKM_SUBDEV_TOP     ,      top);
                _(NVKM_SUBDEV_VOLT    ,     volt);
                _(NVKM_ENGINE_BSP     ,      bsp);
                _(NVKM_ENGINE_CE0     ,    ce[0]);
index e80f6ab1c41525a6c13045b827e5605a83c1bf65..1a06ac175f5548a1d9d6413ac6c84bc643bd3044 100644 (file)
@@ -22,6 +22,7 @@
 #include <subdev/pmu.h>
 #include <subdev/therm.h>
 #include <subdev/timer.h>
+#include <subdev/top.h>
 #include <subdev/volt.h>
 #include <subdev/secboot.h>
 
index 642d27dc99a3756d7e22b2358e36ebc14f5c9f38..3f5d38d74fba482159d42e09076ccb16aaa4057a 100644 (file)
@@ -19,4 +19,5 @@ include $(src)/nvkm/subdev/pmu/Kbuild
 include $(src)/nvkm/subdev/secboot/Kbuild
 include $(src)/nvkm/subdev/therm/Kbuild
 include $(src)/nvkm/subdev/timer/Kbuild
+include $(src)/nvkm/subdev/top/Kbuild
 include $(src)/nvkm/subdev/volt/Kbuild
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/top/Kbuild b/drivers/gpu/drm/nouveau/nvkm/subdev/top/Kbuild
new file mode 100644 (file)
index 0000000..b197f87
--- /dev/null
@@ -0,0 +1 @@
+#nvkm-y += nvkm/subdev/top/base.o
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/top/priv.h
new file mode 100644 (file)
index 0000000..2b63247
--- /dev/null
@@ -0,0 +1,5 @@
+#ifndef __NVKM_TOP_PRIV_H__
+#define __NVKM_TOP_PRIV_H__
+#define nvkm_top(p) container_of((p), struct nvkm_top, subdev)
+#include <subdev/top.h>
+#endif