Add the two usb controllers in Zynq. Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> ---
hw/xilinx_zynq.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c index c55dafb..ed6934f 100644 --- a/hw/xilinx_zynq.c +++ b/hw/xilinx_zynq.c @@ -77,6 +77,19 @@ static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq) } +static inline void zynq_init_usb(uint32_t base_addr, qemu_irq irq) +{ + DeviceState *dev = qdev_create(NULL, "ehci-sysbus"); + SysBusDevice *busdev; + + qdev_prop_set_uint16(dev, "capabase", 0x100); + qdev_prop_set_uint32(dev, "opregbase", 0x140); + qdev_init_nofail(dev); + busdev = sysbus_from_qdev(dev); + sysbus_mmio_map(busdev, 0, base_addr); + sysbus_connect_irq(busdev, 0, irq); +} + static void zynq_init(QEMUMachineInitArgs *args) { ram_addr_t ram_size = args->ram_size; @@ -150,6 +163,9 @@ static void zynq_init(QEMUMachineInitArgs *args) zynq_init_spi_flashes(0xE0006000, pic[58-IRQ_OFFSET]); zynq_init_spi_flashes(0xE0007000, pic[81-IRQ_OFFSET]); + zynq_init_usb(0xE0002000, pic[53-IRQ_OFFSET]); + zynq_init_usb(0xE0003000, pic[75-IRQ_OFFSET]); + sysbus_create_simple("cadence_uart", 0xE0000000, pic[59-IRQ_OFFSET]); sysbus_create_simple("cadence_uart", 0xE0001000, pic[82-IRQ_OFFSET]); -- 1.7.0.4