18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * S390 version 48c2ecf20Sopenharmony_ci * Copyright IBM Corp. 1999 58c2ecf20Sopenharmony_ci * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Derived from "include/asm-i386/io.h" 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef _S390_IO_H 118c2ecf20Sopenharmony_ci#define _S390_IO_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/kernel.h> 148c2ecf20Sopenharmony_ci#include <asm/page.h> 158c2ecf20Sopenharmony_ci#include <asm/pgtable.h> 168c2ecf20Sopenharmony_ci#include <asm/pci_io.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define xlate_dev_mem_ptr xlate_dev_mem_ptr 198c2ecf20Sopenharmony_civoid *xlate_dev_mem_ptr(phys_addr_t phys); 208c2ecf20Sopenharmony_ci#define unxlate_dev_mem_ptr unxlate_dev_mem_ptr 218c2ecf20Sopenharmony_civoid unxlate_dev_mem_ptr(phys_addr_t phys, void *addr); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci/* 248c2ecf20Sopenharmony_ci * Convert a virtual cached pointer to an uncached pointer 258c2ecf20Sopenharmony_ci */ 268c2ecf20Sopenharmony_ci#define xlate_dev_kmem_ptr(p) p 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#define IO_SPACE_LIMIT 0 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_civoid __iomem *ioremap_prot(phys_addr_t addr, size_t size, unsigned long prot); 318c2ecf20Sopenharmony_civoid __iomem *ioremap(phys_addr_t addr, size_t size); 328c2ecf20Sopenharmony_civoid __iomem *ioremap_wc(phys_addr_t addr, size_t size); 338c2ecf20Sopenharmony_civoid __iomem *ioremap_wt(phys_addr_t addr, size_t size); 348c2ecf20Sopenharmony_civoid iounmap(volatile void __iomem *addr); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_cistatic inline void __iomem *ioport_map(unsigned long port, unsigned int nr) 378c2ecf20Sopenharmony_ci{ 388c2ecf20Sopenharmony_ci return NULL; 398c2ecf20Sopenharmony_ci} 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistatic inline void ioport_unmap(void __iomem *p) 428c2ecf20Sopenharmony_ci{ 438c2ecf20Sopenharmony_ci} 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci/* 488c2ecf20Sopenharmony_ci * s390 needs a private implementation of pci_iomap since ioremap with its 498c2ecf20Sopenharmony_ci * offset parameter isn't sufficient. That's because BAR spaces are not 508c2ecf20Sopenharmony_ci * disjunctive on s390 so we need the bar parameter of pci_iomap to find 518c2ecf20Sopenharmony_ci * the corresponding device and create the mapping cookie. 528c2ecf20Sopenharmony_ci */ 538c2ecf20Sopenharmony_ci#define pci_iomap pci_iomap 548c2ecf20Sopenharmony_ci#define pci_iomap_range pci_iomap_range 558c2ecf20Sopenharmony_ci#define pci_iounmap pci_iounmap 568c2ecf20Sopenharmony_ci#define pci_iomap_wc pci_iomap_wc 578c2ecf20Sopenharmony_ci#define pci_iomap_wc_range pci_iomap_wc_range 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci#define ioremap ioremap 608c2ecf20Sopenharmony_ci#define ioremap_wt ioremap_wt 618c2ecf20Sopenharmony_ci#define ioremap_wc ioremap_wc 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#define memcpy_fromio(dst, src, count) zpci_memcpy_fromio(dst, src, count) 648c2ecf20Sopenharmony_ci#define memcpy_toio(dst, src, count) zpci_memcpy_toio(dst, src, count) 658c2ecf20Sopenharmony_ci#define memset_io(dst, val, count) zpci_memset_io(dst, val, count) 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci#define mmiowb() zpci_barrier() 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#define __raw_readb zpci_read_u8 708c2ecf20Sopenharmony_ci#define __raw_readw zpci_read_u16 718c2ecf20Sopenharmony_ci#define __raw_readl zpci_read_u32 728c2ecf20Sopenharmony_ci#define __raw_readq zpci_read_u64 738c2ecf20Sopenharmony_ci#define __raw_writeb zpci_write_u8 748c2ecf20Sopenharmony_ci#define __raw_writew zpci_write_u16 758c2ecf20Sopenharmony_ci#define __raw_writel zpci_write_u32 768c2ecf20Sopenharmony_ci#define __raw_writeq zpci_write_u64 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci#endif /* CONFIG_PCI */ 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci#include <asm-generic/io.h> 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci#endif 83