#ifndef _ASM_X86_IO_H
#define _ASM_X86_IO_H
#include <linux/string.h>
#include <linux/compiler.h>
#include <linux/cc_platform.h>
#include <asm/page.h>
#include <asm/early_ioremap.h>
#include <asm/pgtable_types.h>
#include <asm/shared/io.h>
#include <asm/special_insns.h>
#define build_mmio_read(name, size, type, reg, barrier) …
#define build_mmio_write(name, size, type, reg, barrier) …
build_mmio_read(…)
build_mmio_read(…)
build_mmio_read(…)
build_mmio_read(…)
build_mmio_read(…)
build_mmio_read(…)
build_mmio_write(…)
build_mmio_write(…)
build_mmio_write(…)
build_mmio_write(…)
build_mmio_write(…)
build_mmio_write(…)
#define readb …
#define readw …
#define readl …
#define readb_relaxed(a) …
#define readw_relaxed(a) …
#define readl_relaxed(a) …
#define __raw_readb …
#define __raw_readw …
#define __raw_readl …
#define writeb …
#define writew …
#define writel …
#define writeb_relaxed(v, a) …
#define writew_relaxed(v, a) …
#define writel_relaxed(v, a) …
#define __raw_writeb …
#define __raw_writew …
#define __raw_writel …
#ifdef CONFIG_X86_64
build_mmio_read(…)
build_mmio_read(…)
build_mmio_write(…)
build_mmio_write(…)
#define readq_relaxed(a) …
#define writeq_relaxed(v, a) …
#define __raw_readq …
#define __raw_writeq …
#define readq …
#define writeq …
#endif
#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
static inline phys_addr_t virt_to_phys(volatile void *address)
{ … }
#define virt_to_phys …
static inline void *phys_to_virt(phys_addr_t address)
{ … }
#define phys_to_virt …
#define page_to_phys(page) …
static inline unsigned int isa_virt_to_bus(volatile void *address)
{ … }
#define isa_bus_to_virt …
extern void __iomem *ioremap_uc(resource_size_t offset, unsigned long size);
#define ioremap_uc …
extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
#define ioremap_cache …
extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size, unsigned long prot_val);
#define ioremap_prot …
extern void __iomem *ioremap_encrypted(resource_size_t phys_addr, unsigned long size);
#define ioremap_encrypted …
void __iomem *ioremap(resource_size_t offset, unsigned long size);
#define ioremap …
extern void iounmap(volatile void __iomem *addr);
#define iounmap …
#ifdef __KERNEL__
void memcpy_fromio(void *, const volatile void __iomem *, size_t);
void memcpy_toio(volatile void __iomem *, const void *, size_t);
void memset_io(volatile void __iomem *, int, size_t);
#define memcpy_fromio …
#define memcpy_toio …
#define memset_io …
#ifdef CONFIG_X86_64
static inline void __iowrite32_copy(void __iomem *to, const void *from,
size_t count)
{ … }
#define __iowrite32_copy …
#endif
#define __ISA_IO_base …
#endif
extern void native_io_delay(void);
extern int io_delay_type;
extern void io_delay_init(void);
#if defined(CONFIG_PARAVIRT)
#include <asm/paravirt.h>
#else
static inline void slow_down_io(void)
{
native_io_delay();
#ifdef REALLY_SLOW_IO
native_io_delay();
native_io_delay();
native_io_delay();
#endif
}
#endif
#define BUILDIO …
BUILDIO
BUILDIO
BUILDIO
#undef BUILDIO
#define inb_p …
#define inw_p …
#define inl_p …
#define insb …
#define insw …
#define insl …
#define outb_p …
#define outw_p …
#define outl_p …
#define outsb …
#define outsw …
#define outsl …
extern void *xlate_dev_mem_ptr(phys_addr_t phys);
extern void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr);
#define xlate_dev_mem_ptr …
#define unxlate_dev_mem_ptr …
extern int ioremap_change_attr(unsigned long vaddr, unsigned long size,
enum page_cache_mode pcm);
extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
#define ioremap_wc …
extern void __iomem *ioremap_wt(resource_size_t offset, unsigned long size);
#define ioremap_wt …
extern bool is_early_ioremap_ptep(pte_t *ptep);
#define IO_SPACE_LIMIT …
#include <asm-generic/io.h>
#undef PCI_IOBASE
#ifdef CONFIG_MTRR
extern int __must_check arch_phys_wc_index(int handle);
#define arch_phys_wc_index …
extern int __must_check arch_phys_wc_add(unsigned long base,
unsigned long size);
extern void arch_phys_wc_del(int handle);
#define arch_phys_wc_add …
#endif
#ifdef CONFIG_X86_PAT
extern int arch_io_reserve_memtype_wc(resource_size_t start, resource_size_t size);
extern void arch_io_free_memtype_wc(resource_size_t start, resource_size_t size);
#define arch_io_reserve_memtype_wc …
#endif
#ifdef CONFIG_AMD_MEM_ENCRYPT
extern bool arch_memremap_can_ram_remap(resource_size_t offset,
unsigned long size,
unsigned long flags);
#define arch_memremap_can_ram_remap …
extern bool phys_mem_access_encrypted(unsigned long phys_addr,
unsigned long size);
#else
static inline bool phys_mem_access_encrypted(unsigned long phys_addr,
unsigned long size)
{
return true;
}
#endif
static inline void iosubmit_cmds512(void __iomem *dst, const void *src,
size_t count)
{ … }
#endif