~ubuntu-branches/ubuntu/vivid/qemu-linaro/vivid

« back to all changes in this revision

Viewing changes to hw/nseries.c

  • Committer: Ricardo Salveti de Araujo
  • Date: 2012-09-20 18:39:31 UTC
  • mfrom: (12922.1.2 qemu-linaro)
  • Revision ID: ricardo.salveti@linaro.org-20120920183931-sp3cg6kpdl8dmwo9
* New upstream release.
  - support emulated systems with more than 2G of memory. (LP: #1030588)
* Drop powerpc-missing-include.patch - merged upstream.
* Update debian/control:
  - drop perl build dependency.
  - add libfdt-dev build dependency.
* Update debian/qemu-keymaps.install file.
* Update debian/rules:
  - update QEMU_CPU for ARM architecture: armv4l -> armv7l.
  - update conf_audio_drv: default to PulseAudio since PA is the default on
    Ubuntu.
  - enable KVM on ARM architecture.
  - enable flat device tree support (--enable-fdt). (LP: #1030594)

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
 
49
49
/* Nokia N8x0 support */
50
50
struct n800_s {
51
 
    struct omap_mpu_state_s *cpu;
 
51
    struct omap_mpu_state_s *mpu;
52
52
 
53
53
    struct rfbi_chip_s blizzard;
54
54
    DeviceState *mipid;
143
143
 
144
144
static void n8x0_gpio_setup(struct n800_s *s)
145
145
{
146
 
    qemu_irq *mmc_cs = qemu_allocate_irqs(n800_mmc_cs_cb, s->cpu->mmc, 1);
147
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_MMC_CS_GPIO, mmc_cs[0]);
 
146
    qemu_irq *mmc_cs = qemu_allocate_irqs(n800_mmc_cs_cb, s->mpu->mmc, 1);
 
147
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_MMC_CS_GPIO, mmc_cs[0]);
148
148
 
149
 
    qemu_irq_lower(qdev_get_gpio_in(s->cpu->gpio, N800_BAT_COVER_GPIO));
 
149
    qemu_irq_lower(qdev_get_gpio_in(s->mpu->gpio, N800_BAT_COVER_GPIO));
150
150
}
151
151
 
152
152
#define MAEMO_CAL_HEADER(...)                           \
187
187
    }
188
188
    qdev_init_nofail(s->nand);
189
189
    sysbus_connect_irq(sysbus_from_qdev(s->nand), 0,
190
 
                       qdev_get_gpio_in(s->cpu->gpio, N8X0_ONENAND_GPIO));
191
 
    omap_gpmc_attach(s->cpu->gpmc, N8X0_ONENAND_CS,
 
190
                       qdev_get_gpio_in(s->mpu->gpio, N8X0_ONENAND_GPIO));
 
191
    omap_gpmc_attach(s->mpu->gpmc, N8X0_ONENAND_CS,
192
192
                     sysbus_mmio_get_region(sysbus_from_qdev(s->nand), 0));
193
193
    otp_region = onenand_raw_otp(s->nand);
194
194
 
200
200
static void n8x0_i2c_setup(struct n800_s *s)
201
201
{
202
202
    DeviceState *dev;
203
 
    qemu_irq tmp_irq = qdev_get_gpio_in(s->cpu->gpio, N8X0_TMP105_GPIO);
204
 
    i2c_bus *i2c = omap_i2c_bus(s->cpu->i2c[0]);
 
203
    qemu_irq tmp_irq = qdev_get_gpio_in(s->mpu->gpio, N8X0_TMP105_GPIO);
 
204
    i2c_bus *i2c = omap_i2c_bus(s->mpu->i2c[0]);
205
205
 
206
206
    /* Attach a menelaus PM chip */
207
207
    dev = i2c_create_slave(i2c, "twl92230", N8X0_MENELAUS_ADDR);
208
208
    qdev_connect_gpio_out(dev, 3,
209
 
                          qdev_get_gpio_in(s->cpu->ih[0],
 
209
                          qdev_get_gpio_in(s->mpu->ih[0],
210
210
                                           OMAP_INT_24XX_SYS_NIRQ));
211
211
 
212
212
    qemu_system_powerdown = qdev_get_gpio_in(dev, 3);
270
270
 
271
271
    /* XXX: are the three pins inverted inside the chip between the
272
272
     * tsc and the cpu (N4111)?  */
273
 
    s->tsc = spi_create_device(omap_mcspi_bus(s->cpu->mcspi, 0), "tsc2301", 0);
 
273
    s->tsc = spi_create_device(omap_mcspi_bus(s->mpu->mcspi, 0), "tsc2301", 0);
274
274
    /* penirq NC */
275
 
    qdev_connect_gpio_out(s->tsc, 1, qdev_get_gpio_in(s->cpu->gpio,
 
275
    qdev_connect_gpio_out(s->tsc, 1, qdev_get_gpio_in(s->mpu->gpio,
276
276
                                                      N800_TSC_KP_IRQ_GPIO));
277
 
    qdev_connect_gpio_out(s->tsc, 2, qdev_get_gpio_in(s->cpu->gpio,
 
277
    qdev_connect_gpio_out(s->tsc, 2, qdev_get_gpio_in(s->mpu->gpio,
278
278
                                                      N800_TSC_TS_GPIO));
279
279
 
280
280
    for (i = 0; i < 0x80; i ++)
290
290
 
291
291
static void n810_tsc_setup(struct n800_s *s)
292
292
{
293
 
    s->tsc = spi_create_device(omap_mcspi_bus(s->cpu->mcspi, 0), "tsc2005", 0);
294
 
    qdev_connect_gpio_out(s->tsc, 0, qdev_get_gpio_in(s->cpu->gpio,
 
293
    s->tsc = spi_create_device(omap_mcspi_bus(s->mpu->mcspi, 0), "tsc2005", 0);
 
294
    qdev_connect_gpio_out(s->tsc, 0, qdev_get_gpio_in(s->mpu->gpio,
295
295
                                                      N810_TSC_TS_GPIO));
296
296
    tsc2005_set_transform(s->tsc, &n810_pointercal, 400, 4000);
297
297
}
380
380
 
381
381
static void n810_kbd_setup(struct n800_s *s)
382
382
{
383
 
    qemu_irq kbd_irq = qdev_get_gpio_in(s->cpu->gpio, N810_KEYBOARD_GPIO);
 
383
    qemu_irq kbd_irq = qdev_get_gpio_in(s->mpu->gpio, N810_KEYBOARD_GPIO);
384
384
    int i;
385
385
 
386
386
    for (i = 0; i < 0x80; i ++)
393
393
 
394
394
    /* Attach the LM8322 keyboard to the I2C bus,
395
395
     * should happen in n8x0_i2c_setup and s->kbd be initialised here.  */
396
 
    s->kbd = i2c_create_slave(omap_i2c_bus(s->cpu->i2c[0]),
 
396
    s->kbd = i2c_create_slave(omap_i2c_bus(s->mpu->i2c[0]),
397
397
                           "lm8323", N810_LM8323_ADDR);
398
398
    qdev_connect_gpio_out(s->kbd, 0, kbd_irq);
399
399
}
826
826
 
827
827
static void n8x0_spi_setup(struct n800_s *s)
828
828
{
829
 
    s->mipid = spi_create_device_noinit(omap_mcspi_bus(s->cpu->mcspi, 0),
 
829
    s->mipid = spi_create_device_noinit(omap_mcspi_bus(s->mpu->mcspi, 0),
830
830
                                        "lcd_mipid", 1);
831
831
    qdev_prop_set_uint32(s->mipid, "id", 0x838f03);
832
832
    qdev_init_nofail(s->mipid);
884
884
    s->blizzard.write = s1d13745_write;
885
885
    s->blizzard.read = s1d13745_read;
886
886
 
887
 
    omap_rfbi_attach(s->cpu->dss, 0, &s->blizzard);
 
887
    omap_rfbi_attach(s->mpu->dss, 0, &s->blizzard);
888
888
}
889
889
 
890
890
static void n8x0_cbus_setup(struct n800_s *s)
891
891
{
892
 
    qemu_irq dat_out = qdev_get_gpio_in(s->cpu->gpio, N8X0_CBUS_DAT_GPIO);
893
 
    qemu_irq retu_irq = qdev_get_gpio_in(s->cpu->gpio, N8X0_RETU_GPIO);
894
 
    qemu_irq tahvo_irq = qdev_get_gpio_in(s->cpu->gpio, N8X0_TAHVO_GPIO);
 
892
    qemu_irq dat_out = qdev_get_gpio_in(s->mpu->gpio, N8X0_CBUS_DAT_GPIO);
 
893
    qemu_irq retu_irq = qdev_get_gpio_in(s->mpu->gpio, N8X0_RETU_GPIO);
 
894
    qemu_irq tahvo_irq = qdev_get_gpio_in(s->mpu->gpio, N8X0_TAHVO_GPIO);
895
895
 
896
896
    CBus *cbus = cbus_init(dat_out);
897
897
 
898
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_CBUS_CLK_GPIO, cbus->clk);
899
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_CBUS_DAT_GPIO, cbus->dat);
900
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_CBUS_SEL_GPIO, cbus->sel);
 
898
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_CBUS_CLK_GPIO, cbus->clk);
 
899
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_CBUS_DAT_GPIO, cbus->dat);
 
900
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_CBUS_SEL_GPIO, cbus->sel);
901
901
 
902
902
    cbus_attach(cbus, s->retu = retu_init(retu_irq, 1));
903
903
    cbus_attach(cbus, s->tahvo = tahvo_init(tahvo_irq, 1));
906
906
static void n8x0_uart_setup(struct n800_s *s)
907
907
{
908
908
    CharDriverState *radio = uart_hci_init(
909
 
                    qdev_get_gpio_in(s->cpu->gpio, N8X0_BT_HOST_WKUP_GPIO));
 
909
                    qdev_get_gpio_in(s->mpu->gpio, N8X0_BT_HOST_WKUP_GPIO));
910
910
 
911
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_BT_RESET_GPIO,
 
911
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_BT_RESET_GPIO,
912
912
                    csrhci_pins_get(radio)[csrhci_pin_reset]);
913
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_BT_WKUP_GPIO,
 
913
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_BT_WKUP_GPIO,
914
914
                    csrhci_pins_get(radio)[csrhci_pin_wakeup]);
915
915
 
916
 
    omap_uart_attach(s->cpu->uart[BT_UART], radio, "bt-uart");
 
916
    omap_uart_attach(s->mpu->uart[BT_UART], radio, "bt-uart");
917
917
}
918
918
 
919
919
static void n8x0_usb_setup(struct n800_s *s)
923
923
    dev = sysbus_from_qdev(s->usb);
924
924
    qdev_init_nofail(s->usb);
925
925
    sysbus_connect_irq(dev, 0,
926
 
                       qdev_get_gpio_in(s->cpu->gpio, N8X0_TUSB_INT_GPIO));
 
926
                       qdev_get_gpio_in(s->mpu->gpio, N8X0_TUSB_INT_GPIO));
927
927
    /* Using the NOR interface */
928
 
    omap_gpmc_attach(s->cpu->gpmc, N8X0_USB_ASYNC_CS,
 
928
    omap_gpmc_attach(s->mpu->gpmc, N8X0_USB_ASYNC_CS,
929
929
                     sysbus_mmio_get_region(dev, 0));
930
 
    omap_gpmc_attach(s->cpu->gpmc, N8X0_USB_SYNC_CS,
 
930
    omap_gpmc_attach(s->mpu->gpmc, N8X0_USB_SYNC_CS,
931
931
                     sysbus_mmio_get_region(dev, 1));
932
 
    qdev_connect_gpio_out(s->cpu->gpio, N8X0_TUSB_ENABLE_GPIO,
 
932
    qdev_connect_gpio_out(s->mpu->gpio, N8X0_TUSB_ENABLE_GPIO,
933
933
                          qdev_get_gpio_in(s->usb, 0)); /* tusb_pwr */
934
934
}
935
935
 
1172
1172
    n800_dss_init(&s->blizzard);
1173
1173
 
1174
1174
    /* CPU setup */
1175
 
    s->cpu->env->GE = 0x5;
 
1175
    s->mpu->cpu->env.GE = 0x5;
1176
1176
 
1177
1177
    /* If the machine has a slided keyboard, open it */
1178
1178
    if (s->kbd)
1179
 
        qemu_irq_raise(qdev_get_gpio_in(s->cpu->gpio, N810_SLIDE_GPIO));
 
1179
        qemu_irq_raise(qdev_get_gpio_in(s->mpu->gpio, N810_SLIDE_GPIO));
1180
1180
}
1181
1181
 
1182
1182
#define OMAP_TAG_NOKIA_BT       0x4e01
1396
1396
    stw_raw(w ++, 24);                          /* u16 len */
1397
1397
    strcpy((void *) w, "hw-build");             /* char component[12] */
1398
1398
    w += 6;
1399
 
    strcpy((void *) w, "QEMU"); /* char version[12] */
 
1399
    strcpy((void *) w, "QEMU");         /* char version[12] */
1400
1400
    w += 6;
1401
1401
 
1402
1402
    tag = (model == 810) ? "1.1.10-qemu" : "1.1.6-qemu";
1430
1430
    int sdram_size = binfo->ram_size;
1431
1431
    DisplayState *ds;
1432
1432
 
1433
 
    s->cpu = omap2420_mpu_init(sysmem, sdram_size, cpu_model);
 
1433
    s->mpu = omap2420_mpu_init(sysmem, sdram_size, cpu_model);
1434
1434
 
1435
1435
    /* Setup peripherals
1436
1436
     *
1479
1479
        binfo->kernel_filename = kernel_filename;
1480
1480
        binfo->kernel_cmdline = kernel_cmdline;
1481
1481
        binfo->initrd_filename = initrd_filename;
1482
 
        arm_load_kernel(s->cpu->env, binfo);
 
1482
        arm_load_kernel(s->mpu->cpu, binfo);
1483
1483
 
1484
1484
        qemu_register_reset(n8x0_boot_init, s);
1485
1485
    }
1488
1488
        int rom_size;
1489
1489
        uint8_t nolo_tags[0x10000];
1490
1490
        /* No, wait, better start at the ROM.  */
1491
 
        s->cpu->env->regs[15] = OMAP2_Q2_BASE + 0x400000;
 
1491
        s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
1492
1492
 
1493
1493
        /* This is intended for loading the `secondary.bin' program from
1494
1494
         * Nokia images (the NOLO bootloader).  The entry point seems