io.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0+
  3. */
  4. #ifndef _LINUX_IO_H
  5. #define _LINUX_IO_H
  6. #include <linux/compiler.h>
  7. #include <linux/types.h>
  8. #include <asm/io.h>
  9. static inline u8 ioread8(const volatile void __iomem *addr)
  10. {
  11. return readb(addr);
  12. }
  13. static inline u16 ioread16(const volatile void __iomem *addr)
  14. {
  15. return readw(addr);
  16. }
  17. static inline u32 ioread32(const volatile void __iomem *addr)
  18. {
  19. return readl(addr);
  20. }
  21. #ifdef CONFIG_64BIT
  22. static inline u64 ioread64(const volatile void __iomem *addr)
  23. {
  24. return readq(addr);
  25. }
  26. #endif /* CONFIG_64BIT */
  27. static inline void iowrite8(u8 value, volatile void __iomem *addr)
  28. {
  29. writeb(value, addr);
  30. }
  31. static inline void iowrite16(u16 value, volatile void __iomem *addr)
  32. {
  33. writew(value, addr);
  34. }
  35. static inline void iowrite32(u32 value, volatile void __iomem *addr)
  36. {
  37. writel(value, addr);
  38. }
  39. #ifdef CONFIG_64BIT
  40. static inline void iowrite64(u64 value, volatile void __iomem *addr)
  41. {
  42. writeq(value, addr);
  43. }
  44. #endif /* CONFIG_64BIT */
  45. #ifndef CONFIG_HAVE_ARCH_IOREMAP
  46. static inline void __iomem *ioremap(resource_size_t offset,
  47. resource_size_t size)
  48. {
  49. return (void __iomem *)(unsigned long)offset;
  50. }
  51. static inline void iounmap(void __iomem *addr)
  52. {
  53. }
  54. #define devm_ioremap(dev, offset, size) ioremap(offset, size)
  55. #endif
  56. #endif /* _LINUX_IO_H */