static void tusb6010_reset(DeviceState *dev) { TUSBState *s = TUSB(dev); int i; s->test_reset = TUSB_PROD_TEST_RESET_VAL; s->host_mode = 0; s->dev_config = 0; s->otg_status = 0; /* !TUSB_DEV_OTG_STAT_ID_STATUS means host mode */ s->power = 0; s->mask = 0xffffffff; s->intr = 0x00000000; s->otg_timer_val = 0; s->scratch = 0; s->prcm_config = 0; s->prcm_mngmt = 0; s->intr_ok = 0; s->usbip_intr = 0; s->usbip_mask = 0; s->gpio_intr = 0; s->gpio_mask = 0; s->gpio_config = 0; s->dma_intr = 0; s->dma_mask = 0; s->dma_map = 0; s->dma_config = 0; s->ep0_config = 0; s->wkup_mask = 0; s->pullup[0] = s->pullup[1] = 0; s->control_config = 0; for (i = 0; i < 15; i++) { s->rx_config[i] = s->tx_config[i] = 0; } musb_reset(s->musb); }
static void tusb6010_realize(DeviceState *dev, Error **errp) { TUSBState *s = TUSB(dev); SysBusDevice *sbd = SYS_BUS_DEVICE(dev); s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s); s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s); memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s, "tusb-async", UINT32_MAX); sysbus_init_mmio(sbd, &s->iomem[0]); sysbus_init_mmio(sbd, &s->iomem[1]); sysbus_init_irq(sbd, &s->irq); qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1); s->musb = musb_init(dev, 1); }
static int tusb6010_init(SysBusDevice *sbd) { DeviceState *dev = DEVICE(sbd); TUSBState *s = TUSB(dev); s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s); s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s); memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s, "tusb-async", UINT32_MAX); sysbus_init_mmio(sbd, &s->iomem[0]); sysbus_init_mmio(sbd, &s->iomem[1]); sysbus_init_irq(sbd, &s->irq); qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1); s->musb = musb_init(dev, 1); return 0; }