Changeset 59794 in vbox for trunk/src/VBox/Additions/linux/drm
- Timestamp:
- Feb 24, 2016 9:06:26 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/linux/drm/vbox_irq.c
r59634 r59794 62 62 irqreturn_t vbox_irq_handler(int irq, void *arg) 63 63 { 64 65 66 64 struct drm_device *dev = (struct drm_device *) arg; 65 struct vbox_private *vbox = (struct vbox_private *)dev->dev_private; 66 uint32_t host_flags = vbox_get_flags(vbox); 67 67 68 69 68 if (!(host_flags & HGSMIHOSTFLAGS_IRQ)) 69 return IRQ_NONE; 70 70 71 71 /* Due to a bug in the initial host implementation of hot-plug interrupts, … … 76 76 && !(host_flags & HGSMIHOSTFLAGS_VSYNC)) 77 77 schedule_work(&vbox->hotplug_work); 78 79 78 vbox_clear_irq(); 79 return IRQ_HANDLED; 80 80 } 81 81 … … 121 121 static void vbox_hotplug_worker(struct work_struct *work) 122 122 { 123 123 struct vbox_private *vbox = container_of(work, struct vbox_private, 124 124 hotplug_work); 125 125 … … 133 133 int vbox_irq_init(struct vbox_private *vbox) 134 134 { 135 135 int ret; 136 136 137 137 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox)); 138 138 vbox_update_mode_hints(vbox); 139 140 141 142 143 144 145 146 139 ret = drm_irq_install(vbox->dev, vbox->dev->pdev->irq); 140 if (unlikely(ret != 0)) { 141 vbox_irq_fini(vbox); 142 DRM_ERROR("Failed installing irq: %d\n", ret); 143 return 1; 144 } 145 INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker); 146 vbox->isr_installed = true; 147 147 LogFunc(("vboxvideo: %d: vbox=%p\n", __LINE__, vbox)); 148 148 return 0; 149 149 } 150 150
Note:
See TracChangeset
for help on using the changeset viewer.