drm_usb.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include <drm/drmP.h>
  2. #include <linux/usb.h>
  3. #include <linux/module.h>
  4. int drm_get_usb_dev(struct usb_interface *interface,
  5. const struct usb_device_id *id,
  6. struct drm_driver *driver)
  7. {
  8. struct drm_device *dev;
  9. int ret;
  10. DRM_DEBUG("\n");
  11. dev = drm_dev_alloc(driver, &interface->dev);
  12. if (!dev)
  13. return -ENOMEM;
  14. dev->usbdev = interface_to_usbdev(interface);
  15. usb_set_intfdata(interface, dev);
  16. ret = drm_dev_register(dev, 0);
  17. if (ret)
  18. goto err_free;
  19. DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
  20. driver->name, driver->major, driver->minor, driver->patchlevel,
  21. driver->date, dev->primary->index);
  22. return 0;
  23. err_free:
  24. drm_dev_free(dev);
  25. return ret;
  26. }
  27. EXPORT_SYMBOL(drm_get_usb_dev);
  28. static int drm_usb_get_irq(struct drm_device *dev)
  29. {
  30. return 0;
  31. }
  32. static const char *drm_usb_get_name(struct drm_device *dev)
  33. {
  34. return "USB";
  35. }
  36. static int drm_usb_set_busid(struct drm_device *dev,
  37. struct drm_master *master)
  38. {
  39. return 0;
  40. }
  41. static struct drm_bus drm_usb_bus = {
  42. .bus_type = DRIVER_BUS_USB,
  43. .get_irq = drm_usb_get_irq,
  44. .get_name = drm_usb_get_name,
  45. .set_busid = drm_usb_set_busid,
  46. };
  47. int drm_usb_init(struct drm_driver *driver, struct usb_driver *udriver)
  48. {
  49. int res;
  50. DRM_DEBUG("\n");
  51. INIT_LIST_HEAD(&driver->device_list);
  52. driver->kdriver.usb = udriver;
  53. driver->bus = &drm_usb_bus;
  54. res = usb_register(udriver);
  55. return res;
  56. }
  57. EXPORT_SYMBOL(drm_usb_init);
  58. void drm_usb_exit(struct drm_driver *driver,
  59. struct usb_driver *udriver)
  60. {
  61. usb_deregister(udriver);
  62. }
  63. EXPORT_SYMBOL(drm_usb_exit);
  64. MODULE_AUTHOR("David Airlie");
  65. MODULE_DESCRIPTION("USB DRM support");
  66. MODULE_LICENSE("GPL and additional rights");