* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/kernel.h> #include <linux/init.h> #include <asm/hardware.h> #include <asm/io.h> #include <asm/sizes.h> #include <asm/mach/map.h> /* Page table mapping for I/O region */ static struct map_desc epxa10db_io_desc[] __initdata = { { IO_ADDRESS(EXC_REGISTERS_BASE), EXC_REGISTERS_BASE, SZ_16K, MT_DEVICE }, { IO_ADDRESS(EXC_PLD_BLOCK0_BASE), EXC_PLD_BLOCK0_BASE, SZ_16K, MT_DEVICE }, { IO_ADDRESS(EXC_PLD_BLOCK1_BASE), EXC_PLD_BLOCK1_BASE, SZ_16K, MT_DEVICE }, { IO_ADDRESS(EXC_PLD_BLOCK2_BASE), EXC_PLD_BLOCK2_BASE, SZ_16K, MT_DEVICE }, { IO_ADDRESS(EXC_PLD_BLOCK3_BASE), EXC_PLD_BLOCK3_BASE, SZ_16K, MT_DEVICE }, { FLASH_VADDR(EXC_EBI_BLOCK0_BASE), EXC_EBI_BLOCK0_BASE, SZ_16M, MT_DEVICE } }; void __init epxa10db_map_io(void) { iotable_init(epxa10db_io_desc, ARRAY_SIZE(epxa10db_io_desc)); }
static void epxa10db_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len) { memcpy((void *)FLASH_VADDR(EXC_EBI_BLOCK0_BASE + to), from, len); }
static void epxa10db_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len) { memcpy(to, (void *)(FLASH_VADDR(EXC_EBI_BLOCK0_BASE + from)), len); }
static void epxa10db_write32(struct map_info *map, __u32 d, unsigned long adr) { *(__u32 *)(FLASH_VADDR(EXC_EBI_BLOCK0_BASE + adr)) = d; }
static __u32 epxa10db_read32(struct map_info *map, unsigned long ofs) { return *(__u32 *)(FLASH_VADDR(EXC_EBI_BLOCK0_BASE + ofs)); }