blob: ad170886c9aac1e9af115d7fc4f5691216d889c5 [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Russell Kinga09e64f2008-08-05 16:14:15 +01002/*
3 * arch/arm/mach-ebsa110/include/mach/io.h
4 *
5 * Copyright (C) 1997,1998 Russell King
6 *
Russell Kinga09e64f2008-08-05 16:14:15 +01007 * Modifications:
8 * 06-Dec-1997 RMK Created.
9 */
10#ifndef __ASM_ARM_ARCH_IO_H
11#define __ASM_ARM_ARCH_IO_H
12
Russell Kinga09e64f2008-08-05 16:14:15 +010013u8 __inb8(unsigned int port);
14void __outb8(u8 val, unsigned int port);
15
16u8 __inb16(unsigned int port);
17void __outb16(u8 val, unsigned int port);
18
19u16 __inw(unsigned int port);
20void __outw(u16 val, unsigned int port);
21
22u32 __inl(unsigned int port);
23void __outl(u32 val, unsigned int port);
24
25u8 __readb(const volatile void __iomem *addr);
26u16 __readw(const volatile void __iomem *addr);
27u32 __readl(const volatile void __iomem *addr);
28
Thierry Reding2cd0f552014-10-01 14:13:33 +020029void __writeb(u8 val, volatile void __iomem *addr);
30void __writew(u16 val, volatile void __iomem *addr);
31void __writel(u32 val, volatile void __iomem *addr);
Russell Kinga09e64f2008-08-05 16:14:15 +010032
33/*
34 * Argh, someone forgot the IOCS16 line. We therefore have to handle
35 * the byte stearing by selecting the correct byte IO functions here.
36 */
37#ifdef ISA_SIXTEEN_BIT_PERIPHERAL
38#define inb(p) __inb16(p)
39#define outb(v,p) __outb16(v,p)
40#else
41#define inb(p) __inb8(p)
42#define outb(v,p) __outb8(v,p)
43#endif
44
45#define inw(p) __inw(p)
46#define outw(v,p) __outw(v,p)
47
48#define inl(p) __inl(p)
49#define outl(v,p) __outl(v,p)
50
51#define readb(b) __readb(b)
52#define readw(b) __readw(b)
53#define readl(b) __readl(b)
54#define readb_relaxed(addr) readb(addr)
55#define readw_relaxed(addr) readw(addr)
56#define readl_relaxed(addr) readl(addr)
57
58#define writeb(v,b) __writeb(v,b)
59#define writew(v,b) __writew(v,b)
60#define writel(v,b) __writel(v,b)
61
Thierry Reding2cd0f552014-10-01 14:13:33 +020062#define insb insb
Russell Kinga09e64f2008-08-05 16:14:15 +010063extern void insb(unsigned int port, void *buf, int sz);
Thierry Reding2cd0f552014-10-01 14:13:33 +020064#define insw insw
Russell Kinga09e64f2008-08-05 16:14:15 +010065extern void insw(unsigned int port, void *buf, int sz);
Thierry Reding2cd0f552014-10-01 14:13:33 +020066#define insl insl
Russell Kinga09e64f2008-08-05 16:14:15 +010067extern void insl(unsigned int port, void *buf, int sz);
68
Thierry Reding2cd0f552014-10-01 14:13:33 +020069#define outsb outsb
Russell Kinga09e64f2008-08-05 16:14:15 +010070extern void outsb(unsigned int port, const void *buf, int sz);
Thierry Reding2cd0f552014-10-01 14:13:33 +020071#define outsw outsw
Russell Kinga09e64f2008-08-05 16:14:15 +010072extern void outsw(unsigned int port, const void *buf, int sz);
Thierry Reding2cd0f552014-10-01 14:13:33 +020073#define outsl outsl
Russell Kinga09e64f2008-08-05 16:14:15 +010074extern void outsl(unsigned int port, const void *buf, int sz);
75
76/* can't support writesb atm */
Thierry Reding2cd0f552014-10-01 14:13:33 +020077#define writesw writesw
78extern void writesw(volatile void __iomem *addr, const void *data, int wordlen);
79#define writesl writesl
80extern void writesl(volatile void __iomem *addr, const void *data, int longlen);
Russell Kinga09e64f2008-08-05 16:14:15 +010081
82/* can't support readsb atm */
Thierry Reding2cd0f552014-10-01 14:13:33 +020083#define readsw readsw
84extern void readsw(const volatile void __iomem *addr, void *data, int wordlen);
85
86#define readsl readsl
87extern void readsl(const volatile void __iomem *addr, void *data, int longlen);
Russell Kinga09e64f2008-08-05 16:14:15 +010088
89#endif