drm_usb.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include <drm/drmP.h>
  2. #include <drm/drm_usb.h>
  3. #include <linux/usb.h>
  4. #include <linux/module.h>
  5. int drm_get_usb_dev(struct usb_interface *interface,
  6. const struct usb_device_id *id,
  7. struct drm_driver *driver)
  8. {
  9. struct drm_device *dev;
  10. int ret;
  11. DRM_DEBUG("\n");
  12. dev = drm_dev_alloc(driver, &interface->dev);
  13. if (!dev)
  14. return -ENOMEM;
  15. dev->usbdev = interface_to_usbdev(interface);
  16. usb_set_intfdata(interface, dev);
  17. ret = drm_dev_register(dev, 0);
  18. if (ret)
  19. goto err_free;
  20. DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
  21. driver->name, driver->major, driver->minor, driver->patchlevel,
  22. driver->date, dev->primary->index);
  23. return 0;
  24. err_free:
  25. drm_dev_free(dev);
  26. return ret;
  27. }
  28. EXPORT_SYMBOL(drm_get_usb_dev);
  29. static int drm_usb_get_irq(struct drm_device *dev)
  30. {
  31. return 0;
  32. }
  33. static const char *drm_usb_get_name(struct drm_device *dev)
  34. {
  35. return "USB";
  36. }
  37. static int drm_usb_set_busid(struct drm_device *dev,
  38. struct drm_master *master)
  39. {
  40. return 0;
  41. }
  42. static struct drm_bus drm_usb_bus = {
  43. .bus_type = DRIVER_BUS_USB,
  44. .get_irq = drm_usb_get_irq,
  45. .get_name = drm_usb_get_name,
  46. .set_busid = drm_usb_set_busid,
  47. };
  48. int drm_usb_init(struct drm_driver *driver, struct usb_driver *udriver)
  49. {
  50. int res;
  51. DRM_DEBUG("\n");
  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");