mfd: viperboard: Do version query in dma memory

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>
This commit is contained in:
Lars Poeschel 2012-11-26 11:24:53 +01:00 committed by Samuel Ortiz
parent 3c39c9c6e9
commit 302b95621d

View File

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