ioport.c 869 B

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