~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to drivers/media/dvb/dvb-usb/au6610.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
{
34
34
        int ret;
35
35
        u16 index;
36
 
        u8 usb_buf[6]; /* enough for all known requests,
37
 
                          read returns 5 and write 6 bytes */
 
36
        u8 *usb_buf;
 
37
 
 
38
        /*
 
39
         * allocate enough for all known requests,
 
40
         * read returns 5 and write 6 bytes
 
41
         */
 
42
        usb_buf = kmalloc(6, GFP_KERNEL);
 
43
        if (!usb_buf)
 
44
                return -ENOMEM;
 
45
 
38
46
        switch (wlen) {
39
47
        case 1:
40
48
                index = wbuf[0] << 8;
45
53
                break;
46
54
        default:
47
55
                warn("wlen = %x, aborting.", wlen);
48
 
                return -EINVAL;
 
56
                ret = -EINVAL;
 
57
                goto error;
49
58
        }
50
59
 
51
60
        ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), operation,
52
61
                              USB_TYPE_VENDOR|USB_DIR_IN, addr << 1, index,
53
 
                              usb_buf, sizeof(usb_buf), AU6610_USB_TIMEOUT);
 
62
                              usb_buf, 6, AU6610_USB_TIMEOUT);
54
63
        if (ret < 0)
55
 
                return ret;
 
64
                goto error;
56
65
 
57
66
        switch (operation) {
58
67
        case AU6610_REQ_I2C_READ:
60
69
                /* requested value is always 5th byte in buffer */
61
70
                rbuf[0] = usb_buf[4];
62
71
        }
63
 
 
 
72
error:
 
73
        kfree(usb_buf);
64
74
        return ret;
65
75
}
66
76