1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * arch/sh/kernel/ioport.c 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2000 Niibe Yutaka 6*4882a593Smuzhiyun * Copyright (C) 2005 - 2007 Paul Mundt 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun #include <linux/module.h> 9*4882a593Smuzhiyun #include <linux/io.h> 10*4882a593Smuzhiyun #include <asm/io_trapped.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun unsigned long sh_io_port_base __read_mostly = -1; 13*4882a593Smuzhiyun EXPORT_SYMBOL(sh_io_port_base); 14*4882a593Smuzhiyun __ioport_map(unsigned long addr,unsigned int size)15*4882a593Smuzhiyunvoid __iomem *__ioport_map(unsigned long addr, unsigned int size) 16*4882a593Smuzhiyun { 17*4882a593Smuzhiyun if (sh_mv.mv_ioport_map) 18*4882a593Smuzhiyun return sh_mv.mv_ioport_map(addr, size); 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun return (void __iomem *)(addr + sh_io_port_base); 21*4882a593Smuzhiyun } 22*4882a593Smuzhiyun EXPORT_SYMBOL(__ioport_map); 23*4882a593Smuzhiyun ioport_map(unsigned long port,unsigned int nr)24*4882a593Smuzhiyunvoid __iomem *ioport_map(unsigned long port, unsigned int nr) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun void __iomem *ret; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun ret = __ioport_map_trapped(port, nr); 29*4882a593Smuzhiyun if (ret) 30*4882a593Smuzhiyun return ret; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun return __ioport_map(port, nr); 33*4882a593Smuzhiyun } 34*4882a593Smuzhiyun EXPORT_SYMBOL(ioport_map); 35*4882a593Smuzhiyun ioport_unmap(void __iomem * addr)36*4882a593Smuzhiyunvoid ioport_unmap(void __iomem *addr) 37*4882a593Smuzhiyun { 38*4882a593Smuzhiyun if (sh_mv.mv_ioport_unmap) 39*4882a593Smuzhiyun sh_mv.mv_ioport_unmap(addr); 40*4882a593Smuzhiyun } 41*4882a593Smuzhiyun EXPORT_SYMBOL(ioport_unmap); 42