static void __exit vboxvideo_exit(void) { #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && !defined(DRM_RHEL61) drm_exit(&driver); #else drm_pci_exit(&driver, &pci_driver); #endif }
static void __exit PVRSRVDrmExit(void) { drm_exit(&sPVRDrmDriver); #if defined(PVR_DRI_DRM_NOT_PCI) drm_pvr_dev_remove(); #endif }
static void __exit vboxvideo_exit(void) { printk(KERN_INFO "vboxvideo exiting\n"); #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) drm_exit(&driver); #else drm_pci_exit(&driver, &pci_driver); #endif }
static void __exit PVRSRVDrmExit(void) { #if defined(SUPPORT_DRI_DRM_EXTERNAL) omap_drm_unregister_mapper(pvr_mapper_id); omap_drm_unregister_plugin(&plugin); #else drm_exit(&sPVRDrmDriver); #if defined(PVR_DRI_DRM_NOT_PCI) drm_pvr_dev_remove(); #endif #endif }
static void __exit radeon_exit(void) { drm_exit(driver); }
static void __exit mga_exit(void) { drm_exit(&driver); }
static void __exit sis_exit(void) { drm_exit(&driver); }
static void __exit i915_exit(void) { i915_gem_shrinker_exit(); drm_exit(&driver); }
static void __exit radeon_exit(void) { drm_exit(driver); radeon_unregister_atpx_handler(); }
static void __exit via_chrome9_exit(void) { drm_exit(&driver); }
void mali_drm_exit(void) { drm_exit(&driver); }
static void __exit r128_exit(void) { drm_exit(&driver); }
static void __exit i810_exit(void) { drm_exit(&driver); }
static void __exit mali_exit(void) { platform_device_unregister(pdev); drm_exit(&driver); }
int prepsets(struct drm_rawreq *rawreq, char *buffer) { FILE *fp; int i, j, k, n, fd, nchn, nchan, nset, total; char *fname, *path, **chan; struct drm_names *name; struct drm_datreq *split; static char *fid = "prepsets"; /* We will be splitting requests across channel boundaries which are natural * for the configuration of each NRTS node. Count how many data sets will * result from this split. */ for (total = 0, i = 0; i < rawreq->nset; i++) { nchn = drm_chanlst(rawreq->set + i, &chan, buffer); if (nchn > 0) { rawreq->set[i].nchn = nchn; for (j = 0; j < rawreq->set[i].nchn; j++) { if ((rawreq->set[i].chn[j] = strdup(chan[j])) == NULL) { util_log(1, "%s: strdup: %s", fid, syserrmsg(errno)); drm_exit(DRM_BAD); } } total += split_req(rawreq->set + i, &split, buffer); } else { ++total; } } /* For each data request, do the split and write the request */ name = drm_names(); for (n = 1, i = 0; i < rawreq->nset; i++) { /* Split request */ nset = split_req(rawreq->set + i, &split, buffer); for (j = 0; j < nset; j++) { /* Update finfo parameters to reflect final number of requests */ split[j].nset = total; split[j].finfo.set = n++; /* Create locked queue file */ if ((fname = strdup(drm_mkname(&split[j].finfo))) == NULL){ util_log(1, "%s: fatal error: strdup: %s", fid, syserrmsg(errno) ); drm_exit(DRM_BAD); } sprintf(buffer, "%s/%s", name->dir.queue, fname); if ((path = strdup(buffer)) == NULL) { util_log(1, "%s: fatal error: strdup: %s", fid, syserrmsg(errno) ); drm_exit(DRM_BAD); } if ((fd = open(path, O_CREAT, DRM_LOCKED)) < 0) { util_log(1, "%s: fatal error: %s: %s", fid, path, syserrmsg(errno) ); drm_exit(DRM_BAD); } close(fd); if ((fp = fopen(path, "a")) == NULL) { util_log(1, "%s: fatal error: %s: %s", fid, path, syserrmsg(errno) ); drm_exit(DRM_BAD); } /* Write request in IDADRM format */ drm_wrdatreq(fp, split + j); fclose(fp); /* Unlock the file */ if (chmod(path, DRM_UNLOCKED) != 0) { util_log(1, "%s: fatal error: can't chmod %s: %s", fid, path, syserrmsg(errno) ); drm_exit(DRM_BAD); } util_log(1, "request %s queued", fname); } } return DRM_OK; }
static void __exit i915_exit(void) { drm_exit(&driver); }
static IMG_VOID __exit PVRSRVDrmExit(IMG_VOID) { drm_exit(&sPVRDrmDriver); }
static void __exit tdfx_exit(void) { drm_exit(&driver); }