]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mfd: viperboard: Do version query in dma memory
authorLars Poeschel <poeschel@lemonage.de>
Mon, 26 Nov 2012 10:24:53 +0000 (11:24 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 26 Nov 2012 10:48:56 +0000 (11:48 +0100)
The query for the viperboard version was done with memory buffer
on the stack but usb transfers need dma capable memory buffer.
This is fixed now.

Signed-off-by: Lars Poeschel <poeschel@lemonage.de>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/viperboard.c

index 276122b37199e7d234b10b28b11f8fd76f709783..af2a6703f34fa89d6a6c68397c91104ab768f6fe 100644 (file)
@@ -56,7 +56,6 @@ static int vprbrd_probe(struct usb_interface *interface,
 
        u16 version = 0;
        int pipe, ret;
-       unsigned char buf[1];
 
        /* allocate memory for our device state and initialize it */
        vb = kzalloc(sizeof(*vb), GFP_KERNEL);
@@ -76,17 +75,17 @@ static int vprbrd_probe(struct usb_interface *interface,
        /* get version information, major first, minor then */
        pipe = usb_rcvctrlpipe(vb->usb_dev, 0);
        ret = usb_control_msg(vb->usb_dev, pipe, VPRBRD_USB_REQUEST_MAJOR,
-               VPRBRD_USB_TYPE_IN, 0x0000, 0x0000, buf, 1,
+               VPRBRD_USB_TYPE_IN, 0x0000, 0x0000, vb->buf, 1,
                VPRBRD_USB_TIMEOUT_MS);
        if (ret == 1)
-               version = buf[0];
+               version = vb->buf[0];
 
        ret = usb_control_msg(vb->usb_dev, pipe, VPRBRD_USB_REQUEST_MINOR,
-               VPRBRD_USB_TYPE_IN, 0x0000, 0x0000, buf, 1,
+               VPRBRD_USB_TYPE_IN, 0x0000, 0x0000, vb->buf, 1,
                VPRBRD_USB_TIMEOUT_MS);
        if (ret == 1) {
                version <<= 8;
-               version = version | buf[0];
+               version = version | vb->buf[0];
        }
 
        dev_info(&interface->dev,