
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