On Wed, 2015-11-04 at 09:53 +0100, Arnd Bergmann wrote: > On Wednesday 04 November 2015 14:48:24 Liu Gang wrote: > > > > +static bool gpio_little_endian; > > +static inline u32 gpio_in32(void __iomem *addr) > > +{ > > + u32 val; > > + > > + if (gpio_little_endian) > > + val = ioread32(addr); > > + else > > + val = ioread32be(addr); > > + > > + return val; > > +} > > + > > +static inline void gpio_out32(u32 val, void __iomem *addr) > > +{ > > + if (gpio_little_endian) > > + iowrite32(val, addr); > > + else > > + iowrite32be(val, addr); > > +} > > I guess this is fixed per architecture, so you could also do this as > > static inline void gpio_out32(u32 val, void __iomem *addr) > { > if (IS_ENABLED(CONFIG_ARM)) > iowrite32(val, addr); > else if (IS_ENABLED(CONFIG_PPC) > iowrite32be(val, addr); > else > BUG(); > } Unfortunately that guess is wrong. Some of our ARM chips have big-endian I/O and some have little-endian I/O. -Scott -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html