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

Lukasz Majewski
2019-04-08T21:55:32Z

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

> Handle "force-b-session-valid" property from DT.
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay@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@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>