[U-Boot] [PATCH 09/16] usb: dwc2: Add force-b-session-valid support

Lukasz Majewski lukma at denx.de
Mon Apr 8 21:55:32 UTC 2019


On Fri, 29 Mar 2019 15:42:17 +0100
Patrick Delaunay <patrick.delaunay at st.com> wrote:

> Handle "force-b-session-valid" property from DT.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
> ---
> 
>  drivers/usb/gadget/dwc2_udc_otg.c      | 9 +++++++++
>  drivers/usb/gadget/dwc2_udc_otg_regs.h | 8 ++++++--
>  include/usb/dwc2_udc.h                 | 1 +
>  3 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/dwc2_udc_otg.c
> b/drivers/usb/gadget/dwc2_udc_otg.c index 8169fdb..146f11e 100644
> --- a/drivers/usb/gadget/dwc2_udc_otg.c
> +++ b/drivers/usb/gadget/dwc2_udc_otg.c
> @@ -1034,6 +1034,9 @@ static int
> dwc2_udc_otg_ofdata_to_platdata(struct udevice *dev)
> "g-np-tx-fifo-size", 0); platdata->tx_fifo_sz =
> dev_read_u32_default(dev, "g-tx-fifo-size", 0); 
> +	platdata->force_b_session_valid =
> +		dev_read_bool(dev, "force-b-session-valid");
> +
>  	return 0;
>  }
>  
> @@ -1088,6 +1091,8 @@ static int dwc2_udc_otg_probe(struct udevice
> *dev) {
>  	struct dwc2_plat_otg_data *platdata = dev_get_platdata(dev);
>  	struct dwc2_priv_data *priv = dev_get_priv(dev);
> +	struct dwc2_usbotg_reg *usbotg_reg =
> +		(struct dwc2_usbotg_reg *)platdata->regs_otg;
>  	int ret;
>  
>  	ret = dwc2_udc_otg_clk_init(dev, &priv->clks);
> @@ -1102,6 +1107,10 @@ static int dwc2_udc_otg_probe(struct udevice
> *dev) if (ret)
>  		return ret;
>  
> +	if (platdata->force_b_session_valid)
> +		/* Override B session bits : value and enable */
> +		setbits_le32(&usbotg_reg->gotgctl,  B_VALOEN |
> B_VALOVAL); +
>  	ret = dwc2_udc_probe(platdata);
>  	if (ret)
>  		return ret;
> diff --git a/drivers/usb/gadget/dwc2_udc_otg_regs.h
> b/drivers/usb/gadget/dwc2_udc_otg_regs.h index a1829b3..0aee4ee 100644
> --- a/drivers/usb/gadget/dwc2_udc_otg_regs.h
> +++ b/drivers/usb/gadget/dwc2_udc_otg_regs.h
> @@ -83,8 +83,12 @@ struct dwc2_usbotg_reg {
>  /*definitions related to CSR setting */
>  
>  /* DWC2_UDC_OTG_GOTGCTL */
> -#define B_SESSION_VALID		(0x1<<19)
> -#define A_SESSION_VALID		(0x1<<18)
> +#define B_SESSION_VALID			BIT(19)
> +#define A_SESSION_VALID			BIT(18)
> +#define B_VALOVAL			BIT(7)
> +#define B_VALOEN			BIT(6)
> +#define A_VALOVAL			BIT(5)
> +#define A_VALOEN			BIT(4)
>  
>  /* DWC2_UDC_OTG_GAHBCFG */
>  #define PTXFE_HALF			(0<<8)
> diff --git a/include/usb/dwc2_udc.h b/include/usb/dwc2_udc.h
> index 4068de0..3cf20ea 100644
> --- a/include/usb/dwc2_udc.h
> +++ b/include/usb/dwc2_udc.h
> @@ -22,6 +22,7 @@ struct dwc2_plat_otg_data {
>  	unsigned int	rx_fifo_sz;
>  	unsigned int	np_tx_fifo_sz;
>  	unsigned int	tx_fifo_sz;
> +	bool		force_b_session_valid;
>  };
>  
>  int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata);

Reviewed-by: Lukasz Majewski <lukma at denx.de>


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190408/7a0bfaf8/attachment.sig>


More information about the U-Boot mailing list