]>
Commit | Line | Data |
---|---|---|
e7cc9a73 MD |
1 | #ifndef __ASM_SH_IO_TRAPPED_H |
2 | #define __ASM_SH_IO_TRAPPED_H | |
3 | ||
4 | #include <linux/list.h> | |
5 | #include <linux/ioport.h> | |
6 | #include <asm/page.h> | |
7 | ||
8 | #define IO_TRAPPED_MAGIC 0xfeedbeef | |
9 | ||
10 | struct trapped_io { | |
11 | unsigned int magic; | |
12 | struct resource *resource; | |
13 | unsigned int num_resources; | |
14 | unsigned int minimum_bus_width; | |
15 | struct list_head list; | |
16 | void __iomem *virt_base; | |
17 | } __aligned(PAGE_SIZE); | |
18 | ||
19 | #ifdef CONFIG_IO_TRAPPED | |
20 | int register_trapped_io(struct trapped_io *tiop); | |
21 | int handle_trapped_io(struct pt_regs *regs, unsigned long address); | |
22 | ||
23 | void __iomem *match_trapped_io_handler(struct list_head *list, | |
24 | unsigned long offset, | |
25 | unsigned long size); | |
26 | ||
27 | #ifdef CONFIG_HAS_IOMEM | |
28 | extern struct list_head trapped_mem; | |
29 | ||
30 | static inline void __iomem * | |
31 | __ioremap_trapped(unsigned long offset, unsigned long size) | |
32 | { | |
33 | return match_trapped_io_handler(&trapped_mem, offset, size); | |
34 | } | |
35 | #else | |
36 | #define __ioremap_trapped(offset, size) NULL | |
37 | #endif | |
38 | ||
ce816fa8 | 39 | #ifdef CONFIG_HAS_IOPORT_MAP |
e7cc9a73 MD |
40 | extern struct list_head trapped_io; |
41 | ||
42 | static inline void __iomem * | |
43 | __ioport_map_trapped(unsigned long offset, unsigned long size) | |
44 | { | |
45 | return match_trapped_io_handler(&trapped_io, offset, size); | |
46 | } | |
47 | #else | |
48 | #define __ioport_map_trapped(offset, size) NULL | |
49 | #endif | |
50 | ||
51 | #else | |
52 | #define register_trapped_io(tiop) (-1) | |
53 | #define handle_trapped_io(tiop, address) 0 | |
54 | #define __ioremap_trapped(offset, size) NULL | |
55 | #define __ioport_map_trapped(offset, size) NULL | |
56 | #endif | |
57 | ||
58 | #endif /* __ASM_SH_IO_TRAPPED_H */ |