aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_drv.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/gpu/drm/drm_drv.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/gpu/drm/drm_drv.c')
-rw-r--r--drivers/gpu/drm/drm_drv.c62
1 files changed, 10 insertions, 52 deletions
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 84da748555bc..93a112d45c1a 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -67,6 +67,7 @@ static struct drm_ioctl_desc drm_ioctls[] = {
67 DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_getmap, 0), 67 DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_getmap, 0),
68 DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, 0), 68 DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, 0),
69 DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, 0), 69 DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, 0),
70 DRM_IOCTL_DEF(DRM_IOCTL_GET_CAP, drm_getcap, 0),
70 DRM_IOCTL_DEF(DRM_IOCTL_SET_VERSION, drm_setversion, DRM_MASTER), 71 DRM_IOCTL_DEF(DRM_IOCTL_SET_VERSION, drm_setversion, DRM_MASTER),
71 72
72 DRM_IOCTL_DEF(DRM_IOCTL_SET_UNIQUE, drm_setunique, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 73 DRM_IOCTL_DEF(DRM_IOCTL_SET_UNIQUE, drm_setunique, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
@@ -91,8 +92,8 @@ static struct drm_ioctl_desc drm_ioctls[] = {
91 DRM_IOCTL_DEF(DRM_IOCTL_NEW_CTX, drm_newctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 92 DRM_IOCTL_DEF(DRM_IOCTL_NEW_CTX, drm_newctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
92 DRM_IOCTL_DEF(DRM_IOCTL_RES_CTX, drm_resctx, DRM_AUTH), 93 DRM_IOCTL_DEF(DRM_IOCTL_RES_CTX, drm_resctx, DRM_AUTH),
93 94
94 DRM_IOCTL_DEF(DRM_IOCTL_ADD_DRAW, drm_adddraw, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 95 DRM_IOCTL_DEF(DRM_IOCTL_ADD_DRAW, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
95 DRM_IOCTL_DEF(DRM_IOCTL_RM_DRAW, drm_rmdraw, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 96 DRM_IOCTL_DEF(DRM_IOCTL_RM_DRAW, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
96 97
97 DRM_IOCTL_DEF(DRM_IOCTL_LOCK, drm_lock, DRM_AUTH), 98 DRM_IOCTL_DEF(DRM_IOCTL_LOCK, drm_lock, DRM_AUTH),
98 DRM_IOCTL_DEF(DRM_IOCTL_UNLOCK, drm_unlock, DRM_AUTH), 99 DRM_IOCTL_DEF(DRM_IOCTL_UNLOCK, drm_unlock, DRM_AUTH),
@@ -127,7 +128,7 @@ static struct drm_ioctl_desc drm_ioctls[] = {
127 128
128 DRM_IOCTL_DEF(DRM_IOCTL_MODESET_CTL, drm_modeset_ctl, 0), 129 DRM_IOCTL_DEF(DRM_IOCTL_MODESET_CTL, drm_modeset_ctl, 0),
129 130
130 DRM_IOCTL_DEF(DRM_IOCTL_UPDATE_DRAW, drm_update_drawable_info, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 131 DRM_IOCTL_DEF(DRM_IOCTL_UPDATE_DRAW, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
131 132
132 DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, DRM_UNLOCKED), 133 DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, DRM_UNLOCKED),
133 DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH|DRM_UNLOCKED), 134 DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH|DRM_UNLOCKED),
@@ -150,7 +151,10 @@ static struct drm_ioctl_desc drm_ioctls[] = {
150 DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, drm_mode_addfb, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 151 DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, drm_mode_addfb, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
151 DRM_IOCTL_DEF(DRM_IOCTL_MODE_RMFB, drm_mode_rmfb, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 152 DRM_IOCTL_DEF(DRM_IOCTL_MODE_RMFB, drm_mode_rmfb, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
152 DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 153 DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
153 DRM_IOCTL_DEF(DRM_IOCTL_MODE_DIRTYFB, drm_mode_dirtyfb_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED) 154 DRM_IOCTL_DEF(DRM_IOCTL_MODE_DIRTYFB, drm_mode_dirtyfb_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
155 DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
156 DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
157 DRM_IOCTL_DEF(DRM_IOCTL_MODE_DESTROY_DUMB, drm_mode_destroy_dumb_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED)
154}; 158};
155 159
156#define DRM_CORE_IOCTL_COUNT ARRAY_SIZE( drm_ioctls ) 160#define DRM_CORE_IOCTL_COUNT ARRAY_SIZE( drm_ioctls )
@@ -180,10 +184,6 @@ int drm_lastclose(struct drm_device * dev)
180 184
181 mutex_lock(&dev->struct_mutex); 185 mutex_lock(&dev->struct_mutex);
182 186
183 /* Free drawable information memory */
184 drm_drawable_free_all(dev);
185 del_timer(&dev->timer);
186
187 /* Clear AGP information */ 187 /* Clear AGP information */
188 if (drm_core_has_AGP(dev) && dev->agp && 188 if (drm_core_has_AGP(dev) && dev->agp &&
189 !drm_core_check_feature(dev, DRIVER_MODESET)) { 189 !drm_core_check_feature(dev, DRIVER_MODESET)) {
@@ -238,53 +238,11 @@ int drm_lastclose(struct drm_device * dev)
238 return 0; 238 return 0;
239} 239}
240 240
241/**
242 * Module initialization. Called via init_module at module load time, or via
243 * linux/init/main.c (this is not currently supported).
244 *
245 * \return zero on success or a negative number on failure.
246 *
247 * Initializes an array of drm_device structures, and attempts to
248 * initialize all available devices, using consecutive minors, registering the
249 * stubs and initializing the device.
250 *
251 * Expands the \c DRIVER_PREINIT and \c DRIVER_POST_INIT macros before and
252 * after the initialization for driver customization.
253 */
254int drm_init(struct drm_driver *driver)
255{
256 DRM_DEBUG("\n");
257 INIT_LIST_HEAD(&driver->device_list);
258
259 if (driver->driver_features & DRIVER_USE_PLATFORM_DEVICE)
260 return drm_platform_init(driver);
261 else
262 return drm_pci_init(driver);
263}
264
265EXPORT_SYMBOL(drm_init);
266
267void drm_exit(struct drm_driver *driver)
268{
269 struct drm_device *dev, *tmp;
270 DRM_DEBUG("\n");
271
272 if (driver->driver_features & DRIVER_MODESET) {
273 pci_unregister_driver(&driver->pci_driver);
274 } else {
275 list_for_each_entry_safe(dev, tmp, &driver->device_list, driver_item)
276 drm_put_dev(dev);
277 }
278
279 DRM_INFO("Module unloaded\n");
280}
281
282EXPORT_SYMBOL(drm_exit);
283
284/** File operations structure */ 241/** File operations structure */
285static const struct file_operations drm_stub_fops = { 242static const struct file_operations drm_stub_fops = {
286 .owner = THIS_MODULE, 243 .owner = THIS_MODULE,
287 .open = drm_stub_open 244 .open = drm_stub_open,
245 .llseek = noop_llseek,
288}; 246};
289 247
290static int __init drm_core_init(void) 248static int __init drm_core_init(void)