root / hw / collie.c @ 9e2c1298
History | View | Annotate | Download (2 kB)
1 | c64b21d5 | Dmitry Eremin-Solenikov | /*
|
---|---|---|---|
2 | c64b21d5 | Dmitry Eremin-Solenikov | * SA-1110-based Sharp Zaurus SL-5500 platform.
|
3 | c64b21d5 | Dmitry Eremin-Solenikov | *
|
4 | c64b21d5 | Dmitry Eremin-Solenikov | * Copyright (C) 2011 Dmitry Eremin-Solenikov
|
5 | c64b21d5 | Dmitry Eremin-Solenikov | *
|
6 | c64b21d5 | Dmitry Eremin-Solenikov | * This code is licensed under GNU GPL v2.
|
7 | 6b620ca3 | Paolo Bonzini | *
|
8 | 6b620ca3 | Paolo Bonzini | * Contributions after 2012-01-13 are licensed under the terms of the
|
9 | 6b620ca3 | Paolo Bonzini | * GNU GPL, version 2 or (at your option) any later version.
|
10 | c64b21d5 | Dmitry Eremin-Solenikov | */
|
11 | c64b21d5 | Dmitry Eremin-Solenikov | #include "hw.h" |
12 | c64b21d5 | Dmitry Eremin-Solenikov | #include "sysbus.h" |
13 | c64b21d5 | Dmitry Eremin-Solenikov | #include "boards.h" |
14 | c64b21d5 | Dmitry Eremin-Solenikov | #include "devices.h" |
15 | c64b21d5 | Dmitry Eremin-Solenikov | #include "strongarm.h" |
16 | c64b21d5 | Dmitry Eremin-Solenikov | #include "arm-misc.h" |
17 | c64b21d5 | Dmitry Eremin-Solenikov | #include "flash.h" |
18 | c64b21d5 | Dmitry Eremin-Solenikov | #include "blockdev.h" |
19 | eb2fefbc | Avi Kivity | #include "exec-memory.h" |
20 | c64b21d5 | Dmitry Eremin-Solenikov | |
21 | c64b21d5 | Dmitry Eremin-Solenikov | static struct arm_boot_info collie_binfo = { |
22 | c64b21d5 | Dmitry Eremin-Solenikov | .loader_start = SA_SDCS0, |
23 | c64b21d5 | Dmitry Eremin-Solenikov | .ram_size = 0x20000000,
|
24 | c64b21d5 | Dmitry Eremin-Solenikov | }; |
25 | c64b21d5 | Dmitry Eremin-Solenikov | |
26 | 5f072e1f | Eduardo Habkost | static void collie_init(QEMUMachineInitArgs *args) |
27 | c64b21d5 | Dmitry Eremin-Solenikov | { |
28 | 5f072e1f | Eduardo Habkost | const char *cpu_model = args->cpu_model; |
29 | 5f072e1f | Eduardo Habkost | const char *kernel_filename = args->kernel_filename; |
30 | 5f072e1f | Eduardo Habkost | const char *kernel_cmdline = args->kernel_cmdline; |
31 | 5f072e1f | Eduardo Habkost | const char *initrd_filename = args->initrd_filename; |
32 | c64b21d5 | Dmitry Eremin-Solenikov | StrongARMState *s; |
33 | c64b21d5 | Dmitry Eremin-Solenikov | DriveInfo *dinfo; |
34 | eb2fefbc | Avi Kivity | MemoryRegion *sysmem = get_system_memory(); |
35 | c64b21d5 | Dmitry Eremin-Solenikov | |
36 | c64b21d5 | Dmitry Eremin-Solenikov | if (!cpu_model) {
|
37 | c64b21d5 | Dmitry Eremin-Solenikov | cpu_model = "sa1110";
|
38 | c64b21d5 | Dmitry Eremin-Solenikov | } |
39 | c64b21d5 | Dmitry Eremin-Solenikov | |
40 | eb2fefbc | Avi Kivity | s = sa1110_init(sysmem, collie_binfo.ram_size, cpu_model); |
41 | c64b21d5 | Dmitry Eremin-Solenikov | |
42 | c64b21d5 | Dmitry Eremin-Solenikov | dinfo = drive_get(IF_PFLASH, 0, 0); |
43 | cfe5f011 | Avi Kivity | pflash_cfi01_register(SA_CS0, NULL, "collie.fl1", 0x02000000, |
44 | c64b21d5 | Dmitry Eremin-Solenikov | dinfo ? dinfo->bdrv : NULL, (64 * 1024), |
45 | 01e0451a | Anthony Liguori | 512, 4, 0x00, 0x00, 0x00, 0x00, 0); |
46 | c64b21d5 | Dmitry Eremin-Solenikov | |
47 | c64b21d5 | Dmitry Eremin-Solenikov | dinfo = drive_get(IF_PFLASH, 0, 1); |
48 | cfe5f011 | Avi Kivity | pflash_cfi01_register(SA_CS1, NULL, "collie.fl2", 0x02000000, |
49 | c64b21d5 | Dmitry Eremin-Solenikov | dinfo ? dinfo->bdrv : NULL, (64 * 1024), |
50 | 01e0451a | Anthony Liguori | 512, 4, 0x00, 0x00, 0x00, 0x00, 0); |
51 | c64b21d5 | Dmitry Eremin-Solenikov | |
52 | c64b21d5 | Dmitry Eremin-Solenikov | sysbus_create_simple("scoop", 0x40800000, NULL); |
53 | c64b21d5 | Dmitry Eremin-Solenikov | |
54 | c64b21d5 | Dmitry Eremin-Solenikov | collie_binfo.kernel_filename = kernel_filename; |
55 | c64b21d5 | Dmitry Eremin-Solenikov | collie_binfo.kernel_cmdline = kernel_cmdline; |
56 | c64b21d5 | Dmitry Eremin-Solenikov | collie_binfo.initrd_filename = initrd_filename; |
57 | c64b21d5 | Dmitry Eremin-Solenikov | collie_binfo.board_id = 0x208;
|
58 | 3aaa8dfa | Andreas Färber | arm_load_kernel(s->cpu, &collie_binfo); |
59 | c64b21d5 | Dmitry Eremin-Solenikov | } |
60 | c64b21d5 | Dmitry Eremin-Solenikov | |
61 | c64b21d5 | Dmitry Eremin-Solenikov | static QEMUMachine collie_machine = {
|
62 | c64b21d5 | Dmitry Eremin-Solenikov | .name = "collie",
|
63 | c64b21d5 | Dmitry Eremin-Solenikov | .desc = "Collie PDA (SA-1110)",
|
64 | c64b21d5 | Dmitry Eremin-Solenikov | .init = collie_init, |
65 | c64b21d5 | Dmitry Eremin-Solenikov | }; |
66 | c64b21d5 | Dmitry Eremin-Solenikov | |
67 | c64b21d5 | Dmitry Eremin-Solenikov | static void collie_machine_init(void) |
68 | c64b21d5 | Dmitry Eremin-Solenikov | { |
69 | c64b21d5 | Dmitry Eremin-Solenikov | qemu_register_machine(&collie_machine); |
70 | c64b21d5 | Dmitry Eremin-Solenikov | } |
71 | c64b21d5 | Dmitry Eremin-Solenikov | |
72 | c64b21d5 | Dmitry Eremin-Solenikov | machine_init(collie_machine_init) |