Lines Matching refs:dev

159 static struct drm_minor **drm_minor_get_slot(struct drm_device *dev,  in drm_minor_get_slot()  argument
164 return &dev->primary; in drm_minor_get_slot()
166 return &dev->render; in drm_minor_get_slot()
168 return &dev->accel; in drm_minor_get_slot()
174 static void drm_minor_alloc_release(struct drm_device *dev, void *data) in drm_minor_alloc_release() argument
178 WARN_ON(dev != minor->dev); in drm_minor_alloc_release()
201 static int drm_minor_alloc(struct drm_device *dev, enum drm_minor_type type) in drm_minor_alloc() argument
206 minor = drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL); in drm_minor_alloc()
211 minor->dev = dev; in drm_minor_alloc()
221 r = drmm_add_action_or_reset(dev, drm_minor_alloc_release, minor); in drm_minor_alloc()
231 *drm_minor_get_slot(dev, type) = minor; in drm_minor_alloc()
235 static int drm_minor_register(struct drm_device *dev, enum drm_minor_type type) in drm_minor_register() argument
243 minor = *drm_minor_get_slot(dev, type); in drm_minor_register()
280 static void drm_minor_unregister(struct drm_device *dev, enum drm_minor_type type) in drm_minor_unregister() argument
284 minor = *drm_minor_get_slot(dev, type); in drm_minor_unregister()
318 drm_dev_get(minor->dev); in drm_minor_acquire()
323 } else if (drm_dev_is_unplugged(minor->dev)) { in drm_minor_acquire()
324 drm_dev_put(minor->dev); in drm_minor_acquire()
333 drm_dev_put(minor->dev); in drm_minor_release()
495 void drm_put_dev(struct drm_device *dev) in drm_put_dev() argument
499 if (!dev) { in drm_put_dev()
504 drm_dev_unregister(dev); in drm_put_dev()
505 drm_dev_put(dev); in drm_put_dev()
521 bool drm_dev_enter(struct drm_device *dev, int *idx) in drm_dev_enter() argument
526 if (dev->unplugged) { in drm_dev_enter()
561 void drm_dev_unplug(struct drm_device *dev) in drm_dev_unplug() argument
571 dev->unplugged = true; in drm_dev_unplug()
574 drm_dev_unregister(dev); in drm_dev_unplug()
577 unmap_mapping_range(dev->anon_inode->i_mapping, 0, 0, 1); in drm_dev_unplug()
669 static void drm_dev_init_release(struct drm_device *dev, void *res) in drm_dev_init_release() argument
672 drm_fs_inode_free(dev->anon_inode); in drm_dev_init_release()
674 put_device(dev->dev); in drm_dev_init_release()
678 dev->dev = NULL; in drm_dev_init_release()
679 mutex_destroy(&dev->master_mutex); in drm_dev_init_release()
680 mutex_destroy(&dev->clientlist_mutex); in drm_dev_init_release()
681 mutex_destroy(&dev->filelist_mutex); in drm_dev_init_release()
682 mutex_destroy(&dev->struct_mutex); in drm_dev_init_release()
687 static int drm_dev_init(struct drm_device *dev, in drm_dev_init() argument
702 kref_init(&dev->ref); in drm_dev_init()
703 dev->dev = get_device(parent); in drm_dev_init()
704 dev->driver = driver; in drm_dev_init()
706 INIT_LIST_HEAD(&dev->managed.resources); in drm_dev_init()
707 spin_lock_init(&dev->managed.lock); in drm_dev_init()
710 dev->driver_features = ~0u; in drm_dev_init()
712 if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL) && in drm_dev_init()
713 (drm_core_check_feature(dev, DRIVER_RENDER) || in drm_dev_init()
714 drm_core_check_feature(dev, DRIVER_MODESET))) { in drm_dev_init()
719 INIT_LIST_HEAD(&dev->filelist); in drm_dev_init()
720 INIT_LIST_HEAD(&dev->filelist_internal); in drm_dev_init()
721 INIT_LIST_HEAD(&dev->clientlist); in drm_dev_init()
722 INIT_LIST_HEAD(&dev->vblank_event_list); in drm_dev_init()
724 spin_lock_init(&dev->event_lock); in drm_dev_init()
725 mutex_init(&dev->struct_mutex); in drm_dev_init()
726 mutex_init(&dev->filelist_mutex); in drm_dev_init()
727 mutex_init(&dev->clientlist_mutex); in drm_dev_init()
728 mutex_init(&dev->master_mutex); in drm_dev_init()
729 raw_spin_lock_init(&dev->mode_config.panic_lock); in drm_dev_init()
731 ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL); in drm_dev_init()
742 dev->anon_inode = inode; in drm_dev_init()
744 if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) { in drm_dev_init()
745 ret = drm_minor_alloc(dev, DRM_MINOR_ACCEL); in drm_dev_init()
749 if (drm_core_check_feature(dev, DRIVER_RENDER)) { in drm_dev_init()
750 ret = drm_minor_alloc(dev, DRM_MINOR_RENDER); in drm_dev_init()
755 ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY); in drm_dev_init()
760 if (drm_core_check_feature(dev, DRIVER_GEM)) { in drm_dev_init()
761 ret = drm_gem_init(dev); in drm_dev_init()
768 dev->unique = drmm_kstrdup(dev, dev_name(parent), GFP_KERNEL); in drm_dev_init()
769 if (!dev->unique) { in drm_dev_init()
774 if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) in drm_dev_init()
775 accel_debugfs_init(dev); in drm_dev_init()
777 drm_debugfs_dev_init(dev, drm_debugfs_root); in drm_dev_init()
782 drm_managed_release(dev); in drm_dev_init()
793 struct drm_device *dev, in devm_drm_dev_init() argument
798 ret = drm_dev_init(dev, driver, parent); in devm_drm_dev_init()
803 devm_drm_dev_init_release, dev); in devm_drm_dev_init()
853 struct drm_device *dev; in drm_dev_alloc() local
856 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in drm_dev_alloc()
857 if (!dev) in drm_dev_alloc()
860 ret = drm_dev_init(dev, driver, parent); in drm_dev_alloc()
862 kfree(dev); in drm_dev_alloc()
866 drmm_add_final_kfree(dev, dev); in drm_dev_alloc()
868 return dev; in drm_dev_alloc()
876 struct drm_device *dev = container_of(ref, struct drm_device, ref); in drm_dev_release() local
879 drm_debugfs_dev_fini(dev); in drm_dev_release()
881 if (dev->driver->release) in drm_dev_release()
882 dev->driver->release(dev); in drm_dev_release()
884 drm_managed_release(dev); in drm_dev_release()
886 kfree(dev->managed.final_kfree); in drm_dev_release()
901 void drm_dev_get(struct drm_device *dev) in drm_dev_get() argument
903 if (dev) in drm_dev_get()
904 kref_get(&dev->ref); in drm_dev_get()
915 void drm_dev_put(struct drm_device *dev) in drm_dev_put() argument
917 if (dev) in drm_dev_put()
918 kref_put(&dev->ref, drm_dev_release); in drm_dev_put()
922 static int create_compat_control_link(struct drm_device *dev) in create_compat_control_link() argument
928 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in create_compat_control_link()
931 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in create_compat_control_link()
957 static void remove_compat_control_link(struct drm_device *dev) in remove_compat_control_link() argument
962 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in remove_compat_control_link()
965 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in remove_compat_control_link()
998 int drm_dev_register(struct drm_device *dev, unsigned long flags) in drm_dev_register() argument
1000 const struct drm_driver *driver = dev->driver; in drm_dev_register()
1004 drm_mode_config_validate(dev); in drm_dev_register()
1006 WARN_ON(!dev->managed.final_kfree); in drm_dev_register()
1008 if (drm_dev_needs_global_mutex(dev)) in drm_dev_register()
1011 if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) in drm_dev_register()
1012 accel_debugfs_register(dev); in drm_dev_register()
1014 drm_debugfs_dev_register(dev); in drm_dev_register()
1016 ret = drm_minor_register(dev, DRM_MINOR_RENDER); in drm_dev_register()
1020 ret = drm_minor_register(dev, DRM_MINOR_PRIMARY); in drm_dev_register()
1024 ret = drm_minor_register(dev, DRM_MINOR_ACCEL); in drm_dev_register()
1028 ret = create_compat_control_link(dev); in drm_dev_register()
1032 dev->registered = true; in drm_dev_register()
1035 ret = driver->load(dev, flags); in drm_dev_register()
1040 if (drm_core_check_feature(dev, DRIVER_MODESET)) { in drm_dev_register()
1041 ret = drm_modeset_register_all(dev); in drm_dev_register()
1045 drm_panic_register(dev); in drm_dev_register()
1050 dev->dev ? dev_name(dev->dev) : "virtual device", in drm_dev_register()
1051 dev->primary ? dev->primary->index : dev->accel->index); in drm_dev_register()
1056 if (dev->driver->unload) in drm_dev_register()
1057 dev->driver->unload(dev); in drm_dev_register()
1059 remove_compat_control_link(dev); in drm_dev_register()
1060 drm_minor_unregister(dev, DRM_MINOR_ACCEL); in drm_dev_register()
1061 drm_minor_unregister(dev, DRM_MINOR_PRIMARY); in drm_dev_register()
1062 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_register()
1064 if (drm_dev_needs_global_mutex(dev)) in drm_dev_register()
1086 void drm_dev_unregister(struct drm_device *dev) in drm_dev_unregister() argument
1088 dev->registered = false; in drm_dev_unregister()
1090 drm_panic_unregister(dev); in drm_dev_unregister()
1092 drm_client_dev_unregister(dev); in drm_dev_unregister()
1094 if (drm_core_check_feature(dev, DRIVER_MODESET)) in drm_dev_unregister()
1095 drm_modeset_unregister_all(dev); in drm_dev_unregister()
1097 if (dev->driver->unload) in drm_dev_unregister()
1098 dev->driver->unload(dev); in drm_dev_unregister()
1100 remove_compat_control_link(dev); in drm_dev_unregister()
1101 drm_minor_unregister(dev, DRM_MINOR_ACCEL); in drm_dev_unregister()
1102 drm_minor_unregister(dev, DRM_MINOR_PRIMARY); in drm_dev_unregister()
1103 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_unregister()
1104 drm_debugfs_dev_fini(dev); in drm_dev_unregister()
1141 new_fops = fops_get(minor->dev->driver->fops); in drm_stub_open()
1227 void drm_lastclose(struct drm_device *dev);
1231 bus_dma_tag_t dmat, struct device *dev, struct drm_device *drm) in drm_attach_platform() argument
1241 arg.busid = dev->dv_xname; in drm_attach_platform()
1242 arg.busid_len = strlen(dev->dv_xname) + 1; in drm_attach_platform()
1243 config_found_sm(dev, &arg, drmprint, drmsubmatch); in drm_attach_platform()
1248 int is_agp, int primary, struct device *dev, struct drm_device *drm) in drm_attach_pci() argument
1264 printf("%s: no memory for drm\n", dev->dv_xname); in drm_attach_pci()
1270 sc = (struct drm_softc *)config_found_sm(dev, &arg, drmprint, drmsubmatch); in drm_attach_pci()
1339 struct drm_device *dev = da->drm; in drm_attach() local
1349 if (dev == NULL) { in drm_attach()
1350 dev = malloc(sizeof(struct drm_device), M_DRM, in drm_attach()
1355 sc->sc_drm = dev; in drm_attach()
1357 kref_init(&dev->ref); in drm_attach()
1358 dev->dev = self; in drm_attach()
1359 dev->dev_private = parent; in drm_attach()
1360 dev->driver = da->driver; in drm_attach()
1362 INIT_LIST_HEAD(&dev->managed.resources); in drm_attach()
1363 mtx_init(&dev->managed.lock, IPL_TTY); in drm_attach()
1366 dev->driver_features = ~0u; in drm_attach()
1368 dev->dmat = da->dmat; in drm_attach()
1369 dev->bst = da->bst; in drm_attach()
1370 dev->unique = da->busid; in drm_attach()
1379 dev->pdev = &dev->_pdev; in drm_attach()
1380 dev->pdev->vendor = PCI_VENDOR(pa->pa_id); in drm_attach()
1381 dev->pdev->device = PCI_PRODUCT(pa->pa_id); in drm_attach()
1382 dev->pdev->subsystem_vendor = PCI_VENDOR(subsys); in drm_attach()
1383 dev->pdev->subsystem_device = PCI_PRODUCT(subsys); in drm_attach()
1384 dev->pdev->revision = PCI_REVISION(pa->pa_class); in drm_attach()
1385 dev->pdev->class = (PCI_CLASS(pa->pa_class) << 16) | in drm_attach()
1389 dev->pdev->devfn = PCI_DEVFN(pa->pa_device, pa->pa_function); in drm_attach()
1390 dev->pdev->bus = &dev->pdev->_bus; in drm_attach()
1391 dev->pdev->bus->pc = pa->pa_pc; in drm_attach()
1392 dev->pdev->bus->number = pa->pa_bus; in drm_attach()
1393 dev->pdev->bus->domain_nr = pa->pa_domain; in drm_attach()
1394 dev->pdev->bus->bridgetag = pa->pa_bridgetag; in drm_attach()
1397 dev->pdev->bus->self = malloc(sizeof(struct pci_dev), in drm_attach()
1399 dev->pdev->bus->self->pc = pa->pa_pc; in drm_attach()
1400 dev->pdev->bus->self->tag = *pa->pa_bridgetag; in drm_attach()
1403 dev->pdev->pc = pa->pa_pc; in drm_attach()
1404 dev->pdev->tag = pa->pa_tag; in drm_attach()
1405 dev->pdev->pci = (struct pci_softc *)parent->dv_parent; in drm_attach()
1406 dev->pdev->_dev = parent; in drm_attach()
1409 dev->pdev->dev.node = acpi_find_pci(pa->pa_pc, pa->pa_tag); in drm_attach()
1410 aml_register_notify(dev->pdev->dev.node, NULL, in drm_attach()
1415 mtx_init(&dev->quiesce_mtx, IPL_NONE); in drm_attach()
1416 mtx_init(&dev->event_lock, IPL_TTY); in drm_attach()
1417 rw_init(&dev->struct_mutex, "drmdevlk"); in drm_attach()
1418 rw_init(&dev->filelist_mutex, "drmflist"); in drm_attach()
1419 rw_init(&dev->clientlist_mutex, "drmclist"); in drm_attach()
1420 rw_init(&dev->master_mutex, "drmmast"); in drm_attach()
1422 ret = drmm_add_action(dev, drm_dev_init_release, NULL); in drm_attach()
1426 SPLAY_INIT(&dev->files); in drm_attach()
1427 INIT_LIST_HEAD(&dev->filelist_internal); in drm_attach()
1428 INIT_LIST_HEAD(&dev->clientlist); in drm_attach()
1429 INIT_LIST_HEAD(&dev->vblank_event_list); in drm_attach()
1431 if (drm_core_check_feature(dev, DRIVER_RENDER)) { in drm_attach()
1432 ret = drm_minor_alloc(dev, DRM_MINOR_RENDER); in drm_attach()
1437 ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY); in drm_attach()
1442 if (drm_core_check_feature(dev, DRIVER_USE_AGP)) { in drm_attach()
1445 dev->agp = drm_agp_init(); in drm_attach()
1447 if (dev->agp != NULL) { in drm_attach()
1448 if (drm_mtrr_add(dev->agp->info.ai_aperture_base, in drm_attach()
1449 dev->agp->info.ai_aperture_size, DRM_MTRR_WC) == 0) in drm_attach()
1450 dev->agp->mtrr = 1; in drm_attach()
1455 if (dev->driver->gem_size > 0) { in drm_attach()
1456 KASSERT(dev->driver->gem_size >= sizeof(struct drm_gem_object)); in drm_attach()
1458 pool_init(&dev->objpl, dev->driver->gem_size, 0, IPL_NONE, 0, in drm_attach()
1462 if (drm_core_check_feature(dev, DRIVER_GEM)) { in drm_attach()
1463 ret = drm_gem_init(dev); in drm_attach()
1470 drmm_add_final_kfree(dev, dev); in drm_attach()
1476 drm_managed_release(dev); in drm_attach()
1477 dev->dev_private = NULL; in drm_attach()
1484 struct drm_device *dev = sc->sc_drm; in drm_detach() local
1493 drm_lastclose(dev); in drm_detach()
1495 if (drm_core_check_feature(dev, DRIVER_GEM)) { in drm_detach()
1496 if (dev->driver->gem_size > 0) in drm_detach()
1497 pool_destroy(&dev->objpl); in drm_detach()
1501 if (dev->agp && dev->agp->mtrr) { in drm_detach()
1504 retcode = drm_mtrr_del(0, dev->agp->info.ai_aperture_base, in drm_detach()
1505 dev->agp->info.ai_aperture_size, DRM_MTRR_WC); in drm_detach()
1509 free(dev->agp, M_DRM, 0); in drm_detach()
1511 if (dev->pdev && dev->pdev->bus) in drm_detach()
1512 free(dev->pdev->bus->self, M_DRM, sizeof(struct pci_dev)); in drm_detach()
1515 free(dev, M_DRM, sizeof(struct drm_device)); in drm_detach()
1521 drm_quiesce(struct drm_device *dev) in drm_quiesce() argument
1523 mtx_enter(&dev->quiesce_mtx); in drm_quiesce()
1524 dev->quiesce = 1; in drm_quiesce()
1525 while (dev->quiesce_count > 0) { in drm_quiesce()
1526 msleep_nsec(&dev->quiesce_count, &dev->quiesce_mtx, in drm_quiesce()
1529 mtx_leave(&dev->quiesce_mtx); in drm_quiesce()
1533 drm_wakeup(struct drm_device *dev) in drm_wakeup() argument
1535 mtx_enter(&dev->quiesce_mtx); in drm_wakeup()
1536 dev->quiesce = 0; in drm_wakeup()
1537 wakeup(&dev->quiesce); in drm_wakeup()
1538 mtx_leave(&dev->quiesce_mtx); in drm_wakeup()
1545 struct drm_device *dev = sc->sc_drm; in drm_activate() local
1563 drm_quiesce(dev); in drm_activate()
1566 drm_wakeup(dev); in drm_activate()
1608 drm_find_file_by_minor(struct drm_device *dev, int minor) in drm_find_file_by_minor() argument
1613 return (SPLAY_FIND(drm_file_tree, &dev->files, &key)); in drm_find_file_by_minor()
1637 struct drm_device *dev = kn->kn_hook; in filt_drmdetach() local
1641 klist_remove_locked(&dev->note, kn); in filt_drmdetach()
1671 mtx_enter(&file_priv->minor->dev->event_lock); in filt_drmread()
1674 mtx_leave(&file_priv->minor->dev->event_lock); in filt_drmread()
1695 struct drm_device *dev = NULL; in drmkqfilter() local
1699 dev = drm_get_device_from_kdev(kdev); in drmkqfilter()
1700 if (dev == NULL || dev->dev_private == NULL) in drmkqfilter()
1705 mutex_lock(&dev->struct_mutex); in drmkqfilter()
1706 file_priv = drm_find_file_by_minor(dev, minor(kdev)); in drmkqfilter()
1707 mutex_unlock(&dev->struct_mutex); in drmkqfilter()
1720 kn->kn_hook = dev; in drmkqfilter()
1723 klist_insert_locked(&dev->note, kn); in drmkqfilter()
1736 struct drm_device *dev = NULL; in drmopen() local
1742 dev = drm_get_device_from_kdev(kdev); in drmopen()
1743 if (dev == NULL || dev->dev_private == NULL) in drmopen()
1746 DRM_DEBUG("open_count = %d\n", atomic_read(&dev->open_count)); in drmopen()
1751 if (drm_dev_needs_global_mutex(dev)) in drmopen()
1754 atomic_fetch_inc(&dev->open_count); in drmopen()
1767 dm = *drm_minor_get_slot(dev, minor_type); in drmopen()
1790 mutex_lock(&dev->filelist_mutex); in drmopen()
1791 SPLAY_INSERT(drm_file_tree, &dev->files, file_priv); in drmopen()
1792 mutex_unlock(&dev->filelist_mutex); in drmopen()
1794 if (drm_dev_needs_global_mutex(dev)) in drmopen()
1802 atomic_dec(&dev->open_count); in drmopen()
1803 if (drm_dev_needs_global_mutex(dev)) in drmopen()
1811 struct drm_device *dev = drm_get_device_from_kdev(kdev); in drmclose() local
1815 if (dev == NULL) in drmclose()
1818 if (drm_dev_needs_global_mutex(dev)) in drmclose()
1821 DRM_DEBUG("open_count = %d\n", atomic_read(&dev->open_count)); in drmclose()
1823 mutex_lock(&dev->filelist_mutex); in drmclose()
1824 file_priv = drm_find_file_by_minor(dev, minor(kdev)); in drmclose()
1828 mutex_unlock(&dev->filelist_mutex); in drmclose()
1832 SPLAY_REMOVE(drm_file_tree, &dev->files, file_priv); in drmclose()
1833 mutex_unlock(&dev->filelist_mutex); in drmclose()
1836 if (atomic_dec_and_test(&dev->open_count)) in drmclose()
1837 drm_lastclose(dev); in drmclose()
1839 if (drm_dev_needs_global_mutex(dev)) in drmclose()
1848 struct drm_device *dev = drm_get_device_from_kdev(kdev); in drmread() local
1853 if (dev == NULL) in drmread()
1856 mutex_lock(&dev->filelist_mutex); in drmread()
1857 file_priv = drm_find_file_by_minor(dev, minor(kdev)); in drmread()
1858 mutex_unlock(&dev->filelist_mutex); in drmread()
1869 mtx_enter(&dev->event_lock); in drmread()
1872 mtx_leave(&dev->event_lock); in drmread()
1875 error = msleep_nsec(&file_priv->event_wait, &dev->event_lock, in drmread()
1879 mtx_leave(&dev->event_lock); in drmread()
1882 while (drm_dequeue_event(dev, file_priv, uio->uio_resid, &ev)) { in drmread()
1883 MUTEX_ASSERT_UNLOCKED(&dev->event_lock); in drmread()
1889 mtx_enter(&dev->event_lock); in drmread()
1891 MUTEX_ASSERT_UNLOCKED(&dev->event_lock); in drmread()
1906 drm_dequeue_event(struct drm_device *dev, struct drm_file *file_priv, in drm_dequeue_event() argument
1912 MUTEX_ASSERT_LOCKED(&dev->event_lock); in drm_dequeue_event()
1928 mtx_leave(&dev->event_lock); in drm_dequeue_event()
2000 drm_pci_alloc(struct drm_device *dev, size_t size, size_t align) in drm_pci_alloc() argument
2005 dmah->mem = drm_dmamem_alloc(dev->dmat, size, align, 1, size, in drm_pci_alloc()
2018 drm_pci_free(struct drm_device *dev, struct drm_dma_handle *dmah) in drm_pci_free() argument
2023 drm_dmamem_free(dev->dmat, dmah->mem); in drm_pci_free()
2046 drm_getpciinfo(struct drm_device *dev, void *data, struct drm_file *file_priv) in drm_getpciinfo() argument
2050 if (dev->pdev == NULL) in drm_getpciinfo()
2053 info->domain = dev->pdev->bus->domain_nr; in drm_getpciinfo()
2054 info->bus = dev->pdev->bus->number; in drm_getpciinfo()
2055 info->dev = PCI_SLOT(dev->pdev->devfn); in drm_getpciinfo()
2056 info->func = PCI_FUNC(dev->pdev->devfn); in drm_getpciinfo()
2057 info->vendor_id = dev->pdev->vendor; in drm_getpciinfo()
2058 info->device_id = dev->pdev->device; in drm_getpciinfo()
2059 info->subvendor_id = dev->pdev->subsystem_vendor; in drm_getpciinfo()
2060 info->subdevice_id = dev->pdev->subsystem_device; in drm_getpciinfo()