~ubuntu-branches/ubuntu/wily/qemu-kvm-spice/wily

« back to all changes in this revision

Viewing changes to hw/gumstix.c

  • Committer: Bazaar Package Importer
  • Author(s): Serge Hallyn
  • Date: 2011-10-19 10:44:56 UTC
  • Revision ID: james.westby@ubuntu.com-20111019104456-xgvskumk3sxi97f4
Tags: upstream-0.15.0+noroms
ImportĀ upstreamĀ versionĀ 0.15.0+noroms

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Gumstix Platforms
 
3
 *
 
4
 * Copyright (c) 2007 by Thorsten Zitterell <info@bitmux.org>
 
5
 *
 
6
 * Code based on spitz platform by Andrzej Zaborowski <balrog@zabor.org>
 
7
 *
 
8
 * This code is licensed under the GNU GPL v2.
 
9
 */
 
10
 
 
11
/* 
 
12
 * Example usage:
 
13
 * 
 
14
 * connex:
 
15
 * =======
 
16
 * create image:
 
17
 * # dd of=flash bs=1k count=16k if=/dev/zero
 
18
 * # dd of=flash bs=1k conv=notrunc if=u-boot.bin
 
19
 * # dd of=flash bs=1k conv=notrunc seek=256 if=rootfs.arm_nofpu.jffs2
 
20
 * start it:
 
21
 * # qemu-system-arm -M connex -pflash flash -monitor null -nographic
 
22
 *
 
23
 * verdex:
 
24
 * =======
 
25
 * create image:
 
26
 * # dd of=flash bs=1k count=32k if=/dev/zero
 
27
 * # dd of=flash bs=1k conv=notrunc if=u-boot.bin
 
28
 * # dd of=flash bs=1k conv=notrunc seek=256 if=rootfs.arm_nofpu.jffs2
 
29
 * # dd of=flash bs=1k conv=notrunc seek=31744 if=uImage
 
30
 * start it:
 
31
 * # qemu-system-arm -M verdex -pflash flash -monitor null -nographic -m 289
 
32
 */
 
33
 
 
34
#include "hw.h"
 
35
#include "pxa.h"
 
36
#include "net.h"
 
37
#include "flash.h"
 
38
#include "devices.h"
 
39
#include "boards.h"
 
40
#include "blockdev.h"
 
41
 
 
42
static const int sector_len = 128 * 1024;
 
43
 
 
44
static void connex_init(ram_addr_t ram_size,
 
45
                const char *boot_device,
 
46
                const char *kernel_filename, const char *kernel_cmdline,
 
47
                const char *initrd_filename, const char *cpu_model)
 
48
{
 
49
    PXA2xxState *cpu;
 
50
    DriveInfo *dinfo;
 
51
    int be;
 
52
 
 
53
    uint32_t connex_rom = 0x01000000;
 
54
    uint32_t connex_ram = 0x04000000;
 
55
 
 
56
    cpu = pxa255_init(connex_ram);
 
57
 
 
58
    dinfo = drive_get(IF_PFLASH, 0, 0);
 
59
    if (!dinfo) {
 
60
        fprintf(stderr, "A flash image must be given with the "
 
61
                "'pflash' parameter\n");
 
62
        exit(1);
 
63
    }
 
64
 
 
65
#ifdef TARGET_WORDS_BIGENDIAN
 
66
    be = 1;
 
67
#else
 
68
    be = 0;
 
69
#endif
 
70
    if (!pflash_cfi01_register(0x00000000, qemu_ram_alloc(NULL, "connext.rom",
 
71
                                                          connex_rom),
 
72
                               dinfo->bdrv, sector_len, connex_rom / sector_len,
 
73
                               2, 0, 0, 0, 0, be)) {
 
74
        fprintf(stderr, "qemu: Error registering flash memory.\n");
 
75
        exit(1);
 
76
    }
 
77
 
 
78
    /* Interrupt line of NIC is connected to GPIO line 36 */
 
79
    smc91c111_init(&nd_table[0], 0x04000300,
 
80
                    qdev_get_gpio_in(cpu->gpio, 36));
 
81
}
 
82
 
 
83
static void verdex_init(ram_addr_t ram_size,
 
84
                const char *boot_device,
 
85
                const char *kernel_filename, const char *kernel_cmdline,
 
86
                const char *initrd_filename, const char *cpu_model)
 
87
{
 
88
    PXA2xxState *cpu;
 
89
    DriveInfo *dinfo;
 
90
    int be;
 
91
 
 
92
    uint32_t verdex_rom = 0x02000000;
 
93
    uint32_t verdex_ram = 0x10000000;
 
94
 
 
95
    cpu = pxa270_init(verdex_ram, cpu_model ?: "pxa270-c0");
 
96
 
 
97
    dinfo = drive_get(IF_PFLASH, 0, 0);
 
98
    if (!dinfo) {
 
99
        fprintf(stderr, "A flash image must be given with the "
 
100
                "'pflash' parameter\n");
 
101
        exit(1);
 
102
    }
 
103
 
 
104
#ifdef TARGET_WORDS_BIGENDIAN
 
105
    be = 1;
 
106
#else
 
107
    be = 0;
 
108
#endif
 
109
    if (!pflash_cfi01_register(0x00000000, qemu_ram_alloc(NULL, "verdex.rom",
 
110
                                                          verdex_rom),
 
111
                               dinfo->bdrv, sector_len, verdex_rom / sector_len,
 
112
                               2, 0, 0, 0, 0, be)) {
 
113
        fprintf(stderr, "qemu: Error registering flash memory.\n");
 
114
        exit(1);
 
115
    }
 
116
 
 
117
    /* Interrupt line of NIC is connected to GPIO line 99 */
 
118
    smc91c111_init(&nd_table[0], 0x04000300,
 
119
                    qdev_get_gpio_in(cpu->gpio, 99));
 
120
}
 
121
 
 
122
static QEMUMachine connex_machine = {
 
123
    .name = "connex",
 
124
    .desc = "Gumstix Connex (PXA255)",
 
125
    .init = connex_init,
 
126
};
 
127
 
 
128
static QEMUMachine verdex_machine = {
 
129
    .name = "verdex",
 
130
    .desc = "Gumstix Verdex (PXA270)",
 
131
    .init = verdex_init,
 
132
};
 
133
 
 
134
static void gumstix_machine_init(void)
 
135
{
 
136
    qemu_register_machine(&connex_machine);
 
137
    qemu_register_machine(&verdex_machine);
 
138
}
 
139
 
 
140
machine_init(gumstix_machine_init);