1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34: #include "hw.h"
35: #include "pxa.h"
36: #include "net.h"
37: #include "flash.h"
38: #include "sysemu.h"
39: #include "devices.h"
40: #include "boards.h"
41:
42: static const int sector_len = 128 * 1024;
43:
44: static void connex_init(int ram_size, int vga_ram_size,
45: const char *boot_device, DisplayState *ds,
46: const char *kernel_filename, const char *kernel_cmdline,
47: const char *initrd_filename, const char *cpu_model)
48: {
49: struct pxa2xx_state_s *cpu;
50: int index;
51:
52: uint32_t connex_rom = 0x01000000;
53: uint32_t connex_ram = 0x04000000;
54:
55: if (ram_size < (connex_ram + connex_rom + PXA2XX_INTERNAL_SIZE)) {
56: fprintf(stderr, "This platform requires %i bytes of memory\n",
57: connex_ram + connex_rom + PXA2XX_INTERNAL_SIZE);
58: exit(1);
59: }
60:
61: cpu = pxa255_init(connex_ram, ds);
62:
63: index = drive_get_index(IF_PFLASH, 0, 0);
64: if (index == -1) {
65: fprintf(stderr, "A flash image must be given with the "
66: "'pflash' parameter\n");
67: exit(1);
68: }
69:
70: if (!pflash_cfi01_register(0x00000000, qemu_ram_alloc(connex_rom),
71: drives_table[index].bdrv, sector_len, connex_rom / sector_len,
72: 2, 0, 0, 0, 0)) {
73: fprintf(stderr, "qemu: Error registering flash memory.\n");
74: exit(1);
75: }
76:
77: cpu->env->regs[15] = 0x00000000;
78:
79:
80: smc91c111_init(&nd_table[0], 0x04000300,
81: pxa2xx_gpio_in_get(cpu->gpio)[36]);
82: }
83:
84: static void verdex_init(int ram_size, int vga_ram_size,
85: const char *boot_device, DisplayState *ds,
86: const char *kernel_filename, const char *kernel_cmdline,
87: const char *initrd_filename, const char *cpu_model)
88: {
89: struct pxa2xx_state_s *cpu;
90: int index;
91:
92: uint32_t verdex_rom = 0x02000000;
93: uint32_t verdex_ram = 0x10000000;
94:
95: if (ram_size < (verdex_ram + verdex_rom + PXA2XX_INTERNAL_SIZE)) {
96: fprintf(stderr, "This platform requires %i bytes of memory\n",
97: verdex_ram + verdex_rom + PXA2XX_INTERNAL_SIZE);
98: exit(1);
99: }
100:
101: cpu = pxa270_init(verdex_ram, ds, cpu_model ?: "pxa270-c0");
102:
103: index = drive_get_index(IF_PFLASH, 0, 0);
104: if (index == -1) {
105: fprintf(stderr, "A flash image must be given with the "
106: "'pflash' parameter\n");
107: exit(1);
108: }
109:
110: if (!pflash_cfi01_register(0x00000000, qemu_ram_alloc(verdex_rom),
111: drives_table[index].bdrv, sector_len, verdex_rom / sector_len,
112: 2, 0, 0, 0, 0)) {
113: fprintf(stderr, "qemu: Error registering flash memory.\n");
114: exit(1);
115: }
116:
117: cpu->env->regs[15] = 0x00000000;
118:
119:
120: smc91c111_init(&nd_table[0], 0x04000300,
121: pxa2xx_gpio_in_get(cpu->gpio)[99]);
122: }
123:
124: QEMUMachine connex_machine = {
125: "connex",
126: "Gumstix Connex (PXA255)",
127: connex_init,
128: };
129:
130: QEMUMachine verdex_machine = {
131: "verdex",
132: "Gumstix Verdex (PXA270)",
133: verdex_init,
134: };