Changeset 47388 in vbox
- Timestamp:
- Jul 25, 2013 12:12:10 PM (12 years ago)
- Location:
- trunk/src/VBox/Additions/linux/drm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/linux/drm/vboxvideo.h
r45356 r47388 53 53 resource_size_t aper_size; 54 54 resource_size_t aper_base; 55 char __iomem *vram; 55 56 u32 vram_size; 56 57 }; -
trunk/src/VBox/Additions/linux/drm/vboxvideo_device.c
r44529 r47388 53 53 #include <VBox/VBoxVideoGuest.h> 54 54 55 static int vboxvideo_vram_init(struct vboxvideo_device *gdev) 56 { 57 /* work out accessible VRAM */ 58 gdev->mc.aper_base = pci_resource_start(gdev->ddev->pdev, 1); 59 gdev->mc.aper_size = pci_resource_len(gdev->ddev->pdev, 1); 60 61 gdev->mc.vram = ioremap(gdev->mc.aper_base, gdev->mc.aper_size); 62 if (!gdev->mc.vram) { 63 VBOXVIDEO_ERROR("Unable to ioremap %lu MB of VRAM. Bailing out.\n", (unsigned long)gdev->mc.aper_size / MB); 64 return -1; 65 } 66 gdev->fAnyX = VBoxVideoAnyWidthAllowed(); 67 gdev->mc.vram_size = VBoxVideoGetVRAMSize(); 68 69 return 0; 70 } 71 72 static void vboxvideo_vram_fini(struct vboxvideo_device *gdev) 73 { 74 iounmap(gdev->mc.vram); 75 gdev->mc.vram = NULL; 76 } 77 55 78 int vboxvideo_device_init(struct vboxvideo_device *gdev, 56 79 struct drm_device *ddev, … … 58 81 uint32_t flags) 59 82 { 83 int ret; 84 60 85 gdev->dev = &pdev->dev; 61 86 gdev->ddev = ddev; … … 67 92 * stuff. 68 93 */ 69 gdev->fAnyX = VBoxVideoAnyWidthAllowed(); 70 gdev->mc.vram_size = VBoxVideoGetVRAMSize(); 94 ret = vboxvideo_vram_init(gdev); 95 if (ret) 96 return ret; 71 97 72 98 return 0; … … 75 101 void vboxvideo_device_fini(struct vboxvideo_device *gdev) 76 102 { 77 103 vboxvideo_vram_fini(gdev); 78 104 } 79 105 #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) */ -
trunk/src/VBox/Additions/linux/drm/vboxvideo_drv.c
r47341 r47388 59 59 #include "vboxvideo_drv.h" 60 60 61 #ifndef __devinit 62 #define __devinit 63 #define __devinitdata 64 #endif 65 66 static struct drm_driver driver; 67 61 68 static struct pci_device_id pciidlist[] = { 62 69 vboxvideo_PCI_IDS … … 64 71 65 72 MODULE_DEVICE_TABLE(pci, pciidlist); 73 74 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) 75 # define drm_get_dev drm_get_pci_dev 76 #endif 77 78 static int __devinit 79 vboxvideo_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 80 { 81 return drm_get_dev(pdev, ent, &driver); 82 } 83 84 static void 85 vboxvideo_pci_remove(struct pci_dev *pdev) 86 { 87 struct drm_device *dev = pci_get_drvdata(pdev); 88 89 drm_put_dev(dev); 90 } 66 91 67 92 #if defined(DRM_UNLOCKED) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) … … 89 114 #endif 90 115 116 #define PCI_DRIVER \ 117 { \ 118 .name = DRIVER_NAME, \ 119 .id_table = pciidlist, \ 120 .probe = vboxvideo_pci_probe, \ 121 .remove = vboxvideo_pci_remove, \ 122 } 123 124 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) 125 static struct pci_driver pci_driver = PCI_DRIVER; 126 #endif 127 91 128 static struct drm_driver driver = 92 129 { 93 .driver_features = 0,130 .driver_features = DRIVER_MODESET, 94 131 .load = vboxvideo_driver_load, 95 132 .unload = vboxvideo_driver_unload, … … 107 144 #endif 108 145 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) 109 .pci_driver = 110 { 111 .name = DRIVER_NAME, 112 .id_table = pciidlist, 113 }, 146 .pci_driver = PCI_DRIVER, 114 147 #endif 115 148 .name = DRIVER_NAME, … … 120 153 .patchlevel = DRIVER_PATCHLEVEL, 121 154 }; 122 123 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)124 static struct pci_driver pci_driver =125 {126 .name = DRIVER_NAME,127 .id_table = pciidlist,128 };129 #endif130 155 131 156 static int __init vboxvideo_init(void) -
trunk/src/VBox/Additions/linux/drm/vboxvideo_drv.h
r44529 r47388 66 66 #define VBOXVIDEO_ERROR(fmt, arg...) DRM_ERROR(DRIVER_NAME ": " fmt, ##arg) 67 67 68 #define MB (1024 * 1024) 69 68 70 /** @todo does this make sense? What exactly is this connector? */ 69 71 #define VBOXVIDEOFB_CONN_LIMIT VBOX_VIDEO_MAX_SCREENS
Note:
See TracChangeset
for help on using the changeset viewer.