144
144
static void n8x0_gpio_setup(struct n800_s *s)
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]);
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));
152
152
#define MAEMO_CAL_HEADER(...) \
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);
200
200
static void n8x0_i2c_setup(struct n800_s *s)
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]);
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));
212
212
qemu_system_powerdown = qdev_get_gpio_in(dev, 3);
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);
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));
280
280
for (i = 0; i < 0x80; i ++)
291
291
static void n810_tsc_setup(struct n800_s *s)
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);
381
381
static void n810_kbd_setup(struct n800_s *s)
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);
386
386
for (i = 0; i < 0x80; i ++)
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);
827
827
static void n8x0_spi_setup(struct n800_s *s)
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),
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;
887
omap_rfbi_attach(s->cpu->dss, 0, &s->blizzard);
887
omap_rfbi_attach(s->mpu->dss, 0, &s->blizzard);
890
890
static void n8x0_cbus_setup(struct n800_s *s)
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);
896
896
CBus *cbus = cbus_init(dat_out);
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);
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)
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));
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]);
916
omap_uart_attach(s->cpu->uart[BT_UART], radio, "bt-uart");
916
omap_uart_attach(s->mpu->uart[BT_UART], radio, "bt-uart");
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 */
1172
1172
n800_dss_init(&s->blizzard);
1174
1174
/* CPU setup */
1175
s->cpu->env->GE = 0x5;
1175
s->mpu->cpu->env.GE = 0x5;
1177
1177
/* If the machine has a slided keyboard, open it */
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));
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] */
1399
strcpy((void *) w, "QEMU"); /* char version[12] */
1399
strcpy((void *) w, "QEMU"); /* char version[12] */
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;
1433
s->cpu = omap2420_mpu_init(sysmem, sdram_size, cpu_model);
1433
s->mpu = omap2420_mpu_init(sysmem, sdram_size, cpu_model);
1435
1435
/* Setup peripherals
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);
1484
1484
qemu_register_reset(n8x0_boot_init, s);
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;
1493
1493
/* This is intended for loading the `secondary.bin' program from
1494
1494
* Nokia images (the NOLO bootloader). The entry point seems