Skip to content
Snippets Groups Projects
Commit ed89fff9 authored by Christian König's avatar Christian König
Browse files
parent f07069da
No related branches found
No related tags found
No related merge requests found
......@@ -37,66 +37,16 @@
#include "ttm_module.h"
static DECLARE_WAIT_QUEUE_HEAD(exit_q);
static atomic_t device_released;
struct dentry *ttm_debugfs_root;
static struct device_type ttm_drm_class_type = {
.name = "ttm",
/**
* Add pm ops here.
*/
};
static void ttm_drm_class_device_release(struct device *dev)
{
atomic_set(&device_released, 1);
wake_up_all(&exit_q);
}
static struct device ttm_drm_class_device = {
.type = &ttm_drm_class_type,
.release = &ttm_drm_class_device_release
};
struct kobject *ttm_get_kobj(void)
{
struct kobject *kobj = &ttm_drm_class_device.kobj;
BUG_ON(kobj == NULL);
return kobj;
}
static int __init ttm_init(void)
{
int ret;
ret = dev_set_name(&ttm_drm_class_device, "ttm");
if (unlikely(ret != 0))
return ret;
atomic_set(&device_released, 0);
ret = drm_class_device_register(&ttm_drm_class_device);
if (unlikely(ret != 0))
goto out_no_dev_reg;
ttm_debugfs_root = debugfs_create_dir("ttm", NULL);
return 0;
out_no_dev_reg:
atomic_set(&device_released, 1);
wake_up_all(&exit_q);
return ret;
}
static void __exit ttm_exit(void)
{
drm_class_device_unregister(&ttm_drm_class_device);
/**
* Refuse to unload until the TTM device is released.
* Not sure this is 100% needed.
*/
wait_event(exit_q, atomic_read(&device_released) == 1);
debugfs_remove(ttm_debugfs_root);
}
......
......@@ -33,10 +33,8 @@
#define TTM_PFX "[TTM] "
struct kobject;
struct dentry;
extern struct kobject *ttm_get_kobj(void);
extern struct dentry *ttm_debugfs_root;
#endif /* _TTM_MODULE_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment