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 45