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

Reply via email to