symbian-qemu-0.9.1-12/qemu-symbian-svp/hw/gumstix.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 "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(ram_addr_t 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     /* Interrupt line of NIC is connected to GPIO line 36 */
       
    80     smc91c111_init(&nd_table[0], 0x04000300,
       
    81                     pxa2xx_gpio_in_get(cpu->gpio)[36]);
       
    82 }
       
    83 
       
    84 static void verdex_init(ram_addr_t 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     /* Interrupt line of NIC is connected to GPIO line 99 */
       
   120     smc91c111_init(&nd_table[0], 0x04000300,
       
   121                     pxa2xx_gpio_in_get(cpu->gpio)[99]);
       
   122 }
       
   123 
       
   124 QEMUMachine connex_machine = {
       
   125     .name = "connex",
       
   126     .desc = "Gumstix Connex (PXA255)",
       
   127     .init = connex_init,
       
   128     .ram_require = (0x05000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
       
   129 };
       
   130 
       
   131 QEMUMachine verdex_machine = {
       
   132     .name = "verdex",
       
   133     .desc = "Gumstix Verdex (PXA270)",
       
   134     .init = verdex_init,
       
   135     .ram_require = (0x12000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
       
   136 };