mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef __ASM_SH_IO_TRAPPED_H |
|
#define __ASM_SH_IO_TRAPPED_H |
|
|
|
#include <linux/list.h> |
|
#include <linux/ioport.h> |
|
#include <asm/page.h> |
|
|
|
#define IO_TRAPPED_MAGIC 0xfeedbeef |
|
|
|
struct trapped_io { |
|
unsigned int magic; |
|
struct resource *resource; |
|
unsigned int num_resources; |
|
unsigned int minimum_bus_width; |
|
struct list_head list; |
|
void __iomem *virt_base; |
|
} __aligned(PAGE_SIZE); |
|
|
|
#ifdef CONFIG_IO_TRAPPED |
|
int register_trapped_io(struct trapped_io *tiop); |
|
int handle_trapped_io(struct pt_regs *regs, unsigned long address); |
|
|
|
void __iomem *match_trapped_io_handler(struct list_head *list, |
|
unsigned long offset, |
|
unsigned long size); |
|
|
|
#ifdef CONFIG_HAS_IOMEM |
|
extern struct list_head trapped_mem; |
|
|
|
static inline void __iomem * |
|
__ioremap_trapped(unsigned long offset, unsigned long size) |
|
{ |
|
return match_trapped_io_handler(&trapped_mem, offset, size); |
|
} |
|
#else |
|
#define __ioremap_trapped(offset, size) NULL |
|
#endif |
|
|
|
#ifdef CONFIG_HAS_IOPORT_MAP |
|
extern struct list_head trapped_io; |
|
|
|
static inline void __iomem * |
|
__ioport_map_trapped(unsigned long offset, unsigned long size) |
|
{ |
|
return match_trapped_io_handler(&trapped_io, offset, size); |
|
} |
|
#else |
|
#define __ioport_map_trapped(offset, size) NULL |
|
#endif |
|
|
|
#else |
|
#define register_trapped_io(tiop) (-1) |
|
#define handle_trapped_io(tiop, address) 0 |
|
#define __ioremap_trapped(offset, size) NULL |
|
#define __ioport_map_trapped(offset, size) NULL |
|
#endif |
|
|
|
#endif /* __ASM_SH_IO_TRAPPED_H */
|
|
|