diff options
author | Karol Herbst <nouveau@karolherbst.de> | 2015-07-30 12:52:23 +0300 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2016-01-11 04:28:25 +0300 |
commit | b126a200e9dbd90fbe2148ee572dd0c2508be81f (patch) | |
tree | 5038256b4c4d8ea147767d36403367292a2ec67c | |
parent | 56c101af401f3c1f0c97bc98ad6f32e4d4a6b05a (diff) | |
download | linux-b126a200e9dbd90fbe2148ee572dd0c2508be81f.tar.xz |
drm/nouveau/debugfs: we need a ctrl object for debugfs
Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_debugfs.c | 28 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_debugfs.h | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drm.h | 1 |
4 files changed, 57 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c index 5085c9818140..fd4140be5472 100644 --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c @@ -29,6 +29,7 @@ */ #include <linux/debugfs.h> +#include <nvif/class.h> #include "nouveau_debugfs.h" #include "nouveau_drm.h" @@ -112,3 +113,30 @@ nouveau_drm_debugfs_cleanup(struct drm_minor *minor) 1, minor); } } + +int +nouveau_debugfs_init(struct nouveau_drm *drm) +{ + int ret; + + drm->debugfs = kzalloc(sizeof(*drm->debugfs), GFP_KERNEL); + if (!drm->debugfs) + return -ENOMEM; + + ret = nvif_object_init(&drm->device.object, 0, NVIF_CLASS_CONTROL, + NULL, 0, &drm->debugfs->ctrl); + if (ret) + return ret; + + return 0; +} + +void +nouveau_debugfs_fini(struct nouveau_drm *drm) +{ + if (drm->debugfs && drm->debugfs->ctrl.priv) + nvif_object_fini(&drm->debugfs->ctrl); + + kfree(drm->debugfs); + drm->debugfs = NULL; +} diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.h b/drivers/gpu/drm/nouveau/nouveau_debugfs.h index 42d65c9d1db7..52c7161297d7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.h +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.h @@ -4,8 +4,23 @@ #include <drm/drmP.h> #if defined(CONFIG_DEBUG_FS) + +#include "nouveau_drm.h" + +struct nouveau_debugfs { + struct nvif_object ctrl; +}; + +static inline struct nouveau_debugfs * +nouveau_debugfs(struct drm_device *dev) +{ + return nouveau_drm(dev)->debugfs; +} + extern int nouveau_drm_debugfs_init(struct drm_minor *); extern void nouveau_drm_debugfs_cleanup(struct drm_minor *); +extern int nouveau_debugfs_init(struct nouveau_drm *); +extern void nouveau_debugfs_fini(struct nouveau_drm *); #else static inline int nouveau_drm_debugfs_init(struct drm_minor *minor) @@ -18,6 +33,17 @@ nouveau_drm_debugfs_cleanup(struct drm_minor *minor) { } +static inline int +nouveau_debugfs_init(struct nouveau_drm *) +{ + return 0; +} + +static inline void +nouveau_debugfs_fini(struct nouveau_drm *) +{ +} + #endif #endif diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index f75111138cf6..7d336a42da02 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -453,6 +453,7 @@ nouveau_drm_load(struct drm_device *dev, unsigned long flags) goto fail_dispinit; } + nouveau_debugfs_init(drm); nouveau_sysfs_init(dev); nouveau_hwmon_init(dev); nouveau_accel_init(drm); @@ -492,6 +493,7 @@ nouveau_drm_unload(struct drm_device *dev) nouveau_accel_fini(drm); nouveau_hwmon_fini(dev); nouveau_sysfs_fini(dev); + nouveau_debugfs_fini(drm); if (dev->mode_config.num_crtc) nouveau_display_fini(dev); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h index a02813e994ec..feecb90e5c3e 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.h +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h @@ -165,6 +165,7 @@ struct nouveau_drm { /* power management */ struct nouveau_hwmon *hwmon; struct nouveau_sysfs *sysfs; + struct nouveau_debugfs *debugfs; /* display power reference */ bool have_disp_power_ref; |