diff options
author | Robin Murphy <robin.murphy@arm.com> | 2016-04-26 11:38:20 +0100 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2016-05-03 18:23:02 +0100 |
commit | e511267bc25e18926826e7cccdf7872bcbb4776a (patch) | |
tree | ae8d3be2bee8b89cfaa309a88ebd229f76b5f95c /include/asm-generic | |
parent | f0cfffc48cac516e37711786227f6808491913a5 (diff) | |
download | lwn-e511267bc25e18926826e7cccdf7872bcbb4776a.tar.gz lwn-e511267bc25e18926826e7cccdf7872bcbb4776a.zip |
io-64-nonatomic: Add relaxed accessor variants
Whilst commit 9439eb3ab9d1 ("asm-generic: io: implement relaxed
accessor macros as conditional wrappers") makes the *_relaxed forms of
I/O accessors universally available to drivers, in cases where writeq()
is implemented via the io-64-nonatomic helpers, writeq_relaxed() will
end up falling back to writel() regardless of whether writel_relaxed()
is available (identically for s/write/read/).
Add corresponding relaxed forms of the nonatomic helpers to delegate
to the equivalent 32-bit accessors as appropriate. We also need to fix
io.h to avoid defining default relaxed variants if the basic accessors
themselves don't exist.
CC: Christoph Hellwig <hch@lst.de>
CC: Darren Hart <dvhart@linux.intel.com>
CC: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/io.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index eed3bbe88c8a..002b81f6f2bc 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -191,7 +191,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) #define readl_relaxed readl #endif -#ifndef readq_relaxed +#if defined(readq) && !defined(readq_relaxed) #define readq_relaxed readq #endif @@ -207,7 +207,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) #define writel_relaxed writel #endif -#ifndef writeq_relaxed +#if defined(writeq) && !defined(writeq_relaxed) #define writeq_relaxed writeq #endif |