Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | */ | |
1da177e4 LT |
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> | |
f10083f5 | 31 | #include <asm/sizes.h> |
1da177e4 LT |
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 | */ | |
44 | static struct map_desc p720t_io_desc[] __initdata = { | |
f10083f5 DS |
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 | } | |
1da177e4 LT |
56 | }; |
57 | ||
58 | static void __init | |
59 | fixup_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 | ||
84 | static void __init p720t_map_io(void) | |
85 | { | |
86 | clps711x_map_io(); | |
87 | iotable_init(p720t_io_desc, ARRAY_SIZE(p720t_io_desc)); | |
88 | } | |
89 | ||
90 | MACHINE_START(P720T, "ARM-Prospector720T") | |
e9dea0c6 | 91 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
e9dea0c6 RK |
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, | |
1da177e4 LT |
98 | .timer = &clps711x_timer, |
99 | MACHINE_END | |
100 | ||
101 | static 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 |