]>
Commit | Line | Data |
---|---|---|
c64b21d5 DES |
1 | /* |
2 | * SA-1110-based Sharp Zaurus SL-5500 platform. | |
3 | * | |
4 | * Copyright (C) 2011 Dmitry Eremin-Solenikov | |
5 | * | |
6 | * This code is licensed under GNU GPL v2. | |
6b620ca3 PB |
7 | * |
8 | * Contributions after 2012-01-13 are licensed under the terms of the | |
9 | * GNU GPL, version 2 or (at your option) any later version. | |
c64b21d5 | 10 | */ |
12b16722 | 11 | #include "qemu/osdep.h" |
ce14710f | 12 | #include "qemu/units.h" |
00b9829f | 13 | #include "qemu/cutils.h" |
83c9f4ca PB |
14 | #include "hw/sysbus.h" |
15 | #include "hw/boards.h" | |
47b43a1f | 16 | #include "strongarm.h" |
12ec8bd5 | 17 | #include "hw/arm/boot.h" |
0d09e41a | 18 | #include "hw/block/flash.h" |
022c62cb | 19 | #include "exec/address-spaces.h" |
ba1ba5cc | 20 | #include "cpu.h" |
c64b21d5 DES |
21 | |
22 | static struct arm_boot_info collie_binfo = { | |
23 | .loader_start = SA_SDCS0, | |
24 | .ram_size = 0x20000000, | |
25 | }; | |
26 | ||
3ef96221 | 27 | static void collie_init(MachineState *machine) |
c64b21d5 DES |
28 | { |
29 | StrongARMState *s; | |
30 | DriveInfo *dinfo; | |
00b9829f IM |
31 | MachineClass *mc = MACHINE_GET_CLASS(machine); |
32 | ||
33 | if (machine->ram_size != mc->default_ram_size) { | |
34 | char *sz = size_to_str(mc->default_ram_size); | |
35 | error_report("Invalid RAM size, should be %s", sz); | |
36 | g_free(sz); | |
37 | exit(EXIT_FAILURE); | |
38 | } | |
c64b21d5 | 39 | |
3cd892da PMD |
40 | s = sa1110_init(machine->cpu_type); |
41 | ||
00b9829f | 42 | memory_region_add_subregion(get_system_memory(), SA_SDCS0, machine->ram); |
c64b21d5 | 43 | |
c64b21d5 | 44 | dinfo = drive_get(IF_PFLASH, 0, 0); |
940d5b13 | 45 | pflash_cfi01_register(SA_CS0, "collie.fl1", 0x02000000, |
4be74634 | 46 | dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, |
ce14710f | 47 | 64 * KiB, 4, 0x00, 0x00, 0x00, 0x00, 0); |
c64b21d5 | 48 | |
c64b21d5 | 49 | dinfo = drive_get(IF_PFLASH, 0, 1); |
940d5b13 | 50 | pflash_cfi01_register(SA_CS1, "collie.fl2", 0x02000000, |
4be74634 | 51 | dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, |
ce14710f | 52 | 64 * KiB, 4, 0x00, 0x00, 0x00, 0x00, 0); |
c64b21d5 DES |
53 | |
54 | sysbus_create_simple("scoop", 0x40800000, NULL); | |
55 | ||
c64b21d5 | 56 | collie_binfo.board_id = 0x208; |
2744ece8 | 57 | arm_load_kernel(s->cpu, machine, &collie_binfo); |
c64b21d5 DES |
58 | } |
59 | ||
e264d29d | 60 | static void collie_machine_init(MachineClass *mc) |
c64b21d5 | 61 | { |
ad1e8db8 | 62 | mc->desc = "Sharp SL-5500 (Collie) PDA (SA-1110)"; |
e264d29d | 63 | mc->init = collie_init; |
4672cbd7 | 64 | mc->ignore_memory_transaction_failures = true; |
ba1ba5cc | 65 | mc->default_cpu_type = ARM_CPU_TYPE_NAME("sa1110"); |
00b9829f IM |
66 | mc->default_ram_size = 0x20000000; |
67 | mc->default_ram_id = "strongarm.sdram"; | |
c64b21d5 DES |
68 | } |
69 | ||
e264d29d | 70 | DEFINE_MACHINE("collie", collie_machine_init) |