usb: xhci: convert to TRB_LEN() and TRB_INTR_TARGET()

For normal TRB fields:
use TRB_LEN(x) instead of ((x) & TRB_LEN_MASK);
and use TRB_INTR_TARGET(x) instead of
(((x) & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT)

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Chunfeng Yun 2020-09-08 19:00:00 +02:00 committed by Marek Vasut
parent a826d76f2b
commit 4312638eaf
2 changed files with 7 additions and 12 deletions

View file

@ -688,10 +688,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe,
length, maxpacketsize, length, maxpacketsize,
more_trbs_coming); more_trbs_coming);
length_field = ((trb_buff_len & TRB_LEN_MASK) | length_field = (TRB_LEN(trb_buff_len) |
TRB_TD_SIZE(remainder) | TRB_TD_SIZE(remainder) |
((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET(0));
TRB_INTR_TARGET_SHIFT));
trb_fields[0] = lower_32_bits(addr); trb_fields[0] = lower_32_bits(addr);
trb_fields[1] = upper_32_bits(addr); trb_fields[1] = upper_32_bits(addr);
@ -849,8 +848,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
trb_fields[1] = le16_to_cpu(req->index) | trb_fields[1] = le16_to_cpu(req->index) |
le16_to_cpu(req->length) << 16; le16_to_cpu(req->length) << 16;
/* TRB_LEN | (TRB_INTR_TARGET) */ /* TRB_LEN | (TRB_INTR_TARGET) */
trb_fields[2] = (8 | ((0 & TRB_INTR_TARGET_MASK) << trb_fields[2] = (TRB_LEN(8) | TRB_INTR_TARGET(0));
TRB_INTR_TARGET_SHIFT));
/* Immediate data in pointer */ /* Immediate data in pointer */
trb_fields[3] = field; trb_fields[3] = field;
queue_trb(ctrl, ep_ring, true, trb_fields); queue_trb(ctrl, ep_ring, true, trb_fields);
@ -866,11 +864,11 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
remainder = xhci_td_remainder(ctrl, 0, length, length, remainder = xhci_td_remainder(ctrl, 0, length, length,
usb_maxpacket(udev, pipe), true); usb_maxpacket(udev, pipe), true);
length_field = (length & TRB_LEN_MASK) | TRB_TD_SIZE(remainder) | length_field = TRB_LEN(length) | TRB_TD_SIZE(remainder) |
((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT); TRB_INTR_TARGET(0);
debug("length_field = %d, length = %d," debug("length_field = %d, length = %d,"
"xhci_td_remainder(length) = %d , TRB_INTR_TARGET(0) = %d\n", "xhci_td_remainder(length) = %d , TRB_INTR_TARGET(0) = %d\n",
length_field, (length & TRB_LEN_MASK), length_field, TRB_LEN(length),
TRB_TD_SIZE(remainder), 0); TRB_TD_SIZE(remainder), 0);
if (length > 0) { if (length > 0) {
@ -901,7 +899,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
trb_fields[0] = 0; trb_fields[0] = 0;
trb_fields[1] = 0; trb_fields[1] = 0;
trb_fields[2] = ((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT); trb_fields[2] = TRB_INTR_TARGET(0);
/* Event on completion */ /* Event on completion */
trb_fields[3] = field | TRB_IOC | trb_fields[3] = field | TRB_IOC |
TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state; TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state;

View file

@ -847,12 +847,9 @@ struct xhci_event_cmd {
/* Normal TRB fields */ /* Normal TRB fields */
/* transfer_len bitmasks - bits 0:16 */ /* transfer_len bitmasks - bits 0:16 */
#define TRB_LEN(p) ((p) & 0x1ffff) #define TRB_LEN(p) ((p) & 0x1ffff)
#define TRB_LEN_MASK (0x1ffff)
/* TD Size, packets remaining in this TD, bits 21:17 (5 bits, so max 31) */ /* TD Size, packets remaining in this TD, bits 21:17 (5 bits, so max 31) */
#define TRB_TD_SIZE(p) (min((p), (u32)31) << 17) #define TRB_TD_SIZE(p) (min((p), (u32)31) << 17)
/* Interrupter Target - which MSI-X vector to target the completion event at */ /* Interrupter Target - which MSI-X vector to target the completion event at */
#define TRB_INTR_TARGET_SHIFT (22)
#define TRB_INTR_TARGET_MASK (0x3ff)
#define TRB_INTR_TARGET(p) (((p) & 0x3ff) << 22) #define TRB_INTR_TARGET(p) (((p) & 0x3ff) << 22)
#define GET_INTR_TARGET(p) (((p) >> 22) & 0x3ff) #define GET_INTR_TARGET(p) (((p) >> 22) & 0x3ff)
#define TRB_TBC(p) (((p) & 0x3) << 7) #define TRB_TBC(p) (((p) & 0x3) << 7)