On 06/02/2016 08:54 AM, Sriram Dash wrote: > This patch is doing the following: > 1. Implementing the errata for LS2080. > 2. Adding fixup for fdt for LS2080. > > Signed-off-by: Sriram Dash <sriram.d...@nxp.com> > Signed-off-by: Rajesh Bhagat <rajesh.bha...@nxp.com> > --- > Changes in v2: > - Reworked for changes done in errata checking code.
[...] > diff --git a/drivers/usb/common/fsl-dt-fixup.c > b/drivers/usb/common/fsl-dt-fixup.c > index 7c039cb..fd85439 100644 > --- a/drivers/usb/common/fsl-dt-fixup.c > +++ b/drivers/usb/common/fsl-dt-fixup.c > @@ -125,6 +125,7 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) > int usb_erratum_a007075_off = -1; > int usb_erratum_a007792_off = -1; > int usb_erratum_a005697_off = -1; > + int usb_erratum_a008751_off = -1; Will there be an ever-growing list of unused variables here ? > int usb_mode_off = -1; > int usb_phy_off = -1; > char str[5]; > @@ -190,6 +191,8 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) > "a007792", has_erratum_a007792); > fdt_fixup_erratum(&usb_erratum_a005697_off, blob, > "a005697", has_erratum_a005697); > + fdt_fixup_erratum(&usb_erratum_a008751_off, blob, > + "a008751", has_erratum_a008751); > > } > } > diff --git a/drivers/usb/common/fsl-errata.c b/drivers/usb/common/fsl-errata.c > index 95918fc..ebe60a8 100644 > --- a/drivers/usb/common/fsl-errata.c > +++ b/drivers/usb/common/fsl-errata.c > @@ -175,4 +175,19 @@ bool has_erratum_a004477(void) > return false; > } > > +bool has_erratum_a008751(void) > +{ > + u32 svr = get_svr(); > + u32 soc = SVR_SOC_VER(svr); > + > + switch (soc) { > +#ifdef CONFIG_ARM64 > + case SVR_LS2080: > + case SVR_LS2085: > + return IS_SVR_REV(svr, 1, 0); > +#endif > + } > + return false; > +} > + > #endif > diff --git a/drivers/usb/host/xhci-fsl.c b/drivers/usb/host/xhci-fsl.c > index 05f09d7..d55ed87 100644 > --- a/drivers/usb/host/xhci-fsl.c > +++ b/drivers/usb/host/xhci-fsl.c > @@ -15,6 +15,8 @@ > #include <linux/usb/xhci-fsl.h> > #include <linux/usb/dwc3.h> > #include "xhci.h" > +#include <fsl_errata.h> > +#include <fsl_usb.h> > > /* Declare global data pointer */ > DECLARE_GLOBAL_DATA_PTR; > @@ -27,6 +29,31 @@ __weak int __board_usb_init(int index, enum usb_init_type > init) > return 0; > } > > +static inline bool erratum_a008751(void) Drop the inline, let compiler decide. Also, make this an int instead of bool and return 0 on success, 1 on error. > +{ > +#if defined(CONFIG_TARGET_LS2080AQDS) || defined(CONFIG_TARGET_LS2080ARDB) > + u32 __iomem *scfg = (u32 __iomem *)SCFG_BASE; > + writel(SCFG_USB3PRM1CR_INIT, scfg + SCFG_USB3PRM1CR / 4); > + return true; > +#endif > + return false; > +} > + > +#define APPLY_ERRATUM(id) \ > +do { \ > + bool ret; \ > + if (has_erratum_##id()) { \ > + ret = erratum_##id(); \ > + if (ret <= 0) \ > + puts("Failed to apply erratum " #id "\n"); \ > + } \ > +} while (0) Turn this into a function. > +static void fsl_apply_xhci_errata(void) > +{ > + APPLY_ERRATUM(a008751); > +} > + > static int fsl_xhci_core_init(struct fsl_xhci *fsl_xhci) > { > int ret = 0; > @@ -69,6 +96,8 @@ int xhci_hcd_init(int index, struct xhci_hccr **hccr, > struct xhci_hcor **hcor) > return ret; > } > > + fsl_apply_xhci_errata(); > + > ret = fsl_xhci_core_init(ctx); > if (ret < 0) { > puts("Failed to initialize xhci\n"); > diff --git a/include/fsl_usb.h b/include/fsl_usb.h > index d183349..fc72fb9 100644 > --- a/include/fsl_usb.h > +++ b/include/fsl_usb.h > @@ -94,5 +94,6 @@ bool has_erratum_a007798(void); > bool has_erratum_a007792(void); > bool has_erratum_a005697(void); > bool has_erratum_a004477(void); > +bool has_erratum_a008751(void); > #endif > #endif /*_ASM_FSL_USB_H_ */ > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot