Skip to content

Commit

Permalink
drm/ttm: Add a virtual ttm sysfs device.
Browse files Browse the repository at this point in the history
The device directory will be the base directory of the
sysfs representation of other ttm subsystems.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
  • Loading branch information
Thomas Hellstrom authored and Dave Airlie committed Aug 19, 2009
1 parent 327c225 commit e9840be
Showing 1 changed file with 57 additions and 1 deletion.
58 changes: 57 additions & 1 deletion drivers/gpu/drm/ttm/ttm_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,72 @@
* Jerome Glisse
*/
#include <linux/module.h>
#include <ttm/ttm_module.h>
#include <linux/device.h>
#include <linux/sched.h>
#include "ttm/ttm_module.h"
#include "drm_sysfs.h"

static DECLARE_WAIT_QUEUE_HEAD(exit_q);
atomic_t device_released;

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;

ttm_global_init();

atomic_set(&device_released, 0);
ret = drm_class_device_register(&ttm_drm_class_device);
if (unlikely(ret != 0))
goto out_no_dev_reg;

return 0;
out_no_dev_reg:
atomic_set(&device_released, 1);
wake_up_all(&exit_q);
ttm_global_release();
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);
ttm_global_release();
}

Expand Down

0 comments on commit e9840be

Please sign in to comment.