mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-usb
- Fix some possible alignment issues
This commit is contained in:
commit
c59afcff8a
4 changed files with 22 additions and 11 deletions
|
@ -18,7 +18,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/io.h>
|
||||
#include <usb.h>
|
||||
#include "../host/xhci.h"
|
||||
#include <usb/xhci.h>
|
||||
|
||||
#include "core.h"
|
||||
#include "host-export.h"
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include <dm.h>
|
||||
#include <linux/compat.h>
|
||||
#include <usb.h>
|
||||
#include "../host/xhci.h"
|
||||
#include <usb/xhci.h>
|
||||
|
||||
#include "core.h"
|
||||
#include "drd.h"
|
||||
|
|
|
@ -12,8 +12,16 @@
|
|||
|
||||
#define USB_BUFSIZ 4096
|
||||
|
||||
/* Helper type for accessing packed u16 pointers */
|
||||
typedef struct { __le16 val; } __packed __le16_packed;
|
||||
|
||||
static struct usb_composite_driver *composite;
|
||||
|
||||
static inline void le16_add_cpu_packed(__le16_packed *var, u16 val)
|
||||
{
|
||||
var->val = cpu_to_le16(le16_to_cpu(var->val) + val);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_add_function() - add a function to a configuration
|
||||
* @config: the configuration
|
||||
|
@ -480,20 +488,21 @@ done:
|
|||
* the host side.
|
||||
*/
|
||||
|
||||
static void collect_langs(struct usb_gadget_strings **sp, __le16 *buf)
|
||||
static void collect_langs(struct usb_gadget_strings **sp, void *buf)
|
||||
{
|
||||
const struct usb_gadget_strings *s;
|
||||
u16 language;
|
||||
__le16 *tmp;
|
||||
__le16_packed *tmp;
|
||||
__le16_packed *end = (buf + 252);
|
||||
|
||||
while (*sp) {
|
||||
s = *sp;
|
||||
language = cpu_to_le16(s->language);
|
||||
for (tmp = buf; *tmp && tmp < &buf[126]; tmp++) {
|
||||
if (*tmp == language)
|
||||
for (tmp = buf; tmp->val && tmp < end; tmp++) {
|
||||
if (tmp->val == language)
|
||||
goto repeat;
|
||||
}
|
||||
*tmp++ = language;
|
||||
tmp->val = language;
|
||||
repeat:
|
||||
sp++;
|
||||
}
|
||||
|
@ -705,7 +714,8 @@ static int bos_desc(struct usb_composite_dev *cdev)
|
|||
*/
|
||||
usb_ext = cdev->req->buf + le16_to_cpu(bos->wTotalLength);
|
||||
bos->bNumDeviceCaps++;
|
||||
le16_add_cpu(&bos->wTotalLength, USB_DT_USB_EXT_CAP_SIZE);
|
||||
le16_add_cpu_packed((__le16_packed *)&bos->wTotalLength,
|
||||
USB_DT_USB_EXT_CAP_SIZE);
|
||||
usb_ext->bLength = USB_DT_USB_EXT_CAP_SIZE;
|
||||
usb_ext->bDescriptorType = USB_DT_DEVICE_CAPABILITY;
|
||||
usb_ext->bDevCapabilityType = USB_CAP_TYPE_EXT;
|
||||
|
@ -721,7 +731,8 @@ static int bos_desc(struct usb_composite_dev *cdev)
|
|||
|
||||
ss_cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength);
|
||||
bos->bNumDeviceCaps++;
|
||||
le16_add_cpu(&bos->wTotalLength, USB_DT_USB_SS_CAP_SIZE);
|
||||
le16_add_cpu_packed((__le16_packed *)&bos->wTotalLength,
|
||||
USB_DT_USB_SS_CAP_SIZE);
|
||||
ss_cap->bLength = USB_DT_USB_SS_CAP_SIZE;
|
||||
ss_cap->bDescriptorType = USB_DT_DEVICE_CAPABILITY;
|
||||
ss_cap->bDevCapabilityType = USB_SS_CAP_TYPE;
|
||||
|
|
|
@ -731,7 +731,7 @@ static int write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dwc2_fifo_read(struct dwc2_ep *ep, u32 *cp, int max)
|
||||
static int dwc2_fifo_read(struct dwc2_ep *ep, void *cp, int max)
|
||||
{
|
||||
invalidate_dcache_range((unsigned long)cp, (unsigned long)cp +
|
||||
ROUND(max, CONFIG_SYS_CACHELINE_SIZE));
|
||||
|
@ -1285,7 +1285,7 @@ static void dwc2_ep0_setup(struct dwc2_udc *dev)
|
|||
nuke(ep, -EPROTO);
|
||||
|
||||
/* read control req from fifo (8 bytes) */
|
||||
dwc2_fifo_read(ep, (u32 *)usb_ctrl, 8);
|
||||
dwc2_fifo_read(ep, usb_ctrl, 8);
|
||||
|
||||
debug_cond(DEBUG_SETUP != 0,
|
||||
"%s: bRequestType = 0x%x(%s), bRequest = 0x%x"
|
||||
|
|
Loading…
Reference in a new issue