drm_usb.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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_unref(dev);
  26. return ret;
  27. }
  28. EXPORT_SYMBOL(drm_get_usb_dev);
  29. static int drm_usb_set_busid(struct drm_device *dev,
  30. struct drm_master *master)
  31. {
  32. return 0;
  33. }
  34. static struct drm_bus drm_usb_bus = {
  35. .set_busid = drm_usb_set_busid,
  36. };
  37. int drm_usb_init(struct drm_driver *driver, struct usb_driver *udriver)
  38. {
  39. int res;
  40. DRM_DEBUG("\n");
  41. driver->kdriver.usb = udriver;
  42. driver->bus = &drm_usb_bus;
  43. res = usb_register(udriver);
  44. return res;
  45. }
  46. EXPORT_SYMBOL(drm_usb_init);
  47. void drm_usb_exit(struct drm_driver *driver,
  48. struct usb_driver *udriver)
  49. {
  50. usb_deregister(udriver);
  51. }
  52. EXPORT_SYMBOL(drm_usb_exit);
  53. MODULE_AUTHOR("David Airlie");
  54. MODULE_DESCRIPTION("USB DRM support");
  55. MODULE_LICENSE("GPL and additional rights");