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
dcr_map_ok_mmio(dcr_host_mmio_t host)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
dcr_read_mmio(dcr_host_mmio_t host,unsigned int dcr_n)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
dcr_write_mmio(dcr_host_mmio_t host,unsigned int dcr_n,u32 value)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
45