diff options
Diffstat (limited to 'hw/omap2.c')
-rw-r--r-- | hw/omap2.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/hw/omap2.c b/hw/omap2.c index 7850f53a7e..f2df3d9fa7 100644 --- a/hw/omap2.c +++ b/hw/omap2.c @@ -2215,7 +2215,6 @@ static void omap2_mpu_reset(void *opaque) omap_synctimer_reset(mpu->synctimer); omap_sdrc_reset(mpu->sdrc); omap_gpmc_reset(mpu->gpmc); - omap_dss_reset(mpu->dss); omap_mmc_reset(mpu->mmc); cpu_reset(CPU(mpu->cpu)); } @@ -2498,14 +2497,19 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem, sysbus_mmio_map(busdev, 0, omap_l4_region_base(omap_l4ta(s->l4, 35), 0)); sysbus_mmio_map(busdev, 1, omap_l4_region_base(omap_l4ta(s->l4, 36), 0)); - s->dss = omap_dss_init(omap_l4ta(s->l4, 10), sysmem, 0x68000800, - /* XXX wire M_IRQ_25, D_L2_IRQ_30 and I_IRQ_13 together */ - qdev_get_gpio_in(s->ih[0], OMAP_INT_24XX_DSS_IRQ), - s->drq[OMAP24XX_DMA_DSS], - omap_findclk(s, "dss_clk1"), omap_findclk(s, "dss_clk2"), - omap_findclk(s, "dss_54m_clk"), - omap_findclk(s, "dss_l3_iclk"), - omap_findclk(s, "dss_l4_iclk")); + s->dss = qdev_create(NULL, "omap_dss"); + qdev_prop_set_int32(s->dss, "mpu_model", s->mpu_model); + qdev_init_nofail(s->dss); + busdev = sysbus_from_qdev(s->dss); + sysbus_connect_irq(busdev, 0, + qdev_get_gpio_in(s->ih[0], OMAP_INT_24XX_DSS_IRQ)); + sysbus_connect_irq(busdev, 1, s->drq[OMAP24XX_DMA_DSS]); + ta = omap_l4ta(s->l4, 10); + sysbus_mmio_map(busdev, 0, omap_l4_region_base(ta, 0)); + sysbus_mmio_map(busdev, 1, omap_l4_region_base(ta, 1)); + sysbus_mmio_map(busdev, 2, omap_l4_region_base(ta, 2)); + sysbus_mmio_map(busdev, 3, omap_l4_region_base(ta, 3)); + sysbus_mmio_map(busdev, 4, 0x68000800); omap_sti_init(omap_l4ta(s->l4, 18), sysmem, 0x54000000, qdev_get_gpio_in(s->ih[0], OMAP_INT_24XX_STI), |