diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 02:16:42 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 02:16:42 -0400 |
| commit | d7cdc9e8ac82c43fdcd4fde6b5b53d2dcba7f707 (patch) | |
| tree | 2489b1831a1b5818af0927e4d3c8933bf7d05f31 /include | |
| parent | 26ff6c11ef38e08990c1e417c299246e6ab18ff7 (diff) | |
sh: ioremap() overhaul.
ioremap() overhaul. Add support for transparent PMB mapping, get rid of
p3_ioremap(), etc. Also drop ioremap() and iounmap() routines from the
machvec, as everyone can use the generic ioremap() API instead. For PCI
memory apertures and other special cases, use the pci_iomap() API, as
boards are already required to get the mapping right there.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-sh/landisk/iodata_landisk.h | 3 | ||||
| -rw-r--r-- | include/asm-sh/mmu.h | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/include/asm-sh/landisk/iodata_landisk.h b/include/asm-sh/landisk/iodata_landisk.h index 7189d3a36384..9db3cdfe6776 100644 --- a/include/asm-sh/landisk/iodata_landisk.h +++ b/include/asm-sh/landisk/iodata_landisk.h | |||
| @@ -74,5 +74,8 @@ extern int landisk_ledparam; /* from setup.c */ | |||
| 74 | extern int landisk_buzzerparam; /* from setup.c */ | 74 | extern int landisk_buzzerparam; /* from setup.c */ |
| 75 | extern int landisk_arch; /* from setup.c */ | 75 | extern int landisk_arch; /* from setup.c */ |
| 76 | 76 | ||
| 77 | #define __IO_PREFIX landisk | ||
| 78 | #include <asm/io_generic.h> | ||
| 79 | |||
| 77 | #endif /* __ASM_SH_IODATA_LANDISK_H */ | 80 | #endif /* __ASM_SH_IODATA_LANDISK_H */ |
| 78 | 81 | ||
diff --git a/include/asm-sh/mmu.h b/include/asm-sh/mmu.h index 91c884634276..ec09589fa6ca 100644 --- a/include/asm-sh/mmu.h +++ b/include/asm-sh/mmu.h | |||
| @@ -50,6 +50,8 @@ typedef unsigned long mm_context_t; | |||
| 50 | 50 | ||
| 51 | #define PMB_NO_ENTRY (-1) | 51 | #define PMB_NO_ENTRY (-1) |
| 52 | 52 | ||
| 53 | struct pmb_entry; | ||
| 54 | |||
| 53 | struct pmb_entry { | 55 | struct pmb_entry { |
| 54 | unsigned long vpn; | 56 | unsigned long vpn; |
| 55 | unsigned long ppn; | 57 | unsigned long ppn; |
| @@ -60,16 +62,23 @@ struct pmb_entry { | |||
| 60 | * PMB_NO_ENTRY to search for a free one | 62 | * PMB_NO_ENTRY to search for a free one |
| 61 | */ | 63 | */ |
| 62 | int entry; | 64 | int entry; |
| 65 | |||
| 66 | struct pmb_entry *next; | ||
| 67 | /* Adjacent entry link for contiguous multi-entry mappings */ | ||
| 68 | struct pmb_entry *link; | ||
| 63 | }; | 69 | }; |
| 64 | 70 | ||
| 65 | /* arch/sh/mm/pmb.c */ | 71 | /* arch/sh/mm/pmb.c */ |
| 66 | int __set_pmb_entry(unsigned long vpn, unsigned long ppn, | 72 | int __set_pmb_entry(unsigned long vpn, unsigned long ppn, |
| 67 | unsigned long flags, int *entry); | 73 | unsigned long flags, int *entry); |
| 68 | void set_pmb_entry(struct pmb_entry *pmbe); | 74 | int set_pmb_entry(struct pmb_entry *pmbe); |
| 69 | void clear_pmb_entry(struct pmb_entry *pmbe); | 75 | void clear_pmb_entry(struct pmb_entry *pmbe); |
| 70 | struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn, | 76 | struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn, |
| 71 | unsigned long flags); | 77 | unsigned long flags); |
| 72 | void pmb_free(struct pmb_entry *pmbe); | 78 | void pmb_free(struct pmb_entry *pmbe); |
| 79 | long pmb_remap(unsigned long virt, unsigned long phys, | ||
| 80 | unsigned long size, unsigned long flags); | ||
| 81 | void pmb_unmap(unsigned long addr); | ||
| 73 | 82 | ||
| 74 | #endif /* __MMU_H */ | 83 | #endif /* __MMU_H */ |
| 75 | 84 | ||
