aboutsummaryrefslogtreecommitdiff
path: root/hw/omap2.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/omap2.c')
-rw-r--r--hw/omap2.c22
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),