linux/arch/powerpc/include/asm/dcr-mmio.h
<<
>>
Prefs
   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
  45