1/* 2 * linux/arch/arm/mach-clps711x/p720t.c 3 * 4 * Copyright (C) 2000-2001 Deep Blue Solutions Ltd 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 */ 20#include <linux/kernel.h> 21#include <linux/init.h> 22#include <linux/types.h> 23#include <linux/string.h> 24#include <linux/mm.h> 25 26#include <asm/hardware.h> 27#include <asm/io.h> 28#include <asm/pgtable.h> 29#include <asm/page.h> 30#include <asm/setup.h> 31#include <asm/sizes.h> 32#include <asm/mach-types.h> 33#include <asm/mach/arch.h> 34#include <asm/mach/map.h> 35#include <asm/arch/syspld.h> 36 37#include "common.h" 38 39/* 40 * Map the P720T system PLD. It occupies two address spaces: 41 * SYSPLD_PHYS_BASE and SYSPLD_PHYS_BASE + 0x00400000 42 * We map both here. 43 */ 44static struct map_desc p720t_io_desc[] __initdata = { 45 { 46 .virtual = SYSPLD_VIRT_BASE, 47 .pfn = __phys_to_pfn(SYSPLD_PHYS_BASE), 48 .length = SZ_1M, 49 .type = MT_DEVICE 50 }, { 51 .virtual = 0xfe400000, 52 .pfn = __phys_to_pfn(0x10400000), 53 .length = SZ_1M, 54 .type = MT_DEVICE 55 } 56}; 57 58static void __init 59fixup_p720t(struct machine_desc *desc, struct tag *tag, 60 char **cmdline, struct meminfo *mi) 61{ 62 /* 63 * Our bootloader doesn't setup any tags (yet). 64 */ 65 if (tag->hdr.tag != ATAG_CORE) { 66 tag->hdr.tag = ATAG_CORE; 67 tag->hdr.size = tag_size(tag_core); 68 tag->u.core.flags = 0; 69 tag->u.core.pagesize = PAGE_SIZE; 70 tag->u.core.rootdev = 0x0100; 71 72 tag = tag_next(tag); 73 tag->hdr.tag = ATAG_MEM; 74 tag->hdr.size = tag_size(tag_mem32); 75 tag->u.mem.size = 4096; 76 tag->u.mem.start = PHYS_OFFSET; 77 78 tag = tag_next(tag); 79 tag->hdr.tag = ATAG_NONE; 80 tag->hdr.size = 0; 81 } 82} 83 84static void __init p720t_map_io(void) 85{ 86 clps711x_map_io(); 87 iotable_init(p720t_io_desc, ARRAY_SIZE(p720t_io_desc)); 88} 89 90MACHINE_START(P720T, "ARM-Prospector720T") 91 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 92 .phys_io = 0x80000000, 93 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 94 .boot_params = 0xc0000100, 95 .fixup = fixup_p720t, 96 .map_io = p720t_map_io, 97 .init_irq = clps711x_init_irq, 98 .timer = &clps711x_timer, 99MACHINE_END 100 101static int p720t_hw_init(void) 102{ 103 /* 104 * Power down as much as possible in case we don't 105 * have the drivers loaded. 106 */ 107 PLD_LCDEN = 0; 108 PLD_PWR &= ~(PLD_S4_ON|PLD_S3_ON|PLD_S2_ON|PLD_S1_ON); 109 110 PLD_KBD = 0; 111 PLD_IO = 0; 112 PLD_IRDA = 0; 113 PLD_CODEC = 0; 114 PLD_TCH = 0; 115 PLD_SPI = 0; 116#ifndef CONFIG_DEBUG_LL 117 PLD_COM2 = 0; 118 PLD_COM1 = 0; 119#endif 120 121 return 0; 122} 123 124__initcall(p720t_hw_init); 125