On Fri, Oct 22, 2010 at 03:33:43PM -0400, Cyril Chemparathy wrote: > On 10/22/2010 08:48 AM, Arnd Bergmann wrote: > > On Friday 22 October 2010 14:39:33 Cyril Chemparathy wrote: > >>>> +/* Register Access Helpers */ > >>>> +static inline u32 ssp_read(struct ti_ssp *ssp, int reg) > >>>> +{ > >>>> + return __raw_readl(ssp->regs + reg); > >>>> +} > >>>> + > >>>> +static inline void ssp_write(struct ti_ssp *ssp, int reg, u32 val) > >>>> +{ > >>>> + __raw_writel(val, ssp->regs + reg); > >>>> +} > >>> > >>> Why are the __raw functions used here? > >>> > >> > >> These registers are to be accessed native endian at all times, and > >> therefore the le32 conversion done otherwise is inappropriate. > > > > Won't that break on out-of-order CPUs that need the extra synchronization > > done in readl/writel? > > > > AFAICS, ioremap()ed space on ARMv6 should be strongly ordered.
No. ioremap'd space is device memory on ARMv6 and above, which means if you care about the ordering of writes to device vs memory, you need barriers. Nevertheless, individual reads/writes to devices will be in program order, but writes may be delayed. _______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source