aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLogan Gunthorpe <logang@deltatee.com>2018-03-27 19:08:29 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2018-04-05 00:59:26 -0400
commit07c3d9eaa4be3a000e2b9386cf678ee78f7f7abb (patch)
treef931219a200cca9e0448fb648b4ea57026d0b4c3
parentef237039c5c86b6587ee1fd88857a24fa5978474 (diff)
powerpc: iomap.c: introduce io{read|write}64_{lo_hi|hi_lo}
These functions will be introduced into the generic iomap.c so they can deal with PIO accesses in hi-lo/lo-hi variants. Thus, the powerpc version of iomap.c will need to provide the same functions even though, in this arch, they are identical to the regular io{read|write}64 functions. Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Tested-by: Horia Geantă <horia.geanta@nxp.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/kernel/iomap.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/iomap.c b/arch/powerpc/kernel/iomap.c
index aab456ed2a00..5ac84efc6ede 100644
--- a/arch/powerpc/kernel/iomap.c
+++ b/arch/powerpc/kernel/iomap.c
@@ -45,12 +45,32 @@ u64 ioread64(void __iomem *addr)
45{ 45{
46 return readq(addr); 46 return readq(addr);
47} 47}
48u64 ioread64_lo_hi(void __iomem *addr)
49{
50 return readq(addr);
51}
52u64 ioread64_hi_lo(void __iomem *addr)
53{
54 return readq(addr);
55}
48u64 ioread64be(void __iomem *addr) 56u64 ioread64be(void __iomem *addr)
49{ 57{
50 return readq_be(addr); 58 return readq_be(addr);
51} 59}
60u64 ioread64be_lo_hi(void __iomem *addr)
61{
62 return readq_be(addr);
63}
64u64 ioread64be_hi_lo(void __iomem *addr)
65{
66 return readq_be(addr);
67}
52EXPORT_SYMBOL(ioread64); 68EXPORT_SYMBOL(ioread64);
69EXPORT_SYMBOL(ioread64_lo_hi);
70EXPORT_SYMBOL(ioread64_hi_lo);
53EXPORT_SYMBOL(ioread64be); 71EXPORT_SYMBOL(ioread64be);
72EXPORT_SYMBOL(ioread64be_lo_hi);
73EXPORT_SYMBOL(ioread64be_hi_lo);
54#endif /* __powerpc64__ */ 74#endif /* __powerpc64__ */
55 75
56void iowrite8(u8 val, void __iomem *addr) 76void iowrite8(u8 val, void __iomem *addr)
@@ -83,12 +103,32 @@ void iowrite64(u64 val, void __iomem *addr)
83{ 103{
84 writeq(val, addr); 104 writeq(val, addr);
85} 105}
106void iowrite64_lo_hi(u64 val, void __iomem *addr)
107{
108 writeq(val, addr);
109}
110void iowrite64_hi_lo(u64 val, void __iomem *addr)
111{
112 writeq(val, addr);
113}
86void iowrite64be(u64 val, void __iomem *addr) 114void iowrite64be(u64 val, void __iomem *addr)
87{ 115{
88 writeq_be(val, addr); 116 writeq_be(val, addr);
89} 117}
118void iowrite64be_lo_hi(u64 val, void __iomem *addr)
119{
120 writeq_be(val, addr);
121}
122void iowrite64be_hi_lo(u64 val, void __iomem *addr)
123{
124 writeq_be(val, addr);
125}
90EXPORT_SYMBOL(iowrite64); 126EXPORT_SYMBOL(iowrite64);
127EXPORT_SYMBOL(iowrite64_lo_hi);
128EXPORT_SYMBOL(iowrite64_hi_lo);
91EXPORT_SYMBOL(iowrite64be); 129EXPORT_SYMBOL(iowrite64be);
130EXPORT_SYMBOL(iowrite64be_lo_hi);
131EXPORT_SYMBOL(iowrite64be_hi_lo);
92#endif /* __powerpc64__ */ 132#endif /* __powerpc64__ */
93 133
94/* 134/*