greybus: es1-ap-usb: fix svc control pipe flags

The control message flags currently indicate USB_DIR_IN, which
doesn't allow the data phase carrying the SVC message to be
send to the device. Change this to USB_DIR_OUT so our SVC
message buffer reaches the device.

Also, the recipient is USB_RECIP_OTHER but almost all real devices
that handle vendor setup requests seem to set this as
USB_RECIP_INTERFACE. As a result, functionfs-based gadgets don't handle
vendor setup requests with a recipient of OTHER. Change this to
USB_RECIP_INTERFACE to work with the functionfs-based emulator and
this should be no issue for the firmware to implement to match.

Signed-off-by: Matt Porter <mporter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
Matt Porter 2014-09-22 15:51:48 -04:00 committed by Greg Kroah-Hartman
parent 4a833fdb7f
commit 648cb6cb75

View File

@ -149,7 +149,7 @@ static int send_svc_msg(struct svc_msg *svc_msg, struct greybus_host_device *hd)
usb_sndctrlpipe(es1->usb_dev,
es1->control_endpoint),
0x01, /* vendor request AP message */
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
0x00, 0x00,
(char *)svc_msg,
sizeof(*svc_msg),