On Monday 18 April 2011, Richard Cochran wrote:
On Mon, Apr 18, 2011 at 08:56:03AM +0200, Arnd Bergmann wrote:
quoted
On Monday 18 April 2011, Richard Cochran wrote:
quoted
+
+ lo = __raw_readl(®s->channel[ch].src_uuid_lo);
+ hi = __raw_readl(®s->channel[ch].src_uuid_hi);
+
I guess you should use readl(), not __raw_readl() here. The __raw_* functions
are not meant for device drivers.
Krzysztof had a different opinion about this.
https://lkml.org/lkml/2011/1/8/67
Anyway, it is his driver, and I just followed what he does elsewhere
in the driver. It make sense to me to keep the driver consistent.
Maybe we should make the change throughout?
It would certainly be useful to fix it up. I now realized that this driver
supports both big-endian and little-endian configurations, so just using
readl() is certainly broken.
There should probably be an ixp specific version of the safe I/O accessors
to deal with it on all on-chip peripherals in a safe way.
Arnd