Blame view
include/asm-generic/iomap.h
3.94 KB
b24413180 License cleanup: ... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 |
#ifndef __GENERIC_IO_H #define __GENERIC_IO_H #include <linux/linkage.h> |
dae409a27 [PATCH] add Big E... |
6 |
#include <asm/byteorder.h> |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/* * These are the "generic" interfaces for doing new-style * memory-mapped or PIO accesses. Architectures may do * their own arch-optimized versions, these just act as * wrappers around the old-style IO register access functions: * read[bwl]/write[bwl]/in[bwl]/out[bwl] * * Don't include this directly, include it from <asm/io.h>. */ /* * Read/write from/to an (offsettable) iomem cookie. It might be a PIO * access or a MMIO access, these functions don't care. The info is * encoded in the hardware mapping set up by the mapping functions * (or the cookie itself, depending on implementation and hw). * * The generic routines just encode the PIO/MMIO as part of the * cookie, and coldly assume that the MMIO IO mappings are not * in the low address range. Architectures for which this is not * true can't use this generic implementation. */ |
144b2a914 asm-generic: remo... |
29 30 31 32 33 |
extern unsigned int ioread8(void __iomem *); extern unsigned int ioread16(void __iomem *); extern unsigned int ioread16be(void __iomem *); extern unsigned int ioread32(void __iomem *); extern unsigned int ioread32be(void __iomem *); |
9e44fb181 asm-generic/io.h:... |
34 35 36 37 |
#ifdef CONFIG_64BIT extern u64 ioread64(void __iomem *); extern u64 ioread64be(void __iomem *); #endif |
1da177e4c Linux-2.6.12-rc2 |
38 |
|
79bf0cbd8 iomap: introduce ... |
39 40 41 42 43 44 45 46 47 48 |
#ifdef readq #define ioread64_lo_hi ioread64_lo_hi #define ioread64_hi_lo ioread64_hi_lo #define ioread64be_lo_hi ioread64be_lo_hi #define ioread64be_hi_lo ioread64be_hi_lo extern u64 ioread64_lo_hi(void __iomem *addr); extern u64 ioread64_hi_lo(void __iomem *addr); extern u64 ioread64be_lo_hi(void __iomem *addr); extern u64 ioread64be_hi_lo(void __iomem *addr); #endif |
144b2a914 asm-generic: remo... |
49 50 51 52 53 |
extern void iowrite8(u8, void __iomem *); extern void iowrite16(u16, void __iomem *); extern void iowrite16be(u16, void __iomem *); extern void iowrite32(u32, void __iomem *); extern void iowrite32be(u32, void __iomem *); |
9e44fb181 asm-generic/io.h:... |
54 55 56 57 |
#ifdef CONFIG_64BIT extern void iowrite64(u64, void __iomem *); extern void iowrite64be(u64, void __iomem *); #endif |
1da177e4c Linux-2.6.12-rc2 |
58 |
|
79bf0cbd8 iomap: introduce ... |
59 60 61 62 63 64 65 66 67 68 |
#ifdef writeq #define iowrite64_lo_hi iowrite64_lo_hi #define iowrite64_hi_lo iowrite64_hi_lo #define iowrite64be_lo_hi iowrite64be_lo_hi #define iowrite64be_hi_lo iowrite64be_hi_lo extern void iowrite64_lo_hi(u64 val, void __iomem *addr); extern void iowrite64_hi_lo(u64 val, void __iomem *addr); extern void iowrite64be_lo_hi(u64 val, void __iomem *addr); extern void iowrite64be_hi_lo(u64 val, void __iomem *addr); #endif |
1da177e4c Linux-2.6.12-rc2 |
69 70 71 72 73 74 75 76 77 78 79 |
/* * "string" versions of the above. Note that they * use native byte ordering for the accesses (on * the assumption that IO and memory agree on a * byte order, and CPU byteorder is irrelevant). * * They do _not_ update the port address. If you * want MMIO that copies stuff laid out in MMIO * memory across multiple ports, use "memcpy_toio()" * and friends. */ |
144b2a914 asm-generic: remo... |
80 81 82 |
extern void ioread8_rep(void __iomem *port, void *buf, unsigned long count); extern void ioread16_rep(void __iomem *port, void *buf, unsigned long count); extern void ioread32_rep(void __iomem *port, void *buf, unsigned long count); |
1da177e4c Linux-2.6.12-rc2 |
83 |
|
144b2a914 asm-generic: remo... |
84 85 86 |
extern void iowrite8_rep(void __iomem *port, const void *buf, unsigned long count); extern void iowrite16_rep(void __iomem *port, const void *buf, unsigned long count); extern void iowrite32_rep(void __iomem *port, const void *buf, unsigned long count); |
1da177e4c Linux-2.6.12-rc2 |
87 |
|
ce816fa88 Kconfig: rename H... |
88 |
#ifdef CONFIG_HAS_IOPORT_MAP |
1da177e4c Linux-2.6.12-rc2 |
89 90 91 |
/* Create a virtual mapping cookie for an IO port range */ extern void __iomem *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void __iomem *); |
82ed223c2 iomap: make IOPOR... |
92 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
93 |
|
1526a756f generic: add iore... |
94 95 96 |
#ifndef ARCH_HAS_IOREMAP_WC #define ioremap_wc ioremap_nocache #endif |
d838270e2 x86/mm, asm-gener... |
97 98 99 |
#ifndef ARCH_HAS_IOREMAP_WT #define ioremap_wt ioremap_nocache #endif |
82ed223c2 iomap: make IOPOR... |
100 |
#ifdef CONFIG_PCI |
66eab4df2 lib: add GENERIC_... |
101 |
/* Destroy a virtual mapping cookie for a PCI BAR (memory or IO) */ |
1da177e4c Linux-2.6.12-rc2 |
102 |
struct pci_dev; |
1da177e4c Linux-2.6.12-rc2 |
103 |
extern void pci_iounmap(struct pci_dev *dev, void __iomem *); |
97a29d59f [PARISC] fix comp... |
104 |
#elif defined(CONFIG_GENERIC_IOMAP) |
fea80311a iomap: make IOPOR... |
105 |
struct pci_dev; |
fea80311a iomap: make IOPOR... |
106 107 |
static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr) { } |
82ed223c2 iomap: make IOPOR... |
108 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
109 |
|
66eab4df2 lib: add GENERIC_... |
110 |
#include <asm-generic/pci_iomap.h> |
1da177e4c Linux-2.6.12-rc2 |
111 |
#endif |