~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to drivers/gpu/drm/drm_usb.c

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno
  • Date: 2011-06-07 12:14:05 UTC
  • mfrom: (43.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110607121405-i3h1rd7nrnd2b73h
Tags: 2.6.39-2
[ Ben Hutchings ]
* [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA
  (Closes: #627492)
* cgroups: Disable memory resource controller by default. Allow it
  to be enabled using kernel parameter 'cgroup_enable=memory'.
* rt2800usb: Enable support for more USB devices including
  Linksys WUSB600N (Closes: #596626) (this change was accidentally
  omitted from 2.6.39-1)
* [x86] Remove Celeron from list of processors supporting PAE. Most
  'Celeron M' models do not.
* Update debconf template translations:
  - Swedish (Martin Bagge) (Closes: #628932)
  - French (David Prévot) (Closes: #628191)
* aufs: Update for 2.6.39 (Closes: #627837)
* Add stable 2.6.39.1, including:
  - ext4: dont set PageUptodate in ext4_end_bio()
  - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745)
  - ext3: Fix fs corruption when make_indexed_dir() fails
  - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages
  - sctp: fix race between sctp_bind_addr_free() and
    sctp_bind_addr_conflict()
  - sctp: fix memory leak of the ASCONF queue when free asoc
  - md/bitmap: fix saving of events_cleared and other state
  - cdc_acm: Fix oops when Droids MuIn LCD is connected
  - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827)
  - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184)
  - tmpfs: fix race between truncate and writepage
  - nfs41: Correct offset for LAYOUTCOMMIT
  - xen/mmu: fix a race window causing leave_mm BUG()
  - ext4: fix possible use-after-free in ext4_remove_li_request()
  For the complete list of changes, see:
   http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1
* Bump ABI to 2
* netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC,
  IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT,
  IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET,
  IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules
  (Closes: #629401)

[ Aurelien Jarno ]
* [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "drmP.h"
 
2
#include <linux/usb.h>
 
3
 
 
4
#ifdef CONFIG_USB
 
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
        struct usb_device *usbdev;
 
11
        int ret;
 
12
 
 
13
        DRM_DEBUG("\n");
 
14
 
 
15
        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
 
16
        if (!dev)
 
17
                return -ENOMEM;
 
18
 
 
19
        usbdev = interface_to_usbdev(interface);
 
20
        dev->usbdev = usbdev;
 
21
        dev->dev = &usbdev->dev;
 
22
 
 
23
        mutex_lock(&drm_global_mutex);
 
24
 
 
25
        ret = drm_fill_in_dev(dev, NULL, driver);
 
26
        if (ret) {
 
27
                printk(KERN_ERR "DRM: Fill_in_dev failed.\n");
 
28
                goto err_g1;
 
29
        }
 
30
 
 
31
        usb_set_intfdata(interface, dev);
 
32
        ret = drm_get_minor(dev, &dev->control, DRM_MINOR_CONTROL);
 
33
        if (ret)
 
34
                goto err_g1;
 
35
 
 
36
        ret = drm_get_minor(dev, &dev->primary, DRM_MINOR_LEGACY);
 
37
        if (ret)
 
38
                goto err_g2;
 
39
 
 
40
        if (dev->driver->load) {
 
41
                ret = dev->driver->load(dev, 0);
 
42
                if (ret)
 
43
                        goto err_g3;
 
44
        }
 
45
 
 
46
        /* setup the grouping for the legacy output */
 
47
        ret = drm_mode_group_init_legacy_group(dev,
 
48
                                               &dev->primary->mode_group);
 
49
        if (ret)
 
50
                goto err_g3;
 
51
 
 
52
        list_add_tail(&dev->driver_item, &driver->device_list);
 
53
 
 
54
        mutex_unlock(&drm_global_mutex);
 
55
 
 
56
        DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
 
57
                 driver->name, driver->major, driver->minor, driver->patchlevel,
 
58
                 driver->date, dev->primary->index);
 
59
 
 
60
        return 0;
 
61
 
 
62
err_g3:
 
63
        drm_put_minor(&dev->primary);
 
64
err_g2:
 
65
        drm_put_minor(&dev->control);
 
66
err_g1:
 
67
        kfree(dev);
 
68
        mutex_unlock(&drm_global_mutex);
 
69
        return ret;
 
70
 
 
71
}
 
72
EXPORT_SYMBOL(drm_get_usb_dev);
 
73
 
 
74
static int drm_usb_get_irq(struct drm_device *dev)
 
75
{
 
76
        return 0;
 
77
}
 
78
 
 
79
static const char *drm_usb_get_name(struct drm_device *dev)
 
80
{
 
81
        return "USB";
 
82
}
 
83
 
 
84
static int drm_usb_set_busid(struct drm_device *dev,
 
85
                               struct drm_master *master)
 
86
{
 
87
        return 0;
 
88
}
 
89
 
 
90
static struct drm_bus drm_usb_bus = {
 
91
        .bus_type = DRIVER_BUS_USB,
 
92
        .get_irq = drm_usb_get_irq,
 
93
        .get_name = drm_usb_get_name,
 
94
        .set_busid = drm_usb_set_busid,
 
95
};
 
96
    
 
97
int drm_usb_init(struct drm_driver *driver, struct usb_driver *udriver)
 
98
{
 
99
        int res;
 
100
        DRM_DEBUG("\n");
 
101
 
 
102
        INIT_LIST_HEAD(&driver->device_list);
 
103
        driver->kdriver.usb = udriver;
 
104
        driver->bus = &drm_usb_bus;
 
105
 
 
106
        res = usb_register(udriver);
 
107
        return res;
 
108
}
 
109
EXPORT_SYMBOL(drm_usb_init);
 
110
 
 
111
void drm_usb_exit(struct drm_driver *driver,
 
112
                  struct usb_driver *udriver)
 
113
{
 
114
        usb_deregister(udriver);
 
115
}
 
116
EXPORT_SYMBOL(drm_usb_exit);
 
117
#endif