diff mbox series

[v3,6/9] usb: xhci: convert to TRB_LEN() and TRB_INTR_TARGET()

Message ID 1599462727-2188-6-git-send-email-chunfeng.yun@mediatek.com
State Superseded
Delegated to: Marek Vasut
Headers show
Series [v3,1/9] usb: xhci: add a member hci_version in xhci_ctrl struct | expand

Commit Message

Chunfeng Yun (云春峰) Sept. 7, 2020, 7:12 a.m. UTC
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>
---
v3: merge patch [v2 6/11] and [v2 7/11] into one, both for normal TRB fileds

v2: no changes
---
 drivers/usb/host/xhci-ring.c | 16 +++++++---------
 include/usb/xhci.h           |  3 ---
 2 files changed, 7 insertions(+), 12 deletions(-)

Comments

Bin Meng Sept. 8, 2020, 1:30 a.m. UTC | #1
On Mon, Sep 7, 2020 at 3:14 PM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
>
> 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>
> ---
> v3: merge patch [v2 6/11] and [v2 7/11] into one, both for normal TRB fileds
>
> v2: no changes
> ---
>  drivers/usb/host/xhci-ring.c | 16 +++++++---------
>  include/usb/xhci.h           |  3 ---
>  2 files changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
> index 87891fd..99c84f9 100644
> --- a/drivers/usb/host/xhci-ring.c
> +++ b/drivers/usb/host/xhci-ring.c
> @@ -688,10 +688,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe,
>                                               length, maxpacketsize,
>                                               more_trbs_coming);
>
> -               length_field = ((trb_buff_len & TRB_LEN_MASK) |
> +               length_field = (TRB_LEN(trb_buff_len) |
>                                 TRB_TD_SIZE(remainder) |
> -                               ((0 & TRB_INTR_TARGET_MASK) <<
> -                               TRB_INTR_TARGET_SHIFT));
> +                               TRB_INTR_TARGET(0));

nits: should be aligned to TRB_LEN(length)

>
>                 trb_fields[0] = lower_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) |
>                         le16_to_cpu(req->length) << 16;
>         /* TRB_LEN | (TRB_INTR_TARGET) */
> -       trb_fields[2] = (8 | ((0 & TRB_INTR_TARGET_MASK) <<
> -                       TRB_INTR_TARGET_SHIFT));
> +       trb_fields[2] = (TRB_LEN(8) | TRB_INTR_TARGET(0));
>         /* Immediate data in pointer */
>         trb_fields[3] = field;
>         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,
>                                       usb_maxpacket(udev, pipe), 1);
> -       length_field = (length & TRB_LEN_MASK) | TRB_TD_SIZE(remainder) |
> -                       ((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT);
> +       length_field = TRB_LEN(length) | TRB_TD_SIZE(remainder) |
> +                       TRB_INTR_TARGET(0);
>         debug("length_field = %d, length = %d,"
>                 "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);
>
>         if (length > 0) {
> @@ -901,7 +899,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
>
>         trb_fields[0] = 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 */
>         trb_fields[3] = field | TRB_IOC |
>                         TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state;
> diff --git a/include/usb/xhci.h b/include/usb/xhci.h
> index bdba51d..35c6604 100644
> --- a/include/usb/xhci.h
> +++ b/include/usb/xhci.h
> @@ -847,12 +847,9 @@ struct xhci_event_cmd {
>  /* Normal TRB fields */
>  /* transfer_len bitmasks - bits 0:16 */
>  #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) */
>  #define TRB_TD_SIZE(p)          (min((p), (u32)31) << 17)
>  /* 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 GET_INTR_TARGET(p)             (((p) >> 22) & 0x3ff)
>  #define TRB_TBC(p)                     (((p) & 0x3) << 7)
> --

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Chunfeng Yun (云春峰) Sept. 8, 2020, 7:39 a.m. UTC | #2
On Tue, 2020-09-08 at 09:30 +0800, Bin Meng wrote:
> On Mon, Sep 7, 2020 at 3:14 PM Chunfeng Yun <chunfeng.yun@mediatek.com> wrote:
> >
> > 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>
> > ---
> > v3: merge patch [v2 6/11] and [v2 7/11] into one, both for normal TRB fileds
> >
> > v2: no changes
> > ---
> >  drivers/usb/host/xhci-ring.c | 16 +++++++---------
> >  include/usb/xhci.h           |  3 ---
> >  2 files changed, 7 insertions(+), 12 deletions(-)
> >
> > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
> > index 87891fd..99c84f9 100644
> > --- a/drivers/usb/host/xhci-ring.c
> > +++ b/drivers/usb/host/xhci-ring.c
> > @@ -688,10 +688,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe,
> >                                               length, maxpacketsize,
> >                                               more_trbs_coming);
> >
> > -               length_field = ((trb_buff_len & TRB_LEN_MASK) |
> > +               length_field = (TRB_LEN(trb_buff_len) |
> >                                 TRB_TD_SIZE(remainder) |
> > -                               ((0 & TRB_INTR_TARGET_MASK) <<
> > -                               TRB_INTR_TARGET_SHIFT));
> > +                               TRB_INTR_TARGET(0));
> 
> nits: should be aligned to TRB_LEN(length)
Ok, will check it again

> 
> >
> >                 trb_fields[0] = lower_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) |
> >                         le16_to_cpu(req->length) << 16;
> >         /* TRB_LEN | (TRB_INTR_TARGET) */
> > -       trb_fields[2] = (8 | ((0 & TRB_INTR_TARGET_MASK) <<
> > -                       TRB_INTR_TARGET_SHIFT));
> > +       trb_fields[2] = (TRB_LEN(8) | TRB_INTR_TARGET(0));
> >         /* Immediate data in pointer */
> >         trb_fields[3] = field;
> >         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,
> >                                       usb_maxpacket(udev, pipe), 1);
> > -       length_field = (length & TRB_LEN_MASK) | TRB_TD_SIZE(remainder) |
> > -                       ((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT);
> > +       length_field = TRB_LEN(length) | TRB_TD_SIZE(remainder) |
> > +                       TRB_INTR_TARGET(0);
> >         debug("length_field = %d, length = %d,"
> >                 "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);
> >
> >         if (length > 0) {
> > @@ -901,7 +899,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
> >
> >         trb_fields[0] = 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 */
> >         trb_fields[3] = field | TRB_IOC |
> >                         TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state;
> > diff --git a/include/usb/xhci.h b/include/usb/xhci.h
> > index bdba51d..35c6604 100644
> > --- a/include/usb/xhci.h
> > +++ b/include/usb/xhci.h
> > @@ -847,12 +847,9 @@ struct xhci_event_cmd {
> >  /* Normal TRB fields */
> >  /* transfer_len bitmasks - bits 0:16 */
> >  #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) */
> >  #define TRB_TD_SIZE(p)          (min((p), (u32)31) << 17)
> >  /* 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 GET_INTR_TARGET(p)             (((p) >> 22) & 0x3ff)
> >  #define TRB_TBC(p)                     (((p) & 0x3) << 7)
> > --
> 
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Thanks
diff mbox series

Patch

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 87891fd..99c84f9 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -688,10 +688,9 @@  int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe,
 					      length, maxpacketsize,
 					      more_trbs_coming);
 
-		length_field = ((trb_buff_len & TRB_LEN_MASK) |
+		length_field = (TRB_LEN(trb_buff_len) |
 				TRB_TD_SIZE(remainder) |
-				((0 & TRB_INTR_TARGET_MASK) <<
-				TRB_INTR_TARGET_SHIFT));
+				TRB_INTR_TARGET(0));
 
 		trb_fields[0] = lower_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) |
 			le16_to_cpu(req->length) << 16;
 	/* TRB_LEN | (TRB_INTR_TARGET) */
-	trb_fields[2] = (8 | ((0 & TRB_INTR_TARGET_MASK) <<
-			TRB_INTR_TARGET_SHIFT));
+	trb_fields[2] = (TRB_LEN(8) | TRB_INTR_TARGET(0));
 	/* Immediate data in pointer */
 	trb_fields[3] = field;
 	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,
 				      usb_maxpacket(udev, pipe), 1);
-	length_field = (length & TRB_LEN_MASK) | TRB_TD_SIZE(remainder) |
-			((0 & TRB_INTR_TARGET_MASK) << TRB_INTR_TARGET_SHIFT);
+	length_field = TRB_LEN(length) | TRB_TD_SIZE(remainder) |
+			TRB_INTR_TARGET(0);
 	debug("length_field = %d, length = %d,"
 		"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);
 
 	if (length > 0) {
@@ -901,7 +899,7 @@  int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
 
 	trb_fields[0] = 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 */
 	trb_fields[3] = field | TRB_IOC |
 			TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state;
diff --git a/include/usb/xhci.h b/include/usb/xhci.h
index bdba51d..35c6604 100644
--- a/include/usb/xhci.h
+++ b/include/usb/xhci.h
@@ -847,12 +847,9 @@  struct xhci_event_cmd {
 /* Normal TRB fields */
 /* transfer_len bitmasks - bits 0:16 */
 #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) */
 #define TRB_TD_SIZE(p)          (min((p), (u32)31) << 17)
 /* 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 GET_INTR_TARGET(p)		(((p) >> 22) & 0x3ff)
 #define TRB_TBC(p)			(((p) & 0x3) << 7)