2 * linux/arch/arm/mach-sa1100/cep.c
4 * Author: Matthias Gorjup
6 * This file contains all Cep - specific tweaks.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
13 #include <linux/config.h>
14 #include <linux/init.h>
15 #include <linux/kernel.h>
16 #include <linux/sched.h>
17 #include <linux/tty.h>
18 #include <linux/module.h>
19 #include <linux/errno.h>
20 #include <linux/serial_core.h>
22 #include <asm/hardware.h>
23 #include <asm/setup.h>
25 #include <asm/pgtable.h>
27 #include <asm/mach/arch.h>
28 #include <asm/mach/map.h>
29 #include <asm/mach/serial_sa1100.h>
34 extern void convert_to_tag_list(struct param_struct *params, int mem_init);
37 fixup_cep(struct machine_desc *desc, struct param_struct *params,
38 char **cmdline, struct meminfo *mi)
40 struct tag *t = (struct tag *)params;
44 * Apparantly bootldr uses a param_struct. Groan.
46 if (t->hdr.tag != ATAG_CORE)
47 convert_to_tag_list(params, 1);
49 if (t->hdr.tag != ATAG_CORE) {
50 t->hdr.tag = ATAG_CORE;
51 t->hdr.size = tag_size(tag_core);
53 t->u.core.pagesize = PAGE_SIZE;
54 t->u.core.rootdev = RAMDISK_MAJOR << 8 | 0;
57 t->hdr.tag = ATAG_MEM;
58 t->hdr.size = tag_size(tag_mem32);
59 t->u.mem.start = 0xc0000000;
60 t->u.mem.size = 32 * 1024 * 1024;
64 t->hdr.tag = ATAG_RAMDISK;
65 t->hdr.size = tag_size(tag_ramdisk);
66 t->u.ramdisk.flags = 1;
67 t->u.ramdisk.size = 8192;
68 t->u.ramdisk.start = 0;
71 t->hdr.tag = ATAG_INITRD;
72 t->hdr.size = tag_size(tag_initrd);
73 t->u.initrd.start = 0xc0800000;
74 t->u.initrd.size = 3 * 1024 * 1024;
77 t->hdr.tag = ATAG_NONE;
83 static struct map_desc cep_io_desc[] __initdata = {
84 /* virtual physical length domain r w c b */
85 { 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* Flash bank 0 */
89 static void __init cep_map_io(void)
93 iotable_init(cep_io_desc);
95 sa1100_register_uart(0, 1); /* com port */
96 sa1100_register_uart(2, 3); /* radio module */
99 * Ensure that these pins are set as outputs and are driving
100 * logic 0. This ensures that we won't inadvertently toggle
101 * the WS latch in the CPLD, and we don't float causing
102 * excessive power drain. --rmk
104 GPDR |= GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
105 GPCR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
108 * Set up registers for sleep mode.
117 MACHINE_START(CEP, "Iskratel Cep")
118 BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
119 BOOT_PARAMS(0xc0000100)
122 INITIRQ(sa1100_init_irq)