Commit | Line | Data |
---|---|---|
760285e7 | 1 | #include <drm/drmP.h> |
8eed55be | 2 | #include <drm/drm_usb.h> |
a250b9fd | 3 | #include <linux/usb.h> |
b10c6d4b | 4 | #include <linux/module.h> |
a250b9fd | 5 | |
a250b9fd DA |
6 | int 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; | |
a250b9fd DA |
11 | int ret; |
12 | ||
13 | DRM_DEBUG("\n"); | |
14 | ||
1bb72532 | 15 | dev = drm_dev_alloc(driver, &interface->dev); |
a250b9fd DA |
16 | if (!dev) |
17 | return -ENOMEM; | |
18 | ||
1bb72532 | 19 | dev->usbdev = interface_to_usbdev(interface); |
a250b9fd | 20 | usb_set_intfdata(interface, dev); |
1793126f | 21 | |
c22f0ace | 22 | ret = drm_dev_register(dev, 0); |
a250b9fd | 23 | if (ret) |
c22f0ace | 24 | goto err_free; |
a250b9fd DA |
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 | ||
c22f0ace | 32 | err_free: |
099d1c29 | 33 | drm_dev_unref(dev); |
a250b9fd DA |
34 | return ret; |
35 | ||
36 | } | |
37 | EXPORT_SYMBOL(drm_get_usb_dev); | |
38 | ||
a250b9fd DA |
39 | static int drm_usb_set_busid(struct drm_device *dev, |
40 | struct drm_master *master) | |
41 | { | |
42 | return 0; | |
43 | } | |
44 | ||
45 | static struct drm_bus drm_usb_bus = { | |
a250b9fd DA |
46 | .set_busid = drm_usb_set_busid, |
47 | }; | |
c6a1af8a TR |
48 | |
49 | /** | |
50 | * drm_usb_init - Register matching USB devices with the DRM subsystem | |
51 | * @driver: DRM device driver | |
52 | * @udriver: USB device driver | |
53 | * | |
54 | * Registers one or more devices matched by a USB driver with the DRM | |
55 | * subsystem. | |
56 | * | |
57 | * Return: 0 on success or a negative error code on failure. | |
58 | */ | |
a250b9fd DA |
59 | int drm_usb_init(struct drm_driver *driver, struct usb_driver *udriver) |
60 | { | |
61 | int res; | |
62 | DRM_DEBUG("\n"); | |
63 | ||
a250b9fd DA |
64 | driver->bus = &drm_usb_bus; |
65 | ||
66 | res = usb_register(udriver); | |
67 | return res; | |
68 | } | |
69 | EXPORT_SYMBOL(drm_usb_init); | |
70 | ||
c6a1af8a TR |
71 | /** |
72 | * drm_usb_exit - Unregister matching USB devices from the DRM subsystem | |
73 | * @driver: DRM device driver | |
74 | * @udriver: USB device driver | |
75 | * | |
76 | * Unregisters one or more devices matched by a USB driver from the DRM | |
77 | * subsystem. | |
78 | */ | |
a250b9fd DA |
79 | void drm_usb_exit(struct drm_driver *driver, |
80 | struct usb_driver *udriver) | |
81 | { | |
82 | usb_deregister(udriver); | |
83 | } | |
84 | EXPORT_SYMBOL(drm_usb_exit); | |
b10c6d4b DA |
85 | |
86 | MODULE_AUTHOR("David Airlie"); | |
87 | MODULE_DESCRIPTION("USB DRM support"); | |
88 | MODULE_LICENSE("GPL and additional rights"); |