> > > > Since the FTM will be in BE mode on LS1 platform, but will be in LE mode > > On LS2 platform. > > > > And ftm_clocksource_read_up() will adapt to this different. > > You are missing the point. Why do you want a conditional in a hot > path? You know at init time whether the thing is BE or LE, so you can > have separate functions for BE/LE or whatever and register that with > clocksource_mmio_init(). i.e. > > if (be) > clocksource_mmio_init(....., cs_read_be); > else if (le) > clocksource_mmio_init(....., cs_read_le); > else if (magic) > clocksource_mmio_init(....., cs_read_magic); >
There already has the following access interfaces: static inline u32 ftm_readl(void __iomem *addr) { if (priv->big_endian) return ioread32be(addr); else return ioread32(addr); } static inline void ftm_writel(u32 val, void __iomem *addr) { if (priv->big_endian) iowrite32be(val, addr); else iowrite32(val, addr); } So I added the following code: static cycle_t ftm_clocksource_read_up(struct clocksource *c) { return ftm_readl(priv->clksrc_base + FTM_CNT) & 0xffff; } clocksource_mmio_init(.....,ftm_clocksource_read_up); Is this okay ? Thanks, BRs Xiubo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/