wire in the dwc-hsotg (dwc2) USB host controller emulation
Wire the dwc-hsotg (dwc2) emulation into Qemu Signed-off-by: Paul Zimmerman <pauldzim@gmail.com> Reviewed-by: Philippe Mathieu-Daude <f4bug@amsat.org> Message-id: 20200520235349.21215-7-pauldzim@gmail.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
7ad3d51ebb
commit
60bf734e64
@ -129,6 +129,13 @@ static void bcm2835_peripherals_init(Object *obj)
|
||||
/* Mphi */
|
||||
sysbus_init_child_obj(obj, "mphi", &s->mphi, sizeof(s->mphi),
|
||||
TYPE_BCM2835_MPHI);
|
||||
|
||||
/* DWC2 */
|
||||
sysbus_init_child_obj(obj, "dwc2", &s->dwc2, sizeof(s->dwc2),
|
||||
TYPE_DWC2_USB);
|
||||
|
||||
object_property_add_const_link(OBJECT(&s->dwc2), "dma-mr",
|
||||
OBJECT(&s->gpu_bus_mr));
|
||||
}
|
||||
|
||||
static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
@ -377,6 +384,19 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
|
||||
INTERRUPT_HOSTPORT));
|
||||
|
||||
/* DWC2 */
|
||||
object_property_set_bool(OBJECT(&s->dwc2), true, "realized", &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
memory_region_add_subregion(&s->peri_mr, USB_OTG_OFFSET,
|
||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->dwc2), 0));
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->dwc2), 0,
|
||||
qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
|
||||
INTERRUPT_USB));
|
||||
|
||||
create_unimp(s, &s->armtmr, "bcm2835-sp804", ARMCTRL_TIMER0_1_OFFSET, 0x40);
|
||||
create_unimp(s, &s->cprman, "bcm2835-cprman", CPRMAN_OFFSET, 0x1000);
|
||||
create_unimp(s, &s->a2w, "bcm2835-a2w", A2W_OFFSET, 0x1000);
|
||||
@ -390,7 +410,6 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
|
||||
create_unimp(s, &s->otp, "bcm2835-otp", OTP_OFFSET, 0x80);
|
||||
create_unimp(s, &s->dbus, "bcm2835-dbus", DBUS_OFFSET, 0x8000);
|
||||
create_unimp(s, &s->ave0, "bcm2835-ave0", AVE0_OFFSET, 0x8000);
|
||||
create_unimp(s, &s->dwc2, "dwc-usb2", USB_OTG_OFFSET, 0x1000);
|
||||
create_unimp(s, &s->sdramc, "bcm2835-sdramc", SDRAMC_OFFSET, 0x100);
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "hw/sd/bcm2835_sdhost.h"
|
||||
#include "hw/gpio/bcm2835_gpio.h"
|
||||
#include "hw/timer/bcm2835_systmr.h"
|
||||
#include "hw/usb/hcd-dwc2.h"
|
||||
#include "hw/misc/unimp.h"
|
||||
|
||||
#define TYPE_BCM2835_PERIPHERALS "bcm2835-peripherals"
|
||||
@ -67,7 +68,7 @@ typedef struct BCM2835PeripheralState {
|
||||
UnimplementedDeviceState ave0;
|
||||
UnimplementedDeviceState bscsl;
|
||||
UnimplementedDeviceState smi;
|
||||
UnimplementedDeviceState dwc2;
|
||||
DWC2State dwc2;
|
||||
UnimplementedDeviceState sdramc;
|
||||
} BCM2835PeripheralState;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user