drm_usb.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. driver->kdriver.usb = udriver;
  52. driver->bus = &drm_usb_bus;
  53. res = usb_register(udriver);
  54. return res;
  55. }
  56. EXPORT_SYMBOL(drm_usb_init);
  57. void drm_usb_exit(struct drm_driver *driver,
  58. struct usb_driver *udriver)
  59. {
  60. usb_deregister(udriver);
  61. }
  62. EXPORT_SYMBOL(drm_usb_exit);
  63. MODULE_AUTHOR("David Airlie");
  64. MODULE_DESCRIPTION("USB DRM support");
  65. MODULE_LICENSE("GPL and additional rights");