Commit 34445fb4 authored by Stephen Boyd's avatar Stephen Boyd Committed by Peter Chen

usb: chipidea: Properly mark little endian descriptors

The DMA descriptors are little endian, and we do a pretty good
job of handling them with the proper le32_to_cpu() markings, but
we don't actually mark them as __le32. This means checkers like
sparse can't easily find new bugs. Let's mark the members of
structures properly and fix the few places where we're missing
conversions.

Cc: Peter Chen <peter.chen@nxp.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarStephen Boyd <stephen.boyd@linaro.org>
Signed-off-by: default avatarPeter Chen <peter.chen@nxp.com>
parent bb2d387c
...@@ -365,7 +365,7 @@ static int add_td_to_list(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq, ...@@ -365,7 +365,7 @@ static int add_td_to_list(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq,
if (hwreq->req.length == 0 if (hwreq->req.length == 0
|| hwreq->req.length % hwep->ep.maxpacket) || hwreq->req.length % hwep->ep.maxpacket)
mul++; mul++;
node->ptr->token |= mul << __ffs(TD_MULTO); node->ptr->token |= cpu_to_le32(mul << __ffs(TD_MULTO));
} }
temp = (u32) (hwreq->req.dma + hwreq->req.actual); temp = (u32) (hwreq->req.dma + hwreq->req.actual);
...@@ -504,7 +504,7 @@ static int _hardware_enqueue(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq) ...@@ -504,7 +504,7 @@ static int _hardware_enqueue(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq)
if (hwreq->req.length == 0 if (hwreq->req.length == 0
|| hwreq->req.length % hwep->ep.maxpacket) || hwreq->req.length % hwep->ep.maxpacket)
mul++; mul++;
hwep->qh.ptr->cap |= mul << __ffs(QH_MULT); hwep->qh.ptr->cap |= cpu_to_le32(mul << __ffs(QH_MULT));
} }
ret = hw_ep_prime(ci, hwep->num, hwep->dir, ret = hw_ep_prime(ci, hwep->num, hwep->dir,
...@@ -529,7 +529,7 @@ static void free_pending_td(struct ci_hw_ep *hwep) ...@@ -529,7 +529,7 @@ static void free_pending_td(struct ci_hw_ep *hwep)
static int reprime_dtd(struct ci_hdrc *ci, struct ci_hw_ep *hwep, static int reprime_dtd(struct ci_hdrc *ci, struct ci_hw_ep *hwep,
struct td_node *node) struct td_node *node)
{ {
hwep->qh.ptr->td.next = node->dma; hwep->qh.ptr->td.next = cpu_to_le32(node->dma);
hwep->qh.ptr->td.token &= hwep->qh.ptr->td.token &=
cpu_to_le32(~(TD_STATUS_HALTED | TD_STATUS_ACTIVE)); cpu_to_le32(~(TD_STATUS_HALTED | TD_STATUS_ACTIVE));
......
...@@ -22,11 +22,11 @@ ...@@ -22,11 +22,11 @@
/* DMA layout of transfer descriptors */ /* DMA layout of transfer descriptors */
struct ci_hw_td { struct ci_hw_td {
/* 0 */ /* 0 */
u32 next; __le32 next;
#define TD_TERMINATE BIT(0) #define TD_TERMINATE BIT(0)
#define TD_ADDR_MASK (0xFFFFFFEUL << 5) #define TD_ADDR_MASK (0xFFFFFFEUL << 5)
/* 1 */ /* 1 */
u32 token; __le32 token;
#define TD_STATUS (0x00FFUL << 0) #define TD_STATUS (0x00FFUL << 0)
#define TD_STATUS_TR_ERR BIT(3) #define TD_STATUS_TR_ERR BIT(3)
#define TD_STATUS_DT_ERR BIT(5) #define TD_STATUS_DT_ERR BIT(5)
...@@ -36,7 +36,7 @@ struct ci_hw_td { ...@@ -36,7 +36,7 @@ struct ci_hw_td {
#define TD_IOC BIT(15) #define TD_IOC BIT(15)
#define TD_TOTAL_BYTES (0x7FFFUL << 16) #define TD_TOTAL_BYTES (0x7FFFUL << 16)
/* 2 */ /* 2 */
u32 page[5]; __le32 page[5];
#define TD_CURR_OFFSET (0x0FFFUL << 0) #define TD_CURR_OFFSET (0x0FFFUL << 0)
#define TD_FRAME_NUM (0x07FFUL << 0) #define TD_FRAME_NUM (0x07FFUL << 0)
#define TD_RESERVED_MASK (0x0FFFUL << 0) #define TD_RESERVED_MASK (0x0FFFUL << 0)
...@@ -45,18 +45,18 @@ struct ci_hw_td { ...@@ -45,18 +45,18 @@ struct ci_hw_td {
/* DMA layout of queue heads */ /* DMA layout of queue heads */
struct ci_hw_qh { struct ci_hw_qh {
/* 0 */ /* 0 */
u32 cap; __le32 cap;
#define QH_IOS BIT(15) #define QH_IOS BIT(15)
#define QH_MAX_PKT (0x07FFUL << 16) #define QH_MAX_PKT (0x07FFUL << 16)
#define QH_ZLT BIT(29) #define QH_ZLT BIT(29)
#define QH_MULT (0x0003UL << 30) #define QH_MULT (0x0003UL << 30)
#define QH_ISO_MULT(x) ((x >> 11) & 0x03) #define QH_ISO_MULT(x) ((x >> 11) & 0x03)
/* 1 */ /* 1 */
u32 curr; __le32 curr;
/* 2 - 8 */ /* 2 - 8 */
struct ci_hw_td td; struct ci_hw_td td;
/* 9 */ /* 9 */
u32 RESERVED; __le32 RESERVED;
struct usb_ctrlrequest setup; struct usb_ctrlrequest setup;
} __attribute__ ((packed, aligned(4))); } __attribute__ ((packed, aligned(4)));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment