Merge tag 'mmc-v5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
[sfrench/cifs-2.6.git] / arch / powerpc / include / asm / dcr-mmio.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * (c) Copyright 2006 Benjamin Herrenschmidt, IBM Corp.
4  *                    <benh@kernel.crashing.org>
5  */
6
7 #ifndef _ASM_POWERPC_DCR_MMIO_H
8 #define _ASM_POWERPC_DCR_MMIO_H
9 #ifdef __KERNEL__
10
11 #include <asm/io.h>
12
13 typedef struct {
14         void __iomem *token;
15         unsigned int stride;
16         unsigned int base;
17 } dcr_host_mmio_t;
18
19 static inline bool dcr_map_ok_mmio(dcr_host_mmio_t host)
20 {
21         return host.token != NULL;
22 }
23
24 extern dcr_host_mmio_t dcr_map_mmio(struct device_node *dev,
25                                     unsigned int dcr_n,
26                                     unsigned int dcr_c);
27 extern void dcr_unmap_mmio(dcr_host_mmio_t host, unsigned int dcr_c);
28
29 static inline u32 dcr_read_mmio(dcr_host_mmio_t host, unsigned int dcr_n)
30 {
31         return in_be32(host.token + ((host.base + dcr_n) * host.stride));
32 }
33
34 static inline void dcr_write_mmio(dcr_host_mmio_t host,
35                                   unsigned int dcr_n,
36                                   u32 value)
37 {
38         out_be32(host.token + ((host.base + dcr_n) * host.stride), value);
39 }
40
41 #endif /* __KERNEL__ */
42 #endif /* _ASM_POWERPC_DCR_MMIO_H */
43
44