On 09/15/2016 08:31 AM, Sriram Dash wrote: >> From: Marek Vasut [mailto:ma...@denx.de] >> On 09/14/2016 07:15 AM, Sriram Dash wrote: >>> Currently the controller by default enables the Receive Detect feature >>> in P3 mode in USB 3.0 PHY. However, USB 3.0 PHY does not reliably >>> support receive detection in P3 mode. >>> Enabling the USB3 controller to configure USB in P2 mode whenever the >>> Receive Detect feature is required. >>> >>> Signed-off-by: Sriram Dash <sriram.d...@nxp.com> >>> Signed-off-by: Rajesh Bhagat <rajesh.bha...@nxp.com> >>> --- >>> Changes in v3: >>> - Fixing conflicts and repost >> >> Changelog of this verbosity is completely useless. >> > > I will take care the next time. > >>> Changes in v2: >>> - Do Soc ver checking for applying erratum >>> >>> drivers/usb/common/fsl-errata.c | 26 ++++++++++++++++++++++++++ >>> drivers/usb/host/xhci-dwc3.c | 5 +++++ >>> drivers/usb/host/xhci-fsl.c | 8 ++++++++ >>> include/fsl_usb.h | 1 + >>> include/linux/usb/dwc3.h | 2 ++ >>> 5 files changed, 42 insertions(+) >>> >>> diff --git a/drivers/usb/common/fsl-errata.c >>> b/drivers/usb/common/fsl-errata.c index 183bf2b..f2bffba 100644 >>> --- a/drivers/usb/common/fsl-errata.c >>> +++ b/drivers/usb/common/fsl-errata.c >>> @@ -190,4 +190,30 @@ bool has_erratum_a008751(void) >>> return false; >>> } >>> >>> +bool has_erratum_a010151(void) >>> +{ >>> + u32 svr = get_svr(); >>> + u32 soc = SVR_SOC_VER(svr); >>> + >>> + switch (soc) { >>> +#ifdef CONFIG_ARM64 >>> + case SVR_LS2080A: >>> + case SVR_LS2085A: >>> + case SVR_LS1046A: >>> + case SVR_LS1012A: >>> + return IS_SVR_REV(svr, 1, 0); >>> + case SVR_LS1043A: >>> + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); #endif >>> +#ifdef CONFIG_LS102XA >>> + case SOC_VER_LS1020: >>> + case SOC_VER_LS1021: >>> + case SOC_VER_LS1022: >>> + case SOC_VER_SLS1020: >>> + return IS_SVR_REV(svr, 2, 0); >>> +#endif >>> + } >>> + return false; >>> +} >>> + >>> #endif >>> diff --git a/drivers/usb/host/xhci-dwc3.c >>> b/drivers/usb/host/xhci-dwc3.c index 33961cd..adbd9b5 100644 >>> --- a/drivers/usb/host/xhci-dwc3.c >>> +++ b/drivers/usb/host/xhci-dwc3.c >>> @@ -97,3 +97,8 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val) >>> setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL | >>> GFLADJ_30MHZ(val)); >>> } >>> + >>> +void dwc3_set_rxdetect_power_mode(struct dwc3 *dwc3_reg, u32 val) { >>> + setbits_le32(&dwc3_reg->g_usb3pipectl[0], val); >> >> So what would happen if I wanted to clean some bits instead ? > > Setting the Rx detect in P2 mode is a one time job, > and it does not change. Hence, IMO, the clear bit > functionality is not required.
Until an SoC comes which has some bits set there and someone wants to clear them . At which point, this code will serve as a trap . >> Why do you even need a dedicated function to write a single register? >> > > The dwc3 phy for the specific controller version This should be explicitly documented with a comment here. > does not reliably > support Rx Detect in P3 mode(P3 is the default setting). So, this > setting can be used by any other Soc, apart from freescale. IMO, this > function is required. So why won't such a system call single register write directly ? >>> +} >>> diff --git a/drivers/usb/host/xhci-fsl.c b/drivers/usb/host/xhci-fsl.c >>> index 0e3e056..9297ced 100644 >>> --- a/drivers/usb/host/xhci-fsl.c >>> +++ b/drivers/usb/host/xhci-fsl.c >>> @@ -84,6 +84,14 @@ static int fsl_xhci_core_init(struct fsl_xhci *fsl_xhci) >>> /* Change beat burst and outstanding pipelined transfers requests */ >>> fsl_xhci_set_beat_burst_length(fsl_xhci->dwc3_reg); >>> >>> + /* >>> + * A-010151: USB controller to configure USB in P2 mode >>> + * whenever the Receive Detect feature is required >>> + */ >>> + if (has_erratum_a010151()) >>> + dwc3_set_rxdetect_power_mode(fsl_xhci->dwc3_reg, >>> + DWC3_GUSB3PIPECTL_DISRXDETP3); >> >> Can't you parse these errata infos from device tree ? >> > > Currently, all the freescale Socs using this controller are not using DM. I am asking about device tree, not driver model. These two are orthogonal. > Shall we proceed with this solution currently, and then when the DM is > supported by all Socs, modify the implementation according to device tree? > What do you suggest? > [...] -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot