On Fri, 29 Mar 2019 15:42:17 +0100 Patrick Delaunay <patrick.delau...@st.com> wrote:
> Handle "force-b-session-valid" property from DT. > > Signed-off-by: Patrick Delaunay <patrick.delau...@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 <lu...@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: lu...@denx.de
pgpbbL4_A7oe4.pgp
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot