Re: [PATCH] Revert "usb: dwc3: Support EBC feature of DWC_usb31"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Thinh,

I'm working on a patch to bring EBC support back, I had a doubt
regarding some of the required corrections though (inlined)

Please take a look and advise, I'll proceed accordingly.

Regards,
Manan

On Fri, Feb 9, 2024 at 6:55 AM Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> wrote:
>
> This reverts commit 398aa9a7e77cf23c2a6f882ddd3dcd96f21771dc.
>
> The update to the gadget API to support EBC feature is incomplete. It's
> missing at least the following:
>  * New usage documentation
I will address this
>  * Gadget capability check
>  * Condition for the user to check how many and which endpoints can be
>    used as "fifo_mode"
The easiest option seems to be to add a new function that lets users
specifically request
fifo_mode endpoints eg: usb_fifo_mode_ep_autoconfig_ss
This function will cover ensuring that the device supports
fifo_endpoints and returning a suitable
endpoint (if available) and NULL otherwise. This can be indicated by
adding a new bit to
the existing ep_caps  structure.
Does this seem like an acceptable solution?

>  * Description of how it can affect completed request (e.g. dwc3 won't
>    update TRB on completion -- ie. how it can affect request's actual
>    length report)
I will remove the NO_WB bit for the EBC endpoint and leave it up to
the user to enable/disable this
>
> Let's revert this until it's ready.
>
> Fixes: 398aa9a7e77c ("usb: dwc3: Support EBC feature of DWC_usb31")
> Signed-off-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx>
> ---
>  drivers/usb/dwc3/core.h    | 1 -
>  drivers/usb/dwc3/gadget.c  | 6 ------
>  drivers/usb/dwc3/gadget.h  | 2 --
>  include/linux/usb/gadget.h | 1 -
>  4 files changed, 10 deletions(-)
>
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index df544ec730d2..2255fc94c8ef 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -376,7 +376,6 @@
>  /* Global HWPARAMS4 Register */
>  #define DWC3_GHWPARAMS4_HIBER_SCRATCHBUFS(n)   (((n) & (0x0f << 13)) >> 13)
>  #define DWC3_MAX_HIBER_SCRATCHBUFS             15
> -#define DWC3_EXT_BUFF_CONTROL          BIT(21)
>
>  /* Global HWPARAMS6 Register */
>  #define DWC3_GHWPARAMS6_BCSUPPORT              BIT(14)
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 564976b3e2b9..4c8dd6724678 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -673,12 +673,6 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action)
>                 params.param1 |= DWC3_DEPCFG_BINTERVAL_M1(bInterval_m1);
>         }
>
> -       if (dep->endpoint.fifo_mode) {
> -               if (!(dwc->hwparams.hwparams4 & DWC3_EXT_BUFF_CONTROL))
> -                       return -EINVAL;
> -               params.param1 |= DWC3_DEPCFG_EBC_HWO_NOWB | DWC3_DEPCFG_USE_EBC;
> -       }
> -
>         return dwc3_send_gadget_ep_cmd(dep, DWC3_DEPCMD_SETEPCONFIG, &params);
>  }
>
> diff --git a/drivers/usb/dwc3/gadget.h b/drivers/usb/dwc3/gadget.h
> index fd7a4e94397e..55a56cf67d73 100644
> --- a/drivers/usb/dwc3/gadget.h
> +++ b/drivers/usb/dwc3/gadget.h
> @@ -26,8 +26,6 @@ struct dwc3;
>  #define DWC3_DEPCFG_XFER_NOT_READY_EN  BIT(10)
>  #define DWC3_DEPCFG_FIFO_ERROR_EN      BIT(11)
>  #define DWC3_DEPCFG_STREAM_EVENT_EN    BIT(13)
> -#define DWC3_DEPCFG_EBC_HWO_NOWB       BIT(14)
> -#define DWC3_DEPCFG_USE_EBC            BIT(15)
>  #define DWC3_DEPCFG_BINTERVAL_M1(n)    (((n) & 0xff) << 16)
>  #define DWC3_DEPCFG_STREAM_CAPABLE     BIT(24)
>  #define DWC3_DEPCFG_EP_NUMBER(n)       (((n) & 0x1f) << 25)
> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
> index a771ccc038ac..6532beb587b1 100644
> --- a/include/linux/usb/gadget.h
> +++ b/include/linux/usb/gadget.h
> @@ -236,7 +236,6 @@ struct usb_ep {
>         unsigned                max_streams:16;
>         unsigned                mult:2;
>         unsigned                maxburst:5;
> -       unsigned                fifo_mode:1;
>         u8                      address;
>         const struct usb_endpoint_descriptor    *desc;
>         const struct usb_ss_ep_comp_descriptor  *comp_desc;
>
> base-commit: 88bae831f3810e02c9c951233c7ee662aa13dc2c
> --
> 2.28.0





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux