0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #include <drm/drm_device.h>
0037 #include <drm/drm_drv.h>
0038 #include <drm/drm_print.h>
0039
0040 #include "drm_internal.h"
0041 #include "drm_legacy.h"
0042
0043 void drm_legacy_init_members(struct drm_device *dev)
0044 {
0045 INIT_LIST_HEAD(&dev->ctxlist);
0046 INIT_LIST_HEAD(&dev->vmalist);
0047 INIT_LIST_HEAD(&dev->maplist);
0048 spin_lock_init(&dev->buf_lock);
0049 mutex_init(&dev->ctxlist_mutex);
0050 }
0051
0052 void drm_legacy_destroy_members(struct drm_device *dev)
0053 {
0054 mutex_destroy(&dev->ctxlist_mutex);
0055 }
0056
0057 int drm_legacy_setup(struct drm_device * dev)
0058 {
0059 int ret;
0060
0061 if (dev->driver->firstopen &&
0062 drm_core_check_feature(dev, DRIVER_LEGACY)) {
0063 ret = dev->driver->firstopen(dev);
0064 if (ret != 0)
0065 return ret;
0066 }
0067
0068 ret = drm_legacy_dma_setup(dev);
0069 if (ret < 0)
0070 return ret;
0071
0072
0073 DRM_DEBUG("\n");
0074 return 0;
0075 }
0076
0077 void drm_legacy_dev_reinit(struct drm_device *dev)
0078 {
0079 if (dev->irq_enabled)
0080 drm_legacy_irq_uninstall(dev);
0081
0082 mutex_lock(&dev->struct_mutex);
0083
0084 drm_legacy_agp_clear(dev);
0085
0086 drm_legacy_sg_cleanup(dev);
0087 drm_legacy_vma_flush(dev);
0088 drm_legacy_dma_takedown(dev);
0089
0090 mutex_unlock(&dev->struct_mutex);
0091
0092 dev->sigdata.lock = NULL;
0093
0094 dev->context_flag = 0;
0095 dev->last_context = 0;
0096 dev->if_version = 0;
0097
0098 DRM_DEBUG("lastclose completed\n");
0099 }
0100
0101 void drm_master_legacy_init(struct drm_master *master)
0102 {
0103 spin_lock_init(&master->lock.spinlock);
0104 init_waitqueue_head(&master->lock.lock_queue);
0105 }