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