On 08/11/2017 12:26 AM, Ran Wang wrote: > +static void erratum_a009008(void) > +{ > +#ifdef CONFIG_SYS_FSL_ERRATUM_A009008 > + u32 __iomem *scfg = (u32 __iomem *)SCFG_BASE; > +#if defined(CONFIG_ARCH_LS1043A) || defined(CONFIG_ARCH_LS1046A) > + u32 val = scfg_in32(scfg + SCFG_USB3PRM1CR_USB1 / 4); > + > + val &= ~(0xF << 6); > + scfg_out32(scfg + SCFG_USB3PRM1CR_USB1 / 4, val|(USB_TXVREFTUNE << 6)); > + val = scfg_in32(scfg + SCFG_USB3PRM1CR_USB2 / 4); > + val &= ~(0xF << 6); > + scfg_out32(scfg + SCFG_USB3PRM1CR_USB2 / 4, val|(USB_TXVREFTUNE << 6)); > + val = scfg_in32(scfg + SCFG_USB3PRM1CR_USB3 / 4); > + val &= ~(0xF << 6); > + scfg_out32(scfg + SCFG_USB3PRM1CR_USB3 / 4, val|(USB_TXVREFTUNE << 6)); > +#elif defined(CONFIG_ARCH_LS2080A) > + u32 val = scfg_in32(scfg + SCFG_USB3PRM1CR / 4); > + > + val &= ~(0xF << 6); > + scfg_out32(scfg + SCFG_USB3PRM1CR / 4, val|(USB_TXVREFTUNE << 6)); > +#endif > +#endif /* CONFIG_SYS_FSL_ERRATUM_A009008 */ > +}
Ran, Wouldn't it be cleaner to make an inline function like this static inline void usb_errata_a009008(u32 __iomem *scfg, u32 offset) { u32 val; val = scfg_in32(scfg + offset / 4) & ~(0xF << 6); val |= USB_TXVREFTUNE << 6; scfg_out32(scfg + offset / 4, val); } Then your function can be rewritten as static void erratum_a009008(void) { #ifdef CONFIG_SYS_FSL_ERRATUM_A009008 u32 __iomem *scfg = (u32 __iomem *)SCFG_BASE; #if defined(CONFIG_ARCH_LS1043A) || defined(CONFIG_ARCH_LS1046A) usb_errata_a009008(scfg, SCFG_USB3PRM1CR_USB1); usb_errata_a009008(scfg, SCFG_USB3PRM1CR_USB2); usb_errata_a009008(scfg, SCFG_USB3PRM1CR_USB3); usb_errata_a009008(scfg, SCFG_USB3PRM1CR_USB4); #elif defined(CONFIG_ARCH_LS2080A) usb_errata_a009008(scfg, SCFG_USB3PRM1CR); #else #error Platform not defined #endif #endif } York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot