dcr-mmio.h (1026B)
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 13typedef struct { 14 void __iomem *token; 15 unsigned int stride; 16 unsigned int base; 17} dcr_host_mmio_t; 18 19static inline bool dcr_map_ok_mmio(dcr_host_mmio_t host) 20{ 21 return host.token != NULL; 22} 23 24extern dcr_host_mmio_t dcr_map_mmio(struct device_node *dev, 25 unsigned int dcr_n, 26 unsigned int dcr_c); 27extern void dcr_unmap_mmio(dcr_host_mmio_t host, unsigned int dcr_c); 28 29static 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 34static 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