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