* [PATCH 1/6] Add BCM2835 SOC MPHI emulation
2020-03-22 22:27 [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation Paul Zimmerman
@ 2020-03-22 22:27 ` Paul Zimmerman
2020-03-22 22:27 ` [PATCH 2/6] dwc-hsotg USB host controller register definitions Paul Zimmerman
` (7 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Paul Zimmerman @ 2020-03-22 22:27 UTC (permalink / raw)
To: kraxel; +Cc: peter.maydell, stefanha, qemu-devel, Paul Zimmerman, jsnow, f4bug
Add BCM2835 SOC MPHI emulation. It is very basic, only providing
the FIQ interrupt needed to allow the dwc-otg USB host controller
driver in the Raspbian kernel to function.
Signed-off-by: Paul Zimmerman <pauldzim@gmail.com>
---
hw/arm/bcm2835_peripherals.c | 17 +++
hw/misc/Makefile.objs | 1 +
hw/misc/bcm2835_mphi.c | 215 +++++++++++++++++++++++++++
include/hw/arm/bcm2835_peripherals.h | 2 +
include/hw/misc/bcm2835_mphi.h | 50 +++++++
5 files changed, 285 insertions(+)
create mode 100644 hw/misc/bcm2835_mphi.c
create mode 100644 include/hw/misc/bcm2835_mphi.h
diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
index 17207ae07e..dd7e6883cb 100644
--- a/hw/arm/bcm2835_peripherals.c
+++ b/hw/arm/bcm2835_peripherals.c
@@ -123,6 +123,10 @@ static void bcm2835_peripherals_init(Object *obj)
sysbus_init_child_obj(obj, "gpio", &s->gpio, sizeof(s->gpio),
TYPE_BCM2835_GPIO);
+ /* Mphi */
+ sysbus_init_child_obj(obj, "mphi", &s->mphi, sizeof(s->mphi),
+ TYPE_BCM2835_MPHI);
+
object_property_add_const_link(OBJECT(&s->gpio), "sdbus-sdhci",
OBJECT(&s->sdhci.sdbus), &error_abort);
object_property_add_const_link(OBJECT(&s->gpio), "sdbus-sdhost",
@@ -367,6 +371,19 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
return;
}
+ /* Mphi */
+ object_property_set_bool(OBJECT(&s->mphi), true, "realized", &err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
+
+ memory_region_add_subregion(&s->peri_mr, MPHI_OFFSET,
+ sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->mphi), 0));
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->mphi), 0,
+ qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
+ INTERRUPT_HOSTPORT));
+
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);
diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs
index 68aae2eabb..91085cc21b 100644
--- a/hw/misc/Makefile.objs
+++ b/hw/misc/Makefile.objs
@@ -57,6 +57,7 @@ common-obj-$(CONFIG_OMAP) += omap_l4.o
common-obj-$(CONFIG_OMAP) += omap_sdrc.o
common-obj-$(CONFIG_OMAP) += omap_tap.o
common-obj-$(CONFIG_RASPI) += bcm2835_mbox.o
+common-obj-$(CONFIG_RASPI) += bcm2835_mphi.o
common-obj-$(CONFIG_RASPI) += bcm2835_property.o
common-obj-$(CONFIG_RASPI) += bcm2835_rng.o
common-obj-$(CONFIG_RASPI) += bcm2835_thermal.o
diff --git a/hw/misc/bcm2835_mphi.c b/hw/misc/bcm2835_mphi.c
new file mode 100644
index 0000000000..32433ce156
--- /dev/null
+++ b/hw/misc/bcm2835_mphi.c
@@ -0,0 +1,215 @@
+/*
+ * BCM2835 SOC MPHI emulation
+ *
+ * Very basic emulation, only providing the FIQ interrupt needed to
+ * allow the dwc-otg USB host controller driver in the Raspbian kernel
+ * to function.
+ *
+ * Copyright (c) 2020 Paul Zimmerman <pauldzim@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "hw/misc/bcm2835_mphi.h"
+#include "qemu/error-report.h"
+#include "qemu/main-loop.h"
+
+//#define MPHI_DEBUG 1
+
+#ifdef MPHI_DEBUG
+#define DPRINTF(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
+#else
+#define DPRINTF(fmt, ...) do {} while(0)
+#endif
+
+static inline void mphi_raise_irq(BCM2835MphiState *s)
+{
+ DPRINTF("mphi_raise_irq, s %p\n", s);
+ qemu_set_irq(s->irq, 1);
+}
+
+static inline void mphi_lower_irq(BCM2835MphiState *s)
+{
+ DPRINTF("mphi_lower_irq, s %p\n", s);
+ qemu_set_irq(s->irq, 0);
+}
+
+static uint64_t mphi_reg_read(void *ptr, hwaddr addr, unsigned size)
+{
+ BCM2835MphiState *s = ptr;
+ uint32_t reg = s->regbase + addr;
+ uint32_t val = 0;
+
+ switch (reg) {
+ case 0x28: /* outdda */
+ val = s->outdda;
+ break;
+ case 0x2c: /* outddb */
+ val = s->outddb;
+ break;
+ case 0x4c: /* ctrl */
+ val = s->ctrl;
+ val |= 1 << 17;
+ break;
+ case 0x50: /* intstat */
+ val = s->intstat;
+ break;
+ case 0x1f0: /* swirq_set */
+ val = s->swirq_set;
+ break;
+ case 0x1f4: /* swirq_clr */
+ val = s->swirq_clr;
+ break;
+ default:
+ break;
+ }
+
+ DPRINTF("mphi_reg_read 0x%04lx val 0x%08x\n", addr, val);
+ return val;
+}
+
+static void mphi_reg_write(void *ptr, hwaddr addr, uint64_t val, unsigned size)
+{
+ BCM2835MphiState *s = ptr;
+ uint32_t reg = s->regbase + addr;
+ uint32_t old;
+ int do_irq = 0;
+
+ DPRINTF("mphi_reg_write 0x%04lx val 0x%08lx ", addr, val);
+ val &= 0xffffffff;
+
+ switch (reg) {
+ case 0x28: /* outdda */
+ old = s->outdda;
+ s->outdda = val;
+ break;
+ case 0x2c: /* outddb */
+ old = s->outddb;
+ s->outddb = val;
+ if (val & (1 << 29))
+ do_irq = 1;
+ break;
+ case 0x4c: /* ctrl */
+ old = s->ctrl;
+ s->ctrl = val;
+ if (val & (1 << 16))
+ do_irq = -1;
+ break;
+ case 0x50: /* intstat */
+ old = s->intstat;
+ s->intstat = val;
+ if (val & ((1 << 16) | (1 << 29)))
+ do_irq = -1;
+ break;
+ case 0x1f0: /* swirq_set */
+ old = s->swirq_set;
+ s->swirq_set = val;
+ do_irq = 1;
+ break;
+ case 0x1f4: /* swirq_clr */
+ old = s->swirq_clr;
+ s->swirq_clr = val;
+ do_irq = -1;
+ break;
+ default:
+ break;
+ }
+
+ DPRINTF("old 0x%08x result 0x%08lx\n", old, val);
+ old = old;
+ if (do_irq > 0)
+ mphi_raise_irq(s);
+ else if (do_irq < 0)
+ mphi_lower_irq(s);
+}
+
+static const MemoryRegionOps mphi_mmio_ops = {
+ .read = mphi_reg_read,
+ .write = mphi_reg_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static void mphi_realize(BCM2835MphiState *s, DeviceState *dev, Error **errp)
+{
+ DPRINTF("mphi_realize, s %p dev %p\n", s, dev);
+ s->device = dev;
+}
+
+static void mphi_init(BCM2835MphiState *s, DeviceState *dev)
+{
+ DPRINTF("usb_mphi_init, s %p dev %p\n", s, dev);
+
+ memory_region_init(&s->mem, OBJECT(dev), "mphi", MPHI_MMIO_SIZE);
+ memory_region_init_io(&s->mem_reg, OBJECT(dev), &mphi_mmio_ops, s,
+ "global", 0x200);
+ memory_region_add_subregion(&s->mem, s->regbase, &s->mem_reg);
+}
+
+static void mphi_sysbus_reset(DeviceState *dev)
+{
+#ifdef MPHI_DEBUG
+ SysBusDevice *d = SYS_BUS_DEVICE(dev);
+ BCM2835MphiState *s = BCM2835_MPHI(d);
+#endif
+
+ DPRINTF("mphi_sysbus_reset, dev %p d %p s %p\n", dev, d, s);
+}
+
+static void mphi_sysbus_realize(DeviceState *dev, Error **errp)
+{
+ SysBusDevice *d = SYS_BUS_DEVICE(dev);
+ BCM2835MphiState *s = BCM2835_MPHI(dev);
+
+ DPRINTF("mphi_sysbus_realize, dev %p d %p s %p\n", dev, d, s);
+ mphi_realize(s, dev, errp);
+ sysbus_init_irq(d, &s->irq);
+}
+
+static void mphi_sysbus_init(Object *obj)
+{
+ SysBusDevice *d = SYS_BUS_DEVICE(obj);
+ BCM2835MphiState *s = BCM2835_MPHI(obj);
+
+ DPRINTF("mphi_sysbus_init, obj %p d %p s %p\n", obj, d, s);
+ s->regbase = 0;
+ s->as = &address_space_memory;
+ mphi_init(s, DEVICE(obj));
+ sysbus_init_mmio(d, &s->mem);
+}
+
+static void mphi_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+
+ DPRINTF("mphi_class_init, class %p dc %p\n", klass, dc);
+ dc->realize = mphi_sysbus_realize;
+ dc->reset = mphi_sysbus_reset;
+}
+
+static const TypeInfo bcm2835_mphi_type_info = {
+ .name = TYPE_BCM2835_MPHI,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(BCM2835MphiState),
+ .instance_init = mphi_sysbus_init,
+ .class_init = mphi_class_init,
+};
+
+static void bcm2835_mphi_register_types(void)
+{
+ DPRINTF("bcm2835_mphi_register_types\n");
+ type_register_static(&bcm2835_mphi_type_info);
+}
+
+type_init(bcm2835_mphi_register_types)
diff --git a/include/hw/arm/bcm2835_peripherals.h b/include/hw/arm/bcm2835_peripherals.h
index 7859281e11..77958ca60e 100644
--- a/include/hw/arm/bcm2835_peripherals.h
+++ b/include/hw/arm/bcm2835_peripherals.h
@@ -20,6 +20,7 @@
#include "hw/misc/bcm2835_property.h"
#include "hw/misc/bcm2835_rng.h"
#include "hw/misc/bcm2835_mbox.h"
+#include "hw/misc/bcm2835_mphi.h"
#include "hw/misc/bcm2835_thermal.h"
#include "hw/sd/sdhci.h"
#include "hw/sd/bcm2835_sdhost.h"
@@ -41,6 +42,7 @@ typedef struct BCM2835PeripheralState {
qemu_irq irq, fiq;
BCM2835SystemTimerState systmr;
+ BCM2835MphiState mphi;
UnimplementedDeviceState armtmr;
UnimplementedDeviceState cprman;
UnimplementedDeviceState a2w;
diff --git a/include/hw/misc/bcm2835_mphi.h b/include/hw/misc/bcm2835_mphi.h
new file mode 100644
index 0000000000..826ae2af3b
--- /dev/null
+++ b/include/hw/misc/bcm2835_mphi.h
@@ -0,0 +1,50 @@
+/*
+ * BCM2835 SOC MPHI state definitions
+ *
+ * Copyright (c) 2020 Paul Zimmerman <pauldzim@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef HW_MISC_BCM2835_MPHI_H
+#define HW_MISC_BCM2835_MPHI_H
+
+#include "hw/irq.h"
+#include "hw/sysbus.h"
+#include "sysemu/dma.h"
+
+#define MPHI_MMIO_SIZE 0x1000
+
+typedef struct BCM2835MphiState BCM2835MphiState;
+
+struct BCM2835MphiState {
+ SysBusDevice parent_obj;
+ DeviceState *device;
+ qemu_irq irq;
+ AddressSpace *as;
+ MemoryRegion mem;
+ MemoryRegion mem_reg;
+ uint16_t regbase;
+
+ uint32_t outdda;
+ uint32_t outddb;
+ uint32_t ctrl;
+ uint32_t intstat;
+ uint32_t swirq_set;
+ uint32_t swirq_clr;
+};
+
+#define TYPE_BCM2835_MPHI "bcm2835-mphi"
+
+#define BCM2835_MPHI(obj) \
+ OBJECT_CHECK(BCM2835MphiState, (obj), TYPE_BCM2835_MPHI)
+
+#endif
--
2.17.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 4/6] dwc-hsotg USB host controller emulation
2020-03-22 22:27 [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation Paul Zimmerman
` (2 preceding siblings ...)
2020-03-22 22:27 ` [PATCH 3/6] dwc-hsotg USB host controller state definitions Paul Zimmerman
@ 2020-03-22 22:27 ` Paul Zimmerman
2020-03-22 22:27 ` [PATCH 5/6] Add short-packet handling to usb-storage driver Paul Zimmerman
` (4 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Paul Zimmerman @ 2020-03-22 22:27 UTC (permalink / raw)
To: kraxel; +Cc: peter.maydell, stefanha, qemu-devel, Paul Zimmerman, jsnow, f4bug
Add the dwc-hsotg (dwc2) USB host controller emulation code.
Based on hw/usb/hcd-ehci.c and hw/usb/hcd-ohci.c.
Note that to use this with the dwc-otg driver in the Raspbian
kernel, you must pass the option "dwc_otg.fiq_fsm_enable=0" on
the kernel command line.
I have used some on-line sources of information while developing
this emulation, including:
http://www.capital-micro.com/PDF/CME-M7_Family_User_Guide_EN.pdf
has a pretty complete description of the controller starting on
page 370.
https://sourceforge.net/p/wive-ng/wive-ng-mt/ci/master/tree/docs/DataSheets/RT3050_5x_V2.0_081408_0902.pdf
has a description of the controller registers starting on page
130.
Signed-off-by: Paul Zimmerman <pauldzim@gmail.com>
---
hw/usb/hcd-dwc2.c | 1353 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1353 insertions(+)
create mode 100644 hw/usb/hcd-dwc2.c
diff --git a/hw/usb/hcd-dwc2.c b/hw/usb/hcd-dwc2.c
new file mode 100644
index 0000000000..fd33190611
--- /dev/null
+++ b/hw/usb/hcd-dwc2.c
@@ -0,0 +1,1353 @@
+/*
+ * dwc-hsotg (dwc2) USB host controller emulation
+ *
+ * Based on hw/usb/hcd-ehci.c and hw/usb/hcd-ohci.c
+ *
+ * Copyright (c) 2020 Paul Zimmerman <pauldzim@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "hw/usb/dwc2-regs.h"
+#include "hw/usb/hcd-dwc2.h"
+#include "qemu/error-report.h"
+#include "qemu/main-loop.h"
+
+//#define DWC2_DEBUG 1
+
+#ifdef DWC2_DEBUG
+#define DPRINTF(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
+#else
+#define DPRINTF(fmt, ...) do {} while(0)
+#endif
+
+#define DWC2_DO_SOFS 1
+
+#define USB_HZ_FS 12000000
+#define USB_HZ_HS 96000000
+
+/* nifty macros from Arnon's EHCI version */
+#define get_field(data, field) \
+ (((data) & field##_MASK) >> field##_SHIFT)
+
+#define set_field(data, newval, field) do { \
+ uint32_t val = *data; \
+ val &= ~ field##_MASK; \
+ val |= ((newval) << field##_SHIFT) & field##_MASK; \
+ *data = val; \
+} while (0)
+
+#define get_bit(data, bitmask) \
+ (!!((data) & bitmask))
+
+/* update irq line */
+static inline void dwc2_update_irq(DWC2State *s)
+{
+ static int oldlevel;
+ int level = 0;
+
+ if ((s->gintsts & s->gintmsk) && (s->gahbcfg & GAHBCFG_GLBL_INTR_EN))
+ level = 1;
+ if (level != oldlevel) {
+ /*DPRINTF("dwc2_update_irq, sts 0x%08x msk 0x%08x level %d\n",
+ s->gintsts, s->gintmsk, level);*/
+ oldlevel = level;
+ qemu_set_irq(s->irq, level);
+ }
+}
+
+/* flag interrupt condition */
+static inline void dwc2_raise_global_irq(DWC2State *s, uint32_t intr)
+{
+ /*DPRINTF("dwc2_raise_global_irq, 0x%08x\n", intr);*/
+ s->gintsts |= intr;
+ dwc2_update_irq(s);
+}
+
+static inline void dwc2_lower_global_irq(DWC2State *s, uint32_t intr)
+{
+ /*DPRINTF("dwc2_lower_global_irq, 0x%08x\n", intr);*/
+ s->gintsts &= ~intr;
+ dwc2_update_irq(s);
+}
+
+static inline void dwc2_raise_host_irq(DWC2State *s, uint32_t intr)
+{
+ /*DPRINTF("dwc2_raise_host_irq, 0x%04x\n", intr);*/
+ s->haint |= intr;
+ s->haint &= 0xffff;
+ if (s->haint & s->haintmsk) {
+ dwc2_raise_global_irq(s, GINTSTS_HCHINT);
+ }
+}
+
+static inline void dwc2_lower_host_irq(DWC2State *s, uint32_t intr)
+{
+ /*DPRINTF("dwc2_lower_host_irq, 0x%04x\n", intr);*/
+ s->haint &= ~intr;
+ if (!(s->haint & s->haintmsk)) {
+ dwc2_lower_global_irq(s, GINTSTS_HCHINT);
+ }
+}
+
+static inline void dwc2_update_hc_irq(DWC2State *s, int index)
+{
+ uint32_t intr = 1 << (index >> 3);
+
+ /*DPRINTF("dwc2_update_hc_irq, hcint%d 0x%04x hcintmsk%d 0x%04x\n",
+ index >> 3, s->hreg1[index + 2], index >> 3, s->hreg1[index + 3]);*/
+ if (s->hreg1[index + 2] & s->hreg1[index + 3]) {
+ dwc2_raise_host_irq(s, intr);
+ } else {
+ dwc2_lower_host_irq(s, intr);
+ }
+}
+
+/* set a timer for EOF */
+static void dwc2_eof_timer(DWC2State *s)
+{
+#ifdef DWC2_DO_SOFS
+ timer_mod(s->eof_timer, s->sof_time + s->usb_frame_time);
+#endif
+}
+
+#ifdef DWC2_DO_SOFS
+/* Set a timer for EOF and generate a SOF event */
+static void dwc2_sof(DWC2State *s)
+{
+ s->sof_time += s->usb_frame_time;
+ dwc2_eof_timer(s);
+ dwc2_raise_global_irq(s, GINTSTS_SOF);
+}
+
+/* Do frame processing on frame boundary */
+static void dwc2_frame_boundary(void *opaque)
+{
+ DWC2State *s = opaque;
+
+ /* Frame boundary, so do EOF stuff here */
+
+ /* Increment frame number */
+ s->frame_number = (s->frame_number + 1) & 0xffff;
+ s->hfnum = (s->hfnum & ~HFNUM_FRNUM_MASK) |
+ (s->frame_number & HFNUM_MAX_FRNUM);
+
+ /* Do SOF stuff here */
+ dwc2_sof(s);
+}
+#endif
+
+/* Start sending SOF tokens across the USB bus, lists are processed in
+ * next frame
+ */
+static int dwc2_bus_start(DWC2State *s)
+{
+ /* Delay the first SOF event by one frame time as
+ * linux driver is not ready to receive it and
+ * can meet some race conditions
+ */
+
+ s->sof_time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+ dwc2_eof_timer(s);
+
+ return 1;
+}
+
+/* Stop sending SOF tokens on the bus */
+static void dwc2_bus_stop(DWC2State *s)
+{
+#ifdef DWC2_DO_SOFS
+ timer_del(s->eof_timer);
+#endif
+}
+
+static USBDevice *dwc2_find_device(DWC2State *s, uint8_t addr)
+{
+ USBDevice *dev;
+ USBPort *port;
+ int i;
+
+ DPRINTF("dwc2_find_device\n");
+ for (i = 0; i < NB_PORTS; i++) {
+ port = &s->ports[i];
+ if (!(s->hprt0 & HPRT0_ENA)) {
+ DPRINTF("Port %d not enabled\n", i);
+ continue;
+ }
+ dev = usb_find_device(port, addr);
+ if (dev != NULL) {
+ DPRINTF("found device\n");
+ return dev;
+ }
+ }
+ DPRINTF("device NOT found\n");
+ return NULL;
+}
+
+static const char *pstatus[] = {
+ "USB_RET_SUCCESS", "USB_RET_NODEV", "USB_RET_NAK", "USB_RET_STALL",
+ "USB_RET_BABBLE", "USB_RET_IOERROR", "USB_RET_ASYNC",
+ "USB_RET_ADD_TO_QUEUE", "USB_RET_REMOVE_FROM_QUEUE"
+};
+
+static uint32_t pintr[] = {
+ HCINTMSK_XFERCOMPL, HCINTMSK_XACTERR, HCINTMSK_NAK, HCINTMSK_STALL,
+ HCINTMSK_BBLERR, HCINTMSK_XACTERR, HCINTMSK_XACTERR, HCINTMSK_XACTERR,
+ HCINTMSK_XACTERR
+};
+
+#ifdef DWC2_DEBUG
+static const char *types[] = {
+ "Ctrl", "Isoc", "Bulk", "Intr"
+};
+
+static const char *dirs[] = {
+ "Out", "In"
+};
+#endif
+
+static void dwc2_handle_packet(DWC2State *s, USBDevice *dev, USBEndpoint *ep,
+ uint32_t index, bool send) {
+ DWC2Packet *p;
+ uint32_t hcchar = s->hreg1[index];
+ uint32_t hctsiz = s->hreg1[index + 4];
+ uint32_t hcdma = s->hreg1[index + 5];
+ uint32_t chan, epnum, epdir, eptype, mps, pid, pcnt, len, tlen, intr = 0;
+ uint32_t tpcnt, stsidx, actual = 0;
+ int i;
+ bool done = false;
+
+ epnum = get_field(hcchar, HCCHAR_EPNUM);
+ epdir = get_bit(hcchar, HCCHAR_EPDIR);
+ eptype = get_field(hcchar, HCCHAR_EPTYPE);
+ mps = get_field(hcchar, HCCHAR_MPS);
+ pid = get_field(hctsiz, TSIZ_SC_MC_PID);
+ pcnt = get_field(hctsiz, TSIZ_PKTCNT);
+ len = get_field(hctsiz, TSIZ_XFERSIZE);
+ assert(len <= MAX_XFER_SIZE);
+ chan = index >> 3;
+ p = &s->packet[chan];
+
+ DPRINTF("dwc2_handle_packet,"
+ " ch %d dev %p pkt %p ep %d type %s dir %s mps %d len %d pcnt %d\n",
+ chan, dev, &p->packet, epnum, types[eptype], dirs[epdir], mps, len,
+ pcnt);
+
+ if (eptype == USB_ENDPOINT_XFER_CONTROL && pid == TSIZ_SC_MC_PID_SETUP) {
+ pid = USB_TOKEN_SETUP;
+ } else {
+ pid = epdir ? USB_TOKEN_IN : USB_TOKEN_OUT;
+ }
+
+ tlen = len;
+ if (p->small) {
+ if (tlen > mps) {
+ tlen = mps;
+ }
+ }
+
+ if (send) {
+ if (pid != USB_TOKEN_IN) {
+ DPRINTF("calling dma_memory_read, len %u\n", tlen);
+ if (dma_memory_read(&s->dma_as, hcdma,
+ s->usb_buf[chan], tlen) != MEMTX_OK) {
+ fprintf(stderr, "dma_memory_read failed\n");
+ }
+ if (tlen > 0) {
+ for (i = 0; i < 8; i++)
+ DPRINTF(" %02x", s->usb_buf[chan][i]);
+ DPRINTF("\n");
+ }
+ }
+
+ usb_packet_init(&p->packet);
+ usb_packet_setup(&p->packet, pid, ep, 0, hcdma,
+ pid != USB_TOKEN_IN, true);
+ usb_packet_addbuf(&p->packet, s->usb_buf[chan], tlen);
+ p->async = DWC2_ASYNC_NONE;
+ usb_handle_packet(dev, &p->packet);
+ }
+
+ stsidx = -p->packet.status;
+ assert(stsidx < sizeof(pstatus) / sizeof(*pstatus));
+ DPRINTF("packet status %s len %d\n", pstatus[stsidx],
+ p->packet.actual_length);
+ if (p->packet.status != USB_RET_SUCCESS &&
+ p->packet.status != USB_RET_NAK &&
+ p->packet.status != USB_RET_STALL) {
+ fprintf(stderr, "dwc2_handle_packet: packet status %s\n",
+ pstatus[stsidx]);
+ }
+
+ if (p->packet.status == USB_RET_ASYNC) {
+ usb_device_flush_ep_queue(dev, ep);
+ assert(p->async != DWC2_ASYNC_INFLIGHT);
+ p->dev = dev;
+ p->ep = ep;
+ p->index = index;
+ p->epnum = epnum;
+ p->mps = mps;
+ p->pid = pid;
+ p->pcnt = pcnt;
+ p->len = tlen;
+ p->needs_service = false;
+ p->async = DWC2_ASYNC_INFLIGHT;
+ return;
+ }
+
+ if (p->packet.status == USB_RET_SUCCESS) {
+ actual = p->packet.actual_length;
+ if (pid == USB_TOKEN_IN) {
+ DPRINTF("calling dma_memory_write, len %u\n", actual);
+ if (dma_memory_write(&s->dma_as, hcdma, s->usb_buf[chan],
+ actual) != MEMTX_OK) {
+ fprintf(stderr, "dma_memory_write failed\n");
+ }
+ if (actual > 0) {
+ for (i = 0; i < 8; i++)
+ DPRINTF(" %02x", s->usb_buf[chan][i]);
+ DPRINTF("\n");
+ }
+ }
+
+ tpcnt = actual / mps;
+ if (actual % mps) {
+ tpcnt++;
+ if (pid == USB_TOKEN_IN)
+ done = true;
+ }
+
+ pcnt -= tpcnt < pcnt ? tpcnt : pcnt;
+ set_field(&hctsiz, pcnt, TSIZ_PKTCNT);
+ len -= actual < len ? actual : len;
+ set_field(&hctsiz, len, TSIZ_XFERSIZE);
+ s->hreg1[index + 4] = hctsiz;
+
+ hcdma += actual;
+ s->hreg1[index + 5] = hcdma;
+
+ if (!pcnt || len == 0 || actual == 0) {
+ done = true;
+ }
+ } else {
+ intr |= pintr[stsidx];
+ if (p->packet.status == USB_RET_NAK &&
+ (eptype == USB_ENDPOINT_XFER_CONTROL ||
+ eptype == USB_ENDPOINT_XFER_BULK)) {
+ /* for ctrl/bulk, automatically retry on NAK,
+ but send the interrupt anyway */
+ intr &= ~HCINTMSK_RESERVED14_31;
+ s->hreg1[index + 2] |= intr;
+ } else {
+ intr |= HCINTMSK_CHHLTD;
+ done = true;
+ }
+ }
+
+ usb_packet_cleanup(&p->packet);
+
+ if (done) {
+ hcchar &= ~HCCHAR_CHENA;
+ s->hreg1[index] = hcchar;
+ if (!(intr & HCINTMSK_CHHLTD)) {
+ intr |= HCINTMSK_CHHLTD | HCINTMSK_XFERCOMPL;
+ }
+ intr &= ~HCINTMSK_RESERVED14_31;
+ s->hreg1[index + 2] |= intr;
+ p->needs_service = false;
+ DPRINTF("done %s len %d actual %d pcnt %d\n", pstatus[stsidx], len, actual, pcnt);
+ dwc2_update_hc_irq(s, index);
+ return;
+ }
+
+ p->dev = dev;
+ p->ep = ep;
+ p->index = index;
+ p->epnum = epnum;
+ p->mps = mps;
+ p->pid = pid;
+ p->pcnt = pcnt;
+ p->len = tlen;
+ p->needs_service = true;
+ DPRINTF("cont %s len %d actual %d pcnt %d\n", pstatus[stsidx], len, actual, pcnt);
+}
+
+/* Attach or detach a device on root hub */
+
+static void dwc2_attach(USBPort *port)
+{
+ DWC2State *s = port->opaque;
+ int hispd = 0;
+
+ DPRINTF("dwc2_attach, port %p\n", port);
+ assert(port->index < NB_PORTS);
+
+ if (!port->dev || !port->dev->attached)
+ return;
+
+ s->hprt0 &= ~HPRT0_SPD_MASK;
+
+ switch (port->dev->speed) {
+ case USB_SPEED_LOW:
+ DPRINTF("low-speed device attached\n");
+ s->hprt0 |= HPRT0_SPD_LOW_SPEED << HPRT0_SPD_SHIFT;
+ break;
+ case USB_SPEED_FULL:
+ DPRINTF("full-speed device attached\n");
+ s->hprt0 |= HPRT0_SPD_FULL_SPEED << HPRT0_SPD_SHIFT;
+ break;
+ case USB_SPEED_HIGH:
+ DPRINTF("high-speed device attached\n");
+ s->hprt0 |= HPRT0_SPD_HIGH_SPEED << HPRT0_SPD_SHIFT;
+ hispd = 1;
+ break;
+ }
+
+ if (hispd) {
+ s->usb_frame_time = NANOSECONDS_PER_SECOND / 8000; /* 125000 */
+ if (NANOSECONDS_PER_SECOND >= USB_HZ_HS) {
+ s->usb_bit_time = NANOSECONDS_PER_SECOND / USB_HZ_HS; /* 10.4 */
+ } else {
+ s->usb_bit_time = 1;
+ }
+ } else {
+ s->usb_frame_time = NANOSECONDS_PER_SECOND / 1000; /* 1000000 */
+ if (NANOSECONDS_PER_SECOND >= USB_HZ_FS) {
+ s->usb_bit_time = NANOSECONDS_PER_SECOND / USB_HZ_FS; /* 83.3 */
+ } else {
+ s->usb_bit_time = 1;
+ }
+ }
+
+ s->fi = 11999;
+ s->hprt0 |= HPRT0_CONNDET | HPRT0_CONNSTS;
+
+ dwc2_bus_start(s);
+ dwc2_raise_global_irq(s, GINTSTS_PRTINT);
+}
+
+static void dwc2_detach(USBPort *port)
+{
+ DWC2State *s = port->opaque;
+
+ DPRINTF("dwc2_detach, port %p\n", port);
+ assert(port->index < NB_PORTS);
+
+ dwc2_bus_stop(s);
+
+ s->hprt0 &= ~(HPRT0_SPD_MASK | HPRT0_SUSP | HPRT0_ENA | HPRT0_CONNSTS);
+ s->hprt0 |= HPRT0_CONNDET | HPRT0_ENACHG;
+
+ dwc2_raise_global_irq(s, GINTSTS_PRTINT);
+}
+
+static void dwc2_child_detach(USBPort *port, USBDevice *child)
+{
+ DPRINTF("dwc2_child_detach, port %p child %p\n", port, child);
+ assert(port->index < NB_PORTS);
+}
+
+static void dwc2_wakeup(USBPort *port)
+{
+ DWC2State *s = port->opaque;
+
+ DPRINTF("dwc2_wakeup, port %p\n", port);
+ assert(port->index < NB_PORTS);
+
+ if (s->hprt0 & HPRT0_SUSP) {
+ s->hprt0 |= HPRT0_RES;
+ dwc2_raise_global_irq(s, GINTSTS_PRTINT);
+ }
+
+ qemu_bh_schedule(s->async_bh);
+}
+
+static void dwc2_async_complete_packet(USBPort *port, USBPacket *packet)
+{
+ DWC2State *s = port->opaque;
+ DWC2Packet *p;
+
+ DPRINTF("dwc2_async_complete_packet, port %p packet %p\n", port, packet);
+ assert(port->index < NB_PORTS);
+
+ p = container_of(packet, DWC2Packet, packet);
+ DPRINTF("ch %d dev %p epnum %d\n", p->index >> 3, p->dev, p->epnum);
+ assert(p->async == DWC2_ASYNC_INFLIGHT);
+
+ if (packet->status == USB_RET_REMOVE_FROM_QUEUE) {
+ usb_packet_cleanup(packet);
+ return;
+ }
+
+ dwc2_handle_packet(s, p->dev, p->ep, p->index, false);
+
+ p->async = DWC2_ASYNC_FINISHED;
+ qemu_bh_schedule(s->async_bh);
+}
+
+static USBPortOps dwc2_port_ops = {
+ .attach = dwc2_attach,
+ .detach = dwc2_detach,
+ .child_detach = dwc2_child_detach,
+ .wakeup = dwc2_wakeup,
+ .complete = dwc2_async_complete_packet,
+};
+
+static uint32_t dwc2_get_frame_remaining(DWC2State *s)
+{
+ uint32_t fr = 0;
+ int64_t tks;
+
+ tks = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - s->sof_time;
+ if (tks < 0) {
+ tks = 0;
+ }
+
+ /* avoid muldiv if possible */
+ if (tks >= s->usb_frame_time || tks < s->usb_bit_time) {
+ goto out;
+ }
+
+ /* tks = number of ns since SOF, divided by 83 (fs) or 10 (hs) */
+ tks = tks / s->usb_bit_time;
+ if (tks >= (int64_t)s->fi) {
+ goto out;
+ }
+
+ /* remaining = frame interval minus tks */
+ fr = (uint32_t)((int64_t)s->fi - tks);
+
+out:
+ return fr;
+}
+
+static void dwc2_work_bh(void *opaque)
+{
+ DWC2State *s = opaque;
+ DWC2Packet *p;
+ int64_t t_now, expire_time;
+ int chan;
+ bool done = false, need_timer = false;
+
+ DPRINTF("dwc2_work_bh\n");
+ if (s->working) {
+ return;
+ }
+ s->working = true;
+
+ t_now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+ chan = s->next_chan;
+
+ while (true) {
+ p = &s->packet[chan];
+ if (p->needs_service) {
+ DPRINTF("start %d servicing ch %d dev %p epnum %d\n",
+ s->next_chan, chan, p->dev, p->epnum);
+ dwc2_handle_packet(s, p->dev, p->ep, p->index, true);
+ need_timer = true;
+ done = true;
+ }
+ if (++chan == NB_CHAN) {
+ chan = 0;
+ }
+ if (done) {
+ s->next_chan = chan;
+ DPRINTF("next %d\n", chan);
+ break;
+ }
+ if (chan == s->next_chan) {
+ break;
+ }
+ }
+
+ if (need_timer) {
+ expire_time = t_now + NANOSECONDS_PER_SECOND / 4000;
+ timer_mod(s->frame_timer, expire_time);
+ }
+ s->working = false;
+}
+
+static void dwc2_enable_chan(DWC2State *s, uint32_t index)
+{
+ USBDevice *dev;
+ USBEndpoint *ep;
+ uint32_t hcchar;
+ uint32_t hctsiz;
+ uint32_t devadr, epnum, epdir, eptype, pid, len;
+ DWC2Packet *p;
+
+ assert((index >> 3) < NB_CHAN);
+ p = &s->packet[index >> 3];
+ hcchar = s->hreg1[index];
+ hctsiz = s->hreg1[index + 4];
+ devadr = get_field(hcchar, HCCHAR_DEVADDR);
+ epnum = get_field(hcchar, HCCHAR_EPNUM);
+ epdir = get_bit(hcchar, HCCHAR_EPDIR);
+ eptype = get_field(hcchar, HCCHAR_EPTYPE);
+ pid = get_field(hctsiz, TSIZ_SC_MC_PID);
+ len = get_field(hctsiz, TSIZ_XFERSIZE);
+
+ dev = dwc2_find_device(s, devadr);
+
+ DPRINTF("dwc2_enable_chan, ch %d dev %p pkt %p epnum %d\n",
+ index >> 3, dev, &p->packet, epnum);
+ if (dev == NULL) {
+ fprintf(stderr, "no device found\n");
+ return;
+ }
+
+ if (eptype == USB_ENDPOINT_XFER_CONTROL && pid == TSIZ_SC_MC_PID_SETUP) {
+ pid = USB_TOKEN_SETUP;
+ } else {
+ pid = epdir ? USB_TOKEN_IN : USB_TOKEN_OUT;
+ }
+
+ ep = usb_ep_get(dev, pid, epnum);
+
+ /* Hack: Networking doesn't like us delivering large transfers, it kind
+ * of works but the latency is horrible. So if the tansfer is <= the mtu
+ * size, we take that as a hint that this might be a network transfer,
+ * and do the transfer packet-by-packet.
+ */
+ if (len > 1536) {
+ p->small = false;
+ } else {
+ p->small = true;
+ }
+
+ dwc2_handle_packet(s, dev, ep, index, true);
+ qemu_bh_schedule(s->async_bh);
+}
+
+#ifdef DWC2_DEBUG
+static const char *glbregnm[] = {
+ "GOTGCTL ", "GOTGINT ", "GAHBCFG ", "GUSBCFG ", "GRSTCTL ", "GINTSTS ",
+ "GINTMSK ", "GRXSTSR ", "GRXSTSP ", "GRXFSIZ ", "GNPTXFSIZ", "GNPTXSTS ",
+ "GI2CCTL ", "GPVNDCTL ", "GGPIO ", "GUID ", "GSNPSID ", "GHWCFG1 ",
+ "GHWCFG2 ", "GHWCFG3 ", "GHWCFG4 ", "GLPMCFG ", "GPWRDN ", "GDFIFOCFG",
+ "GADPCTL ", "GREFCLK ", "GINTMSK2 ", "GINTSTS2 "
+};
+#endif
+
+static uint64_t dwc2_glbreg_read(void *ptr, hwaddr addr, unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->glbregbase + addr;
+ uint32_t val;
+
+ assert(reg <= GINTSTS2);
+ val = s->glbreg[addr >> 2];
+
+ switch (reg) {
+ case GRSTCTL:
+ /* clear any self-clearing bits that were set */
+ val &= ~(GRSTCTL_TXFFLSH | GRSTCTL_RXFFLSH | GRSTCTL_IN_TKNQ_FLSH |
+ GRSTCTL_FRMCNTRRST | GRSTCTL_HSFTRST | GRSTCTL_CSFTRST);
+ s->glbreg[addr >> 2] = val;
+ break;
+ default:
+ break;
+ }
+
+ if (reg != GAHBCFG && reg != GINTSTS && reg != GINTMSK && reg != GSNPSID) {
+ DPRINTF("dwc2_glbreg_read 0x%04lx %s val 0x%08x\n",
+ addr, glbregnm[addr >> 2], val);
+ }
+
+ return val;
+}
+
+static void dwc2_glbreg_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->glbregbase + addr;
+ uint32_t *mmio;
+ uint32_t old;
+ int iflg = 0;
+
+ assert(reg <= GINTSTS2);
+ mmio = &s->glbreg[addr >> 2];
+ old = *mmio;
+
+ if (reg != GINTSTS && reg != GINTMSK) {
+ DPRINTF("dwc2_glbreg_write 0x%04lx %s val 0x%08lx old 0x%08x ",
+ addr, glbregnm[addr >> 2], val, old);
+ }
+
+ switch (reg) {
+ case GOTGCTL:
+ /* don't allow setting of read-only bits */
+ val &= ~(GOTGCTL_MULT_VALID_BC_MASK | GOTGCTL_BSESVLD |
+ GOTGCTL_ASESVLD | GOTGCTL_DBNC_SHORT | GOTGCTL_CONID_B |
+ GOTGCTL_HSTNEGSCS | GOTGCTL_SESREQSCS);
+ /* don't allow clearing of read-only bits */
+ val |= old & (GOTGCTL_MULT_VALID_BC_MASK | GOTGCTL_BSESVLD |
+ GOTGCTL_ASESVLD | GOTGCTL_DBNC_SHORT | GOTGCTL_CONID_B |
+ GOTGCTL_HSTNEGSCS | GOTGCTL_SESREQSCS);
+ break;
+ case GAHBCFG:
+ if ((val & GAHBCFG_GLBL_INTR_EN) && !(old & GAHBCFG_GLBL_INTR_EN)) {
+ iflg = 1;
+ }
+ break;
+ case GRSTCTL:
+ val |= GRSTCTL_AHBIDLE;
+ val &= ~GRSTCTL_DMAREQ;
+ if (!(old & GRSTCTL_TXFFLSH) && (val & GRSTCTL_TXFFLSH)) {
+ /* TODO - TX fifo flush */
+ }
+ if (!(old & GRSTCTL_RXFFLSH) && (val & GRSTCTL_RXFFLSH)) {
+ /* TODO - RX fifo flush */
+ }
+ if (!(old & GRSTCTL_IN_TKNQ_FLSH) && (val & GRSTCTL_IN_TKNQ_FLSH)) {
+ /* TODO - device IN token queue flush */
+ }
+ if (!(old & GRSTCTL_FRMCNTRRST) && (val & GRSTCTL_FRMCNTRRST)) {
+ /* TODO - host frame counter reset */
+ }
+ if (!(old & GRSTCTL_HSFTRST) && (val & GRSTCTL_HSFTRST)) {
+ /* TODO - ? soft reset */
+ }
+ if (!(old & GRSTCTL_CSFTRST) && (val & GRSTCTL_CSFTRST)) {
+ /* TODO - core soft reset */
+ }
+ /* don't allow clearing of self-clearing bits */
+ val |= old & (GRSTCTL_TXFFLSH | GRSTCTL_RXFFLSH |
+ GRSTCTL_IN_TKNQ_FLSH | GRSTCTL_FRMCNTRRST |
+ GRSTCTL_HSFTRST | GRSTCTL_CSFTRST);
+ break;
+ case GINTSTS:
+ /* clear the write-1-to-clear bits */
+ val |= ~old;
+ val = ~val;
+ /* don't allow clearing of read-only bits */
+ val |= old & (GINTSTS_PTXFEMP | GINTSTS_HCHINT | GINTSTS_PRTINT |
+ GINTSTS_OEPINT | GINTSTS_IEPINT | GINTSTS_GOUTNAKEFF |
+ GINTSTS_GINNAKEFF | GINTSTS_NPTXFEMP | GINTSTS_RXFLVL |
+ GINTSTS_OTGINT | GINTSTS_CURMODE_HOST);
+ iflg = 1;
+ break;
+ case GINTMSK:
+ iflg = 1;
+ break;
+ default:
+ break;
+ }
+
+ val &= 0xffffffff;
+ if (reg != GINTSTS && reg != GINTMSK) {
+ DPRINTF("result 0x%08lx\n", val);
+ }
+ *mmio = val;
+ if (iflg) {
+ dwc2_update_irq(s);
+ }
+}
+
+static uint64_t dwc2_fszreg_read(void *ptr, hwaddr addr, unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->fszregbase + addr;
+ uint32_t val;
+
+ assert(reg <= HPTXFSIZ);
+ val = s->fszreg[addr >> 2];
+
+ DPRINTF("dwc2_fszreg_read 0x%04lx HPTXFSIZ val 0x%08x\n",
+ addr, val);
+ return val;
+}
+
+static void dwc2_fszreg_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->fszregbase + addr;
+ uint32_t *mmio;
+#ifdef DWC2_DEBUG
+ uint32_t old;
+#endif
+
+ assert(reg <= HPTXFSIZ);
+ mmio = &s->fszreg[addr >> 2];
+#ifdef DWC2_DEBUG
+ old = *mmio;
+#endif
+
+ DPRINTF("dwc2_fszreg_write 0x%04lx HPTXFSIZ val 0x%08lx old 0x%08x ",
+ addr, val, old);
+ val &= 0xffffffff;
+ DPRINTF("result 0x%lx\n", val);
+ *mmio = val;
+}
+
+#ifdef DWC2_DEBUG
+static const char *hreg0nm[] = {
+ "HCFG ", "HFIR ", "HFNUM ", "<rsvd> ", "HPTXSTS ", "HAINT ",
+ "HAINTMSK ", "HFLBADDR ", "<rsvd> ", "<rsvd> ", "<rsvd> ", "<rsvd> ",
+ "<rsvd> ", "<rsvd> ", "<rsvd> ", "<rsvd> ", "HPRT0 "
+};
+#endif
+
+static uint64_t dwc2_hreg0_read(void *ptr, hwaddr addr, unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->hreg0base + addr;
+ uint32_t val;
+
+ assert(reg <= HPRT0);
+ val = s->hreg0[addr >> 2];
+
+ switch (reg) {
+ case HFNUM:
+ val = (dwc2_get_frame_remaining(s) << HFNUM_FRREM_SHIFT) |
+ ((s->frame_number & HFNUM_MAX_FRNUM) << HFNUM_FRNUM_SHIFT);
+ break;
+ default:
+ break;
+ }
+
+ if (reg != HFNUM) {
+ DPRINTF("dwc2_hreg0_read 0x%04lx %s val 0x%08x\n",
+ addr, hreg0nm[addr >> 2], val);
+ }
+ return val;
+}
+
+static void dwc2_hreg0_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->hreg0base + addr;
+ USBDevice *dev = s->ports[0].dev;
+ uint32_t *mmio;
+ uint32_t tval, told, old;
+ int prst = 0;
+ int iflg = 0;
+
+ assert(reg <= HPRT0);
+ mmio = &s->hreg0[addr >> 2];
+ old = *mmio;
+
+ DPRINTF("dwc2_hreg0_write 0x%04lx %s val 0x%08lx old 0x%08x ",
+ addr, hreg0nm[addr >> 2], val, old);
+
+ switch (reg) {
+ case HFIR:
+ break;
+ case HFNUM:
+ case HPTXSTS:
+ case HAINT:
+ DPRINTF("**write to read-only register**\n");
+ return;
+ case HAINTMSK:
+ val &= 0xffff;
+ break;
+ case HPRT0:
+ /* don't allow clearing of read-only bits */
+ val |= old & (HPRT0_SPD_MASK | HPRT0_LNSTS_MASK | HPRT0_OVRCURRACT |
+ HPRT0_CONNSTS);
+ /* don't allow clearing of self-clearing bits */
+ val |= old & (HPRT0_SUSP | HPRT0_RES);
+ /* don't allow setting of self-setting bits */
+ if (!(old & HPRT0_ENA) && (val & HPRT0_ENA)) {
+ val &= ~HPRT0_ENA;
+ }
+ /* clear the write-1-to-clear bits */
+ tval = val & (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
+ told = old & (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
+ tval |= ~told;
+ tval = ~tval;
+ tval &= (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
+ val &= ~(HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
+ val |= tval;
+ if (!(val & HPRT0_RST) && (old & HPRT0_RST)) {
+ if (dev && dev->attached) {
+ val |= HPRT0_ENA | HPRT0_ENACHG;
+ prst = 1;
+ }
+ }
+ if (val & (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_CONNDET)) {
+ iflg = 1;
+ } else {
+ iflg = -1;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (prst) {
+ DPRINTF("call usb_port_reset\n");
+ usb_port_reset(&s->ports[0]);
+ val &= ~HPRT0_CONNDET;
+ }
+ val &= 0xffffffff;
+ DPRINTF("result 0x%08lx\n", val);
+ *mmio = val;
+ if (iflg) {
+ if (iflg > 0) {
+ DPRINTF("enable PRTINT\n");
+ dwc2_raise_global_irq(s, GINTSTS_PRTINT);
+ } else {
+ DPRINTF("disable PRTINT\n");
+ dwc2_lower_global_irq(s, GINTSTS_PRTINT);
+ }
+ }
+}
+
+#ifdef DWC2_DEBUG
+static const char *hreg1nm[] = {
+ "HCCHAR ", "HCSPLT ", "HCINT ", "HCINTMSK", "HCTSIZ ", "HCDMA ",
+ "<rsvd> ", "HCDMAB "
+};
+#endif
+
+static uint64_t dwc2_hreg1_read(void *ptr, hwaddr addr, unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->hreg1base + addr;
+ uint32_t val;
+
+ assert(reg <= HCDMAB(NB_CHAN - 1));
+ val = s->hreg1[addr >> 2];
+
+ DPRINTF("dwc2_hreg1_read 0x%04lx %s%ld val 0x%08x\n",
+ addr, hreg1nm[(addr >> 2) & 7], addr >> 5, val);
+ assert(s->hreg1base + (addr & 0x1c) <= HCDMAB(NB_CHAN));
+ return val;
+}
+
+static void dwc2_hreg1_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->hreg1base + addr;
+ uint32_t *mmio;
+ uint32_t old;
+ int iflg = 0;
+ int enflg = 0;
+ int disflg = 0;
+
+ assert(reg <= HCDMAB(NB_CHAN - 1));
+ mmio = &s->hreg1[addr >> 2];
+ old = *mmio;
+
+ DPRINTF("dwc2_hreg1_write 0x%04lx %s%ld val 0x%08lx old 0x%08x ",
+ addr, hreg1nm[(addr >> 2) & 7], addr >> 5, val, old);
+
+ switch (s->hreg1base + (addr & 0x1c)) {
+ case HCCHAR(0):
+ if ((val & HCCHAR_CHDIS) && !(old & HCCHAR_CHDIS)) {
+ val &= ~(HCCHAR_CHENA | HCCHAR_CHDIS);
+ disflg = 1;
+ } else {
+ val |= old & HCCHAR_CHDIS;
+ if ((val & HCCHAR_CHENA) && !(old & HCCHAR_CHENA)) {
+ val &= ~HCCHAR_CHDIS;
+ enflg = 1;
+ } else {
+ val |= old & HCCHAR_CHENA;
+ }
+ }
+ break;
+ case HCINT(0):
+ /* clear the write-1-to-clear bits */
+ val |= ~old;
+ val = ~val;
+ val &= ~HCINTMSK_RESERVED14_31;
+ iflg = 1;
+ break;
+ case HCINTMSK(0):
+ val &= ~HCINTMSK_RESERVED14_31;
+ iflg = 1;
+ break;
+ case HCDMAB(0):
+ DPRINTF("**write to read-only register**\n");
+ return;
+ default:
+ break;
+ }
+
+ val &= 0xffffffff;
+ DPRINTF("result 0x%08lx\n", val);
+ *mmio = val;
+ if (disflg) {
+ /* set ChHltd in HCINT */
+ s->hreg1[((addr >> 2) & ~7) + 2] |= HCINTMSK_CHHLTD;
+ iflg = 1;
+ }
+ if (enflg) {
+ dwc2_enable_chan(s, (addr >> 2) & ~7);
+ }
+ if (iflg) {
+ dwc2_update_hc_irq(s, (addr >> 2) & ~7);
+ }
+}
+
+#ifdef DWC2_DEBUG
+static const char *pcgregnm[] = {
+ "PCGCTL ", "PCGCCTL1 "
+};
+#endif
+
+static uint64_t dwc2_pcgreg_read(void *ptr, hwaddr addr, unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->pcgregbase + addr;
+ uint32_t val;
+
+ assert(reg <= PCGCCTL1);
+ val = s->pcgreg[addr >> 2];
+
+ DPRINTF("dwc2_pcgreg_read 0x%04lx %s val 0x%08x\n",
+ addr, pcgregnm[addr >> 2], val);
+ return val;
+}
+
+static void dwc2_pcgreg_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ DWC2State *s = ptr;
+ uint32_t reg = s->pcgregbase + addr;
+ uint32_t *mmio;
+#ifdef DWC2_DEBUG
+ uint32_t old;
+#endif
+
+ assert(reg <= PCGCCTL1);
+ mmio = &s->pcgreg[addr >> 2];
+#ifdef DWC2_DEBUG
+ old = *mmio;
+#endif
+
+ DPRINTF("dwc2_pcgreg_write 0x%04lx %s val 0x%08lx old 0x%08x ",
+ addr, pcgregnm[addr >> 2], val, old);
+ val &= 0xffffffff;
+ DPRINTF("result 0x%08lx\n", val);
+ *mmio = val;
+}
+
+static uint64_t dwc2_hreg2_read(void *ptr, hwaddr addr, unsigned size)
+{
+ /* TODO - implement FIFOs to support slave mode */
+ DPRINTF("dwc2_hreg2_read 0x%04lx FIFO%ld val 0x%08x\n",
+ addr, addr >> 12, 0);
+ return 0;
+}
+
+static void dwc2_hreg2_write(void *ptr, hwaddr addr, uint64_t val,
+ unsigned size)
+{
+ /* TODO - implement FIFOs to support slave mode */
+ DPRINTF("dwc2_hreg2_write 0x%04lx FIFO%ld val 0x%08lx ",
+ addr, addr >> 12, val);
+ val &= 0xffffffff;
+ DPRINTF("result 0x%08lx\n", val);
+}
+
+static const MemoryRegionOps dwc2_mmio_glbreg_ops = {
+ .read = dwc2_glbreg_read,
+ .write = dwc2_glbreg_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static const MemoryRegionOps dwc2_mmio_fszreg_ops = {
+ .read = dwc2_fszreg_read,
+ .write = dwc2_fszreg_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static const MemoryRegionOps dwc2_mmio_hreg0_ops = {
+ .read = dwc2_hreg0_read,
+ .write = dwc2_hreg0_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static const MemoryRegionOps dwc2_mmio_hreg1_ops = {
+ .read = dwc2_hreg1_read,
+ .write = dwc2_hreg1_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static const MemoryRegionOps dwc2_mmio_pcgreg_ops = {
+ .read = dwc2_pcgreg_read,
+ .write = dwc2_pcgreg_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static const MemoryRegionOps dwc2_mmio_hreg2_ops = {
+ .read = dwc2_hreg2_read,
+ .write = dwc2_hreg2_write,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 4,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+static void dwc2_wakeup_endpoint(USBBus *bus, USBEndpoint *ep,
+ unsigned int stream)
+{
+ DWC2State *s = container_of(bus, DWC2State, bus);
+
+ /* TODO - do something here? */
+ qemu_bh_schedule(s->async_bh);
+}
+
+static USBBusOps dwc2_bus_ops = {
+ .wakeup_endpoint = dwc2_wakeup_endpoint,
+};
+
+static void dwc2_work_timer(void *opaque)
+{
+ DWC2State *s = opaque;
+
+ DPRINTF("dwc2_work_timer\n");
+ qemu_bh_schedule(s->async_bh);
+}
+
+/* host controller initialization */
+static void dwc2_reset(DWC2State *s)
+{
+ USBDevice *devs[NB_PORTS];
+ int i;
+
+ DPRINTF("dwc2_reset, s %p\n", s);
+ timer_del(s->frame_timer);
+ qemu_bh_cancel(s->async_bh);
+
+ for (i = 0; i < NB_PORTS; i++) {
+ devs[i] = s->ports[i].dev;
+ if (devs[i] && devs[i]->attached) {
+ usb_detach(&s->ports[i]);
+ }
+ }
+
+ dwc2_bus_stop(s);
+
+ s->gotgctl = GOTGCTL_BSESVLD | GOTGCTL_ASESVLD | GOTGCTL_CONID_B;
+ s->gotgint = 0;
+ s->gahbcfg = 0;
+ s->gusbcfg = 5 << GUSBCFG_USBTRDTIM_SHIFT;
+ s->grstctl = GRSTCTL_AHBIDLE;
+ s->gintsts = GINTSTS_CONIDSTSCHNG | GINTSTS_PTXFEMP | GINTSTS_NPTXFEMP |
+ GINTSTS_CURMODE_HOST;
+ s->gintmsk = 0;
+ s->grxstsr = 0;
+ s->grxstsp = 0;
+ s->grxfsiz = 1024;
+ s->gnptxfsiz = 1024 << FIFOSIZE_DEPTH_SHIFT;
+ s->gnptxsts = (4 << FIFOSIZE_DEPTH_SHIFT) | 1024;
+ s->gi2cctl = GI2CCTL_I2CDATSE0 | GI2CCTL_ACK;
+ s->gpvndctl = 0;
+ s->ggpio = 0;
+ s->guid = 0;
+ s->gsnpsid = 0x4f54294a;
+ s->ghwcfg1 = 0;
+ s->ghwcfg2 = (8 << GHWCFG2_DEV_TOKEN_Q_DEPTH_SHIFT) |
+ (4 << GHWCFG2_HOST_PERIO_TX_Q_DEPTH_SHIFT) |
+ (4 << GHWCFG2_NONPERIO_TX_Q_DEPTH_SHIFT) |
+ GHWCFG2_DYNAMIC_FIFO |
+ GHWCFG2_PERIO_EP_SUPPORTED |
+ ((NB_CHAN - 1) << GHWCFG2_NUM_HOST_CHAN_SHIFT) |
+ (GHWCFG2_INT_DMA_ARCH << GHWCFG2_ARCHITECTURE_SHIFT) |
+ (GHWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST << GHWCFG2_OP_MODE_SHIFT);
+ s->ghwcfg3 = (4096 << GHWCFG3_DFIFO_DEPTH_SHIFT) |
+ (4 << GHWCFG3_PACKET_SIZE_CNTR_WIDTH_SHIFT) |
+ (4 << GHWCFG3_XFER_SIZE_CNTR_WIDTH_SHIFT);
+ s->ghwcfg4 = 0;
+ s->glpmcfg = 0;
+ s->gpwrdn = GPWRDN_PWRDNRSTN;
+ s->gdfifocfg = 0;
+ s->gadpctl = 0;
+ s->grefclk = 0;
+ s->gintmsk2 = 0;
+ s->gintsts2 = 0;
+
+ s->hptxfsiz = 500 << FIFOSIZE_DEPTH_SHIFT;
+
+ s->hcfg = 2 << HCFG_RESVALID_SHIFT;
+ s->hfir = 60000;
+ s->hfnum = 0x3fff;
+ s->hptxsts = (16 << TXSTS_QSPCAVAIL_SHIFT) | 32768;
+ s->haint = 0;
+ s->haintmsk = 0;
+ s->hprt0 = 0;
+
+ memset(s->hreg1, 0, sizeof(s->hreg1));
+ memset(s->pcgreg, 0, sizeof(s->pcgreg));
+
+ s->sof_time = 0;
+ s->fsmps = 0x2778;
+ s->fi = 11999;
+ s->frame_number = 0;
+
+ for (i = 0; i < NB_CHAN; i++) {
+ s->packet[i].needs_service = false;
+ }
+
+ dwc2_update_irq(s);
+
+ for (i = 0; i < NB_PORTS; i++) {
+ s->hprt0 = HPRT0_PWR;
+ if (devs[i] && devs[i]->attached) {
+ usb_attach(&s->ports[i]);
+ usb_device_reset(devs[i]);
+ }
+ }
+}
+
+static void dwc2_realize(DWC2State *s, DeviceState *dev, Error **errp)
+{
+ Object *obj;
+ Error *err = NULL;
+ int i;
+
+ DPRINTF("dwc2_realize, s %p dev %p\n", s, dev);
+ if (s->portnr > NB_PORTS) {
+ error_setg(errp, "Too many ports! Max port number is %d",
+ NB_PORTS);
+ return;
+ }
+
+ obj = object_property_get_link(OBJECT(dev), "dma-mr", &err);
+ if (err || obj == NULL) {
+ error_setg(errp, "dwc2: required dma-mr link not found: %s",
+ error_get_pretty(err));
+ return;
+ }
+
+ s->dma_mr = MEMORY_REGION(obj);
+ address_space_init(&s->dma_as, s->dma_mr, NULL);
+
+ usb_bus_new(&s->bus, sizeof(s->bus), &dwc2_bus_ops, dev);
+ for (i = 0; i < s->portnr; i++) {
+ usb_register_port(&s->bus, &s->ports[i], s, i, &dwc2_port_ops,
+ USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL |
+ USB_SPEED_MASK_HIGH);
+ s->ports[i].dev = 0;
+ }
+
+ s->frame_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, dwc2_work_timer, s);
+ s->async_bh = qemu_bh_new(dwc2_work_bh, s);
+ s->working = false;
+ s->next_chan = 0;
+ s->device = dev;
+}
+
+static void dwc2_init(DWC2State *s, DeviceState *dev)
+{
+ DPRINTF("dwc2_init, s %p dev %p\n", s, dev);
+
+ s->usb_frame_time = NANOSECONDS_PER_SECOND / 1000; /* 1000000 */
+ if (NANOSECONDS_PER_SECOND >= USB_HZ_FS) {
+ s->usb_bit_time = NANOSECONDS_PER_SECOND / USB_HZ_FS; /* 83.3 */
+ } else {
+ s->usb_bit_time = 1;
+ }
+
+ s->fi = 11999;
+
+ memory_region_init(&s->mem, OBJECT(dev), "dwc2", DWC2_MMIO_SIZE);
+ memory_region_init_io(&s->mem_glbreg, OBJECT(dev), &dwc2_mmio_glbreg_ops, s,
+ "global", 0x70);
+ memory_region_init_io(&s->mem_fszreg, OBJECT(dev), &dwc2_mmio_fszreg_ops, s,
+ "hptxfsiz", 0x4);
+ memory_region_init_io(&s->mem_hreg0, OBJECT(dev), &dwc2_mmio_hreg0_ops, s,
+ "host", 0x44);
+ memory_region_init_io(&s->mem_hreg1, OBJECT(dev), &dwc2_mmio_hreg1_ops, s,
+ "host channels", 0x20 * NB_CHAN);
+ memory_region_init_io(&s->mem_pcgreg, OBJECT(dev), &dwc2_mmio_pcgreg_ops, s,
+ "power/clock", 0x8);
+ memory_region_init_io(&s->mem_hreg2, OBJECT(dev), &dwc2_mmio_hreg2_ops, s,
+ "host fifos", NB_CHAN * 0x1000);
+
+ memory_region_add_subregion(&s->mem, s->glbregbase, &s->mem_glbreg);
+ memory_region_add_subregion(&s->mem, s->fszregbase, &s->mem_fszreg);
+ memory_region_add_subregion(&s->mem, s->hreg0base, &s->mem_hreg0);
+ memory_region_add_subregion(&s->mem, s->hreg1base, &s->mem_hreg1);
+ memory_region_add_subregion(&s->mem, s->pcgregbase, &s->mem_pcgreg);
+ memory_region_add_subregion(&s->mem, s->hreg2base, &s->mem_hreg2);
+
+#ifdef DWC2_DO_SOFS
+ s->eof_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
+ dwc2_frame_boundary, s);
+#endif
+}
+
+static void dwc2_sysbus_reset(DeviceState *dev)
+{
+ SysBusDevice *d = SYS_BUS_DEVICE(dev);
+ DWC2State *s = DWC2_USB(d);
+
+ DPRINTF("dwc2_sysbus_reset, dev %p d %p s %p\n", dev, d, s);
+ dwc2_reset(s);
+}
+
+static void dwc2_sysbus_realize(DeviceState *dev, Error **errp)
+{
+ SysBusDevice *d = SYS_BUS_DEVICE(dev);
+ DWC2State *s = DWC2_USB(dev);
+
+ DPRINTF("dwc2_sysbus_realize, dev %p d %p s %p\n", dev, d, s);
+ s->glbregbase = 0;
+ s->fszregbase = 0x0100;
+ s->hreg0base = 0x0400;
+ s->hreg1base = 0x0500;
+ s->pcgregbase = 0x0e00;
+ s->hreg2base = 0x1000;
+ s->portnr = NB_PORTS;
+ s->as = &address_space_memory;
+
+ DPRINTF("0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", s->glbregbase, s->fszregbase,
+ s->hreg0base, s->hreg1base, s->pcgregbase, s->hreg2base);
+ dwc2_realize(s, dev, errp);
+ dwc2_init(s, dev);
+ sysbus_init_irq(d, &s->irq);
+ sysbus_init_mmio(d, &s->mem);
+}
+
+static void dwc2_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+
+ DPRINTF("dwc2_class_init, class %p dc %p\n", klass, dc);
+ dc->realize = dwc2_sysbus_realize;
+ dc->reset = dwc2_sysbus_reset;
+ set_bit(DEVICE_CATEGORY_USB, dc->categories);
+}
+
+static const TypeInfo dwc2_usb_type_info = {
+ .name = TYPE_DWC2_USB,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(DWC2State),
+ .class_init = dwc2_class_init,
+};
+
+static void dwc2_usb_register_types(void)
+{
+ DPRINTF("dwc2_usb_register_types\n");
+ type_register_static(&dwc2_usb_type_info);
+}
+
+type_init(dwc2_usb_register_types)
--
2.17.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation
2020-03-22 22:27 [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation Paul Zimmerman
` (6 preceding siblings ...)
2020-03-22 22:39 ` [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation Paul Zimmerman
@ 2020-03-22 22:46 ` no-reply
2020-03-23 11:09 ` Gerd Hoffmann
8 siblings, 0 replies; 11+ messages in thread
From: no-reply @ 2020-03-22 22:46 UTC (permalink / raw)
To: pauldzim
Cc: peter.maydell, stefanha, qemu-devel, pauldzim, kraxel, jsnow,
f4bug
Patchew URL: https://patchew.org/QEMU/20200322222726.10244-1-pauldzim@gmail.com/
Hi,
This series seems to have some coding style problems. See output below for
more information:
Subject: [PATCH 0/6] dwc-hsotg (aka dwc2) USB host contoller emulation
Message-id: 20200322222726.10244-1-pauldzim@gmail.com
Type: series
=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===
Switched to a new branch 'test'
d4c9fd6 Wire in the dwc-hsotg USB host controller emulation
eaf83d0 Add short-packet handling to usb-storage driver
a36ab17 dwc-hsotg USB host controller emulation
19ac434 dwc-hsotg USB host controller state definitions
0b0cf63 dwc-hsotg USB host controller register definitions
30fe183 Add BCM2835 SOC MPHI emulation
=== OUTPUT BEGIN ===
1/6 Checking commit 30fe183b9fcc (Add BCM2835 SOC MPHI emulation)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#62:
new file mode 100644
ERROR: do not use C99 // comments
#93: FILE: hw/misc/bcm2835_mphi.c:27:
+//#define MPHI_DEBUG 1
ERROR: space required before the open parenthesis '('
#98: FILE: hw/misc/bcm2835_mphi.c:32:
+#define DPRINTF(fmt, ...) do {} while(0)
ERROR: braces {} are necessary for all arms of this statement
#165: FILE: hw/misc/bcm2835_mphi.c:99:
+ if (val & (1 << 29))
[...]
ERROR: braces {} are necessary for all arms of this statement
#171: FILE: hw/misc/bcm2835_mphi.c:105:
+ if (val & (1 << 16))
[...]
ERROR: braces {} are necessary for all arms of this statement
#177: FILE: hw/misc/bcm2835_mphi.c:111:
+ if (val & ((1 << 16) | (1 << 29)))
[...]
ERROR: braces {} are necessary for all arms of this statement
#196: FILE: hw/misc/bcm2835_mphi.c:130:
+ if (do_irq > 0)
[...]
+ else if (do_irq < 0)
[...]
ERROR: braces {} are necessary for all arms of this statement
#198: FILE: hw/misc/bcm2835_mphi.c:132:
+ else if (do_irq < 0)
[...]
total: 7 errors, 1 warnings, 315 lines checked
Patch 1/6 has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
2/6 Checking commit 0b0cf6320d53 (dwc-hsotg USB host controller register definitions)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#16:
new file mode 100644
WARNING: architecture specific defines should be avoided
#58: FILE: include/hw/usb/dwc2-regs.h:38:
+#ifndef __DWC2_HW_H__
ERROR: code indent should never use tabs
#61: FILE: include/hw/usb/dwc2-regs.h:41:
+#define HSOTG_REG(x)^I(x)$
ERROR: code indent should never use tabs
#63: FILE: include/hw/usb/dwc2-regs.h:43:
+#define GOTGCTL^I^I^I^IHSOTG_REG(0x000)$
ERROR: code indent should never use tabs
#64: FILE: include/hw/usb/dwc2-regs.h:44:
+#define GOTGCTL_CHIRPEN^I^I^IBIT(27)$
ERROR: code indent should never use tabs
#65: FILE: include/hw/usb/dwc2-regs.h:45:
+#define GOTGCTL_MULT_VALID_BC_MASK^I(0x1f << 22)$
ERROR: code indent should never use tabs
#66: FILE: include/hw/usb/dwc2-regs.h:46:
+#define GOTGCTL_MULT_VALID_BC_SHIFT^I22$
ERROR: code indent should never use tabs
#67: FILE: include/hw/usb/dwc2-regs.h:47:
+#define GOTGCTL_OTGVER^I^I^IBIT(20)$
ERROR: code indent should never use tabs
#68: FILE: include/hw/usb/dwc2-regs.h:48:
+#define GOTGCTL_BSESVLD^I^I^IBIT(19)$
ERROR: code indent should never use tabs
#69: FILE: include/hw/usb/dwc2-regs.h:49:
+#define GOTGCTL_ASESVLD^I^I^IBIT(18)$
ERROR: code indent should never use tabs
#70: FILE: include/hw/usb/dwc2-regs.h:50:
+#define GOTGCTL_DBNC_SHORT^I^IBIT(17)$
ERROR: code indent should never use tabs
#71: FILE: include/hw/usb/dwc2-regs.h:51:
+#define GOTGCTL_CONID_B^I^I^IBIT(16)$
ERROR: code indent should never use tabs
#72: FILE: include/hw/usb/dwc2-regs.h:52:
+#define GOTGCTL_DBNCE_FLTR_BYPASS^IBIT(15)$
ERROR: code indent should never use tabs
#73: FILE: include/hw/usb/dwc2-regs.h:53:
+#define GOTGCTL_DEVHNPEN^I^IBIT(11)$
ERROR: code indent should never use tabs
#74: FILE: include/hw/usb/dwc2-regs.h:54:
+#define GOTGCTL_HSTSETHNPEN^I^IBIT(10)$
ERROR: code indent should never use tabs
#75: FILE: include/hw/usb/dwc2-regs.h:55:
+#define GOTGCTL_HNPREQ^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#76: FILE: include/hw/usb/dwc2-regs.h:56:
+#define GOTGCTL_HSTNEGSCS^I^IBIT(8)$
ERROR: code indent should never use tabs
#77: FILE: include/hw/usb/dwc2-regs.h:57:
+#define GOTGCTL_SESREQ^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#78: FILE: include/hw/usb/dwc2-regs.h:58:
+#define GOTGCTL_SESREQSCS^I^IBIT(0)$
ERROR: code indent should never use tabs
#80: FILE: include/hw/usb/dwc2-regs.h:60:
+#define GOTGINT^I^I^I^IHSOTG_REG(0x004)$
ERROR: code indent should never use tabs
#81: FILE: include/hw/usb/dwc2-regs.h:61:
+#define GOTGINT_DBNCE_DONE^I^IBIT(19)$
ERROR: code indent should never use tabs
#82: FILE: include/hw/usb/dwc2-regs.h:62:
+#define GOTGINT_A_DEV_TOUT_CHG^I^IBIT(18)$
ERROR: code indent should never use tabs
#83: FILE: include/hw/usb/dwc2-regs.h:63:
+#define GOTGINT_HST_NEG_DET^I^IBIT(17)$
ERROR: code indent should never use tabs
#84: FILE: include/hw/usb/dwc2-regs.h:64:
+#define GOTGINT_HST_NEG_SUC_STS_CHNG^IBIT(9)$
ERROR: code indent should never use tabs
#85: FILE: include/hw/usb/dwc2-regs.h:65:
+#define GOTGINT_SES_REQ_SUC_STS_CHNG^IBIT(8)$
ERROR: code indent should never use tabs
#86: FILE: include/hw/usb/dwc2-regs.h:66:
+#define GOTGINT_SES_END_DET^I^IBIT(2)$
ERROR: code indent should never use tabs
#88: FILE: include/hw/usb/dwc2-regs.h:68:
+#define GAHBCFG^I^I^I^IHSOTG_REG(0x008)$
ERROR: code indent should never use tabs
#89: FILE: include/hw/usb/dwc2-regs.h:69:
+#define GAHBCFG_AHB_SINGLE^I^IBIT(23)$
ERROR: code indent should never use tabs
#90: FILE: include/hw/usb/dwc2-regs.h:70:
+#define GAHBCFG_NOTI_ALL_DMA_WRIT^IBIT(22)$
ERROR: code indent should never use tabs
#91: FILE: include/hw/usb/dwc2-regs.h:71:
+#define GAHBCFG_REM_MEM_SUPP^I^IBIT(21)$
ERROR: code indent should never use tabs
#92: FILE: include/hw/usb/dwc2-regs.h:72:
+#define GAHBCFG_P_TXF_EMP_LVL^I^IBIT(8)$
ERROR: code indent should never use tabs
#93: FILE: include/hw/usb/dwc2-regs.h:73:
+#define GAHBCFG_NP_TXF_EMP_LVL^I^IBIT(7)$
ERROR: code indent should never use tabs
#94: FILE: include/hw/usb/dwc2-regs.h:74:
+#define GAHBCFG_DMA_EN^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#95: FILE: include/hw/usb/dwc2-regs.h:75:
+#define GAHBCFG_HBSTLEN_MASK^I^I(0xf << 1)$
ERROR: code indent should never use tabs
#96: FILE: include/hw/usb/dwc2-regs.h:76:
+#define GAHBCFG_HBSTLEN_SHIFT^I^I1$
ERROR: code indent should never use tabs
#97: FILE: include/hw/usb/dwc2-regs.h:77:
+#define GAHBCFG_HBSTLEN_SINGLE^I^I0$
ERROR: code indent should never use tabs
#98: FILE: include/hw/usb/dwc2-regs.h:78:
+#define GAHBCFG_HBSTLEN_INCR^I^I1$
ERROR: code indent should never use tabs
#99: FILE: include/hw/usb/dwc2-regs.h:79:
+#define GAHBCFG_HBSTLEN_INCR4^I^I3$
ERROR: code indent should never use tabs
#100: FILE: include/hw/usb/dwc2-regs.h:80:
+#define GAHBCFG_HBSTLEN_INCR8^I^I5$
ERROR: code indent should never use tabs
#101: FILE: include/hw/usb/dwc2-regs.h:81:
+#define GAHBCFG_HBSTLEN_INCR16^I^I7$
ERROR: code indent should never use tabs
#102: FILE: include/hw/usb/dwc2-regs.h:82:
+#define GAHBCFG_GLBL_INTR_EN^I^IBIT(0)$
ERROR: code indent should never use tabs
#103: FILE: include/hw/usb/dwc2-regs.h:83:
+#define GAHBCFG_CTRL_MASK^I^I(GAHBCFG_P_TXF_EMP_LVL | \$
ERROR: code indent should never use tabs
#104: FILE: include/hw/usb/dwc2-regs.h:84:
+^I^I^I^I^I GAHBCFG_NP_TXF_EMP_LVL | \$
ERROR: code indent should never use tabs
#105: FILE: include/hw/usb/dwc2-regs.h:85:
+^I^I^I^I^I GAHBCFG_DMA_EN | \$
ERROR: code indent should never use tabs
#106: FILE: include/hw/usb/dwc2-regs.h:86:
+^I^I^I^I^I GAHBCFG_GLBL_INTR_EN)$
ERROR: code indent should never use tabs
#108: FILE: include/hw/usb/dwc2-regs.h:88:
+#define GUSBCFG^I^I^I^IHSOTG_REG(0x00C)$
ERROR: code indent should never use tabs
#109: FILE: include/hw/usb/dwc2-regs.h:89:
+#define GUSBCFG_FORCEDEVMODE^I^IBIT(30)$
ERROR: code indent should never use tabs
#110: FILE: include/hw/usb/dwc2-regs.h:90:
+#define GUSBCFG_FORCEHOSTMODE^I^IBIT(29)$
ERROR: code indent should never use tabs
#111: FILE: include/hw/usb/dwc2-regs.h:91:
+#define GUSBCFG_TXENDDELAY^I^IBIT(28)$
ERROR: code indent should never use tabs
#112: FILE: include/hw/usb/dwc2-regs.h:92:
+#define GUSBCFG_ICTRAFFICPULLREMOVE^IBIT(27)$
ERROR: code indent should never use tabs
#113: FILE: include/hw/usb/dwc2-regs.h:93:
+#define GUSBCFG_ICUSBCAP^I^IBIT(26)$
ERROR: code indent should never use tabs
#114: FILE: include/hw/usb/dwc2-regs.h:94:
+#define GUSBCFG_ULPI_INT_PROT_DIS^IBIT(25)$
ERROR: code indent should never use tabs
#115: FILE: include/hw/usb/dwc2-regs.h:95:
+#define GUSBCFG_INDICATORPASSTHROUGH^IBIT(24)$
ERROR: code indent should never use tabs
#116: FILE: include/hw/usb/dwc2-regs.h:96:
+#define GUSBCFG_INDICATORCOMPLEMENT^IBIT(23)$
ERROR: code indent should never use tabs
#117: FILE: include/hw/usb/dwc2-regs.h:97:
+#define GUSBCFG_TERMSELDLPULSE^I^IBIT(22)$
ERROR: code indent should never use tabs
#118: FILE: include/hw/usb/dwc2-regs.h:98:
+#define GUSBCFG_ULPI_INT_VBUS_IND^IBIT(21)$
ERROR: code indent should never use tabs
#119: FILE: include/hw/usb/dwc2-regs.h:99:
+#define GUSBCFG_ULPI_EXT_VBUS_DRV^IBIT(20)$
ERROR: code indent should never use tabs
#120: FILE: include/hw/usb/dwc2-regs.h:100:
+#define GUSBCFG_ULPI_CLK_SUSP_M^I^IBIT(19)$
ERROR: code indent should never use tabs
#121: FILE: include/hw/usb/dwc2-regs.h:101:
+#define GUSBCFG_ULPI_AUTO_RES^I^IBIT(18)$
ERROR: code indent should never use tabs
#122: FILE: include/hw/usb/dwc2-regs.h:102:
+#define GUSBCFG_ULPI_FS_LS^I^IBIT(17)$
ERROR: code indent should never use tabs
#123: FILE: include/hw/usb/dwc2-regs.h:103:
+#define GUSBCFG_OTG_UTMI_FS_SEL^I^IBIT(16)$
ERROR: code indent should never use tabs
#124: FILE: include/hw/usb/dwc2-regs.h:104:
+#define GUSBCFG_PHY_LP_CLK_SEL^I^IBIT(15)$
ERROR: code indent should never use tabs
#125: FILE: include/hw/usb/dwc2-regs.h:105:
+#define GUSBCFG_USBTRDTIM_MASK^I^I(0xf << 10)$
ERROR: code indent should never use tabs
#126: FILE: include/hw/usb/dwc2-regs.h:106:
+#define GUSBCFG_USBTRDTIM_SHIFT^I^I10$
ERROR: code indent should never use tabs
#127: FILE: include/hw/usb/dwc2-regs.h:107:
+#define GUSBCFG_HNPCAP^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#128: FILE: include/hw/usb/dwc2-regs.h:108:
+#define GUSBCFG_SRPCAP^I^I^IBIT(8)$
ERROR: code indent should never use tabs
#129: FILE: include/hw/usb/dwc2-regs.h:109:
+#define GUSBCFG_DDRSEL^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#130: FILE: include/hw/usb/dwc2-regs.h:110:
+#define GUSBCFG_PHYSEL^I^I^IBIT(6)$
ERROR: code indent should never use tabs
#131: FILE: include/hw/usb/dwc2-regs.h:111:
+#define GUSBCFG_FSINTF^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#132: FILE: include/hw/usb/dwc2-regs.h:112:
+#define GUSBCFG_ULPI_UTMI_SEL^I^IBIT(4)$
ERROR: code indent should never use tabs
#133: FILE: include/hw/usb/dwc2-regs.h:113:
+#define GUSBCFG_PHYIF16^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#134: FILE: include/hw/usb/dwc2-regs.h:114:
+#define GUSBCFG_PHYIF8^I^I^I(0 << 3)$
ERROR: code indent should never use tabs
#135: FILE: include/hw/usb/dwc2-regs.h:115:
+#define GUSBCFG_TOUTCAL_MASK^I^I(0x7 << 0)$
ERROR: code indent should never use tabs
#136: FILE: include/hw/usb/dwc2-regs.h:116:
+#define GUSBCFG_TOUTCAL_SHIFT^I^I0$
ERROR: code indent should never use tabs
#137: FILE: include/hw/usb/dwc2-regs.h:117:
+#define GUSBCFG_TOUTCAL_LIMIT^I^I0x7$
ERROR: code indent should never use tabs
#138: FILE: include/hw/usb/dwc2-regs.h:118:
+#define GUSBCFG_TOUTCAL(_x)^I^I((_x) << 0)$
ERROR: code indent should never use tabs
#140: FILE: include/hw/usb/dwc2-regs.h:120:
+#define GRSTCTL^I^I^I^IHSOTG_REG(0x010)$
ERROR: code indent should never use tabs
#141: FILE: include/hw/usb/dwc2-regs.h:121:
+#define GRSTCTL_AHBIDLE^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#142: FILE: include/hw/usb/dwc2-regs.h:122:
+#define GRSTCTL_DMAREQ^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#143: FILE: include/hw/usb/dwc2-regs.h:123:
+#define GRSTCTL_TXFNUM_MASK^I^I(0x1f << 6)$
ERROR: code indent should never use tabs
#144: FILE: include/hw/usb/dwc2-regs.h:124:
+#define GRSTCTL_TXFNUM_SHIFT^I^I6$
ERROR: code indent should never use tabs
#145: FILE: include/hw/usb/dwc2-regs.h:125:
+#define GRSTCTL_TXFNUM_LIMIT^I^I0x1f$
ERROR: code indent should never use tabs
#146: FILE: include/hw/usb/dwc2-regs.h:126:
+#define GRSTCTL_TXFNUM(_x)^I^I((_x) << 6)$
ERROR: code indent should never use tabs
#147: FILE: include/hw/usb/dwc2-regs.h:127:
+#define GRSTCTL_TXFFLSH^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#148: FILE: include/hw/usb/dwc2-regs.h:128:
+#define GRSTCTL_RXFFLSH^I^I^IBIT(4)$
ERROR: code indent should never use tabs
#149: FILE: include/hw/usb/dwc2-regs.h:129:
+#define GRSTCTL_IN_TKNQ_FLSH^I^IBIT(3)$
ERROR: code indent should never use tabs
#150: FILE: include/hw/usb/dwc2-regs.h:130:
+#define GRSTCTL_FRMCNTRRST^I^IBIT(2)$
ERROR: code indent should never use tabs
#151: FILE: include/hw/usb/dwc2-regs.h:131:
+#define GRSTCTL_HSFTRST^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#152: FILE: include/hw/usb/dwc2-regs.h:132:
+#define GRSTCTL_CSFTRST^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#154: FILE: include/hw/usb/dwc2-regs.h:134:
+#define GINTSTS^I^I^I^IHSOTG_REG(0x014)$
ERROR: code indent should never use tabs
#155: FILE: include/hw/usb/dwc2-regs.h:135:
+#define GINTMSK^I^I^I^IHSOTG_REG(0x018)$
ERROR: code indent should never use tabs
#156: FILE: include/hw/usb/dwc2-regs.h:136:
+#define GINTSTS_WKUPINT^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#157: FILE: include/hw/usb/dwc2-regs.h:137:
+#define GINTSTS_SESSREQINT^I^IBIT(30)$
ERROR: code indent should never use tabs
#158: FILE: include/hw/usb/dwc2-regs.h:138:
+#define GINTSTS_DISCONNINT^I^IBIT(29)$
ERROR: code indent should never use tabs
#159: FILE: include/hw/usb/dwc2-regs.h:139:
+#define GINTSTS_CONIDSTSCHNG^I^IBIT(28)$
ERROR: code indent should never use tabs
#160: FILE: include/hw/usb/dwc2-regs.h:140:
+#define GINTSTS_LPMTRANRCVD^I^IBIT(27)$
ERROR: code indent should never use tabs
#161: FILE: include/hw/usb/dwc2-regs.h:141:
+#define GINTSTS_PTXFEMP^I^I^IBIT(26)$
ERROR: code indent should never use tabs
#162: FILE: include/hw/usb/dwc2-regs.h:142:
+#define GINTSTS_HCHINT^I^I^IBIT(25)$
ERROR: code indent should never use tabs
#163: FILE: include/hw/usb/dwc2-regs.h:143:
+#define GINTSTS_PRTINT^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#164: FILE: include/hw/usb/dwc2-regs.h:144:
+#define GINTSTS_RESETDET^I^IBIT(23)$
ERROR: code indent should never use tabs
#165: FILE: include/hw/usb/dwc2-regs.h:145:
+#define GINTSTS_FET_SUSP^I^IBIT(22)$
ERROR: code indent should never use tabs
#166: FILE: include/hw/usb/dwc2-regs.h:146:
+#define GINTSTS_INCOMPL_IP^I^IBIT(21)$
ERROR: code indent should never use tabs
#167: FILE: include/hw/usb/dwc2-regs.h:147:
+#define GINTSTS_INCOMPL_SOOUT^I^IBIT(21)$
ERROR: code indent should never use tabs
#168: FILE: include/hw/usb/dwc2-regs.h:148:
+#define GINTSTS_INCOMPL_SOIN^I^IBIT(20)$
ERROR: code indent should never use tabs
#169: FILE: include/hw/usb/dwc2-regs.h:149:
+#define GINTSTS_OEPINT^I^I^IBIT(19)$
ERROR: code indent should never use tabs
#170: FILE: include/hw/usb/dwc2-regs.h:150:
+#define GINTSTS_IEPINT^I^I^IBIT(18)$
ERROR: code indent should never use tabs
#171: FILE: include/hw/usb/dwc2-regs.h:151:
+#define GINTSTS_EPMIS^I^I^IBIT(17)$
ERROR: code indent should never use tabs
#172: FILE: include/hw/usb/dwc2-regs.h:152:
+#define GINTSTS_RESTOREDONE^I^IBIT(16)$
ERROR: code indent should never use tabs
#173: FILE: include/hw/usb/dwc2-regs.h:153:
+#define GINTSTS_EOPF^I^I^IBIT(15)$
ERROR: code indent should never use tabs
#174: FILE: include/hw/usb/dwc2-regs.h:154:
+#define GINTSTS_ISOUTDROP^I^IBIT(14)$
ERROR: code indent should never use tabs
#175: FILE: include/hw/usb/dwc2-regs.h:155:
+#define GINTSTS_ENUMDONE^I^IBIT(13)$
ERROR: code indent should never use tabs
#176: FILE: include/hw/usb/dwc2-regs.h:156:
+#define GINTSTS_USBRST^I^I^IBIT(12)$
ERROR: code indent should never use tabs
#177: FILE: include/hw/usb/dwc2-regs.h:157:
+#define GINTSTS_USBSUSP^I^I^IBIT(11)$
ERROR: code indent should never use tabs
#178: FILE: include/hw/usb/dwc2-regs.h:158:
+#define GINTSTS_ERLYSUSP^I^IBIT(10)$
ERROR: code indent should never use tabs
#179: FILE: include/hw/usb/dwc2-regs.h:159:
+#define GINTSTS_I2CINT^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#180: FILE: include/hw/usb/dwc2-regs.h:160:
+#define GINTSTS_ULPI_CK_INT^I^IBIT(8)$
ERROR: code indent should never use tabs
#181: FILE: include/hw/usb/dwc2-regs.h:161:
+#define GINTSTS_GOUTNAKEFF^I^IBIT(7)$
ERROR: code indent should never use tabs
#182: FILE: include/hw/usb/dwc2-regs.h:162:
+#define GINTSTS_GINNAKEFF^I^IBIT(6)$
ERROR: code indent should never use tabs
#183: FILE: include/hw/usb/dwc2-regs.h:163:
+#define GINTSTS_NPTXFEMP^I^IBIT(5)$
ERROR: code indent should never use tabs
#184: FILE: include/hw/usb/dwc2-regs.h:164:
+#define GINTSTS_RXFLVL^I^I^IBIT(4)$
ERROR: code indent should never use tabs
#185: FILE: include/hw/usb/dwc2-regs.h:165:
+#define GINTSTS_SOF^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#186: FILE: include/hw/usb/dwc2-regs.h:166:
+#define GINTSTS_OTGINT^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#187: FILE: include/hw/usb/dwc2-regs.h:167:
+#define GINTSTS_MODEMIS^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#188: FILE: include/hw/usb/dwc2-regs.h:168:
+#define GINTSTS_CURMODE_HOST^I^IBIT(0)$
ERROR: code indent should never use tabs
#190: FILE: include/hw/usb/dwc2-regs.h:170:
+#define GRXSTSR^I^I^I^IHSOTG_REG(0x01C)$
ERROR: code indent should never use tabs
#191: FILE: include/hw/usb/dwc2-regs.h:171:
+#define GRXSTSP^I^I^I^IHSOTG_REG(0x020)$
ERROR: code indent should never use tabs
#192: FILE: include/hw/usb/dwc2-regs.h:172:
+#define GRXSTS_FN_MASK^I^I^I(0x7f << 25)$
ERROR: code indent should never use tabs
#193: FILE: include/hw/usb/dwc2-regs.h:173:
+#define GRXSTS_FN_SHIFT^I^I^I25$
ERROR: code indent should never use tabs
#194: FILE: include/hw/usb/dwc2-regs.h:174:
+#define GRXSTS_PKTSTS_MASK^I^I(0xf << 17)$
ERROR: code indent should never use tabs
#195: FILE: include/hw/usb/dwc2-regs.h:175:
+#define GRXSTS_PKTSTS_SHIFT^I^I17$
ERROR: code indent should never use tabs
#196: FILE: include/hw/usb/dwc2-regs.h:176:
+#define GRXSTS_PKTSTS_GLOBALOUTNAK^I1$
ERROR: code indent should never use tabs
#197: FILE: include/hw/usb/dwc2-regs.h:177:
+#define GRXSTS_PKTSTS_OUTRX^I^I2$
ERROR: code indent should never use tabs
#198: FILE: include/hw/usb/dwc2-regs.h:178:
+#define GRXSTS_PKTSTS_HCHIN^I^I2$
ERROR: code indent should never use tabs
#199: FILE: include/hw/usb/dwc2-regs.h:179:
+#define GRXSTS_PKTSTS_OUTDONE^I^I3$
ERROR: code indent should never use tabs
#200: FILE: include/hw/usb/dwc2-regs.h:180:
+#define GRXSTS_PKTSTS_HCHIN_XFER_COMP^I3$
ERROR: code indent should never use tabs
#201: FILE: include/hw/usb/dwc2-regs.h:181:
+#define GRXSTS_PKTSTS_SETUPDONE^I^I4$
ERROR: code indent should never use tabs
#202: FILE: include/hw/usb/dwc2-regs.h:182:
+#define GRXSTS_PKTSTS_DATATOGGLEERR^I5$
ERROR: code indent should never use tabs
#203: FILE: include/hw/usb/dwc2-regs.h:183:
+#define GRXSTS_PKTSTS_SETUPRX^I^I6$
ERROR: code indent should never use tabs
#204: FILE: include/hw/usb/dwc2-regs.h:184:
+#define GRXSTS_PKTSTS_HCHHALTED^I^I7$
ERROR: code indent should never use tabs
#205: FILE: include/hw/usb/dwc2-regs.h:185:
+#define GRXSTS_HCHNUM_MASK^I^I(0xf << 0)$
ERROR: code indent should never use tabs
#206: FILE: include/hw/usb/dwc2-regs.h:186:
+#define GRXSTS_HCHNUM_SHIFT^I^I0$
ERROR: code indent should never use tabs
#207: FILE: include/hw/usb/dwc2-regs.h:187:
+#define GRXSTS_DPID_MASK^I^I(0x3 << 15)$
ERROR: code indent should never use tabs
#208: FILE: include/hw/usb/dwc2-regs.h:188:
+#define GRXSTS_DPID_SHIFT^I^I15$
ERROR: code indent should never use tabs
#209: FILE: include/hw/usb/dwc2-regs.h:189:
+#define GRXSTS_BYTECNT_MASK^I^I(0x7ff << 4)$
ERROR: code indent should never use tabs
#210: FILE: include/hw/usb/dwc2-regs.h:190:
+#define GRXSTS_BYTECNT_SHIFT^I^I4$
ERROR: code indent should never use tabs
#211: FILE: include/hw/usb/dwc2-regs.h:191:
+#define GRXSTS_EPNUM_MASK^I^I(0xf << 0)$
ERROR: code indent should never use tabs
#212: FILE: include/hw/usb/dwc2-regs.h:192:
+#define GRXSTS_EPNUM_SHIFT^I^I0$
ERROR: code indent should never use tabs
#214: FILE: include/hw/usb/dwc2-regs.h:194:
+#define GRXFSIZ^I^I^I^IHSOTG_REG(0x024)$
ERROR: code indent should never use tabs
#215: FILE: include/hw/usb/dwc2-regs.h:195:
+#define GRXFSIZ_DEPTH_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#216: FILE: include/hw/usb/dwc2-regs.h:196:
+#define GRXFSIZ_DEPTH_SHIFT^I^I0$
ERROR: code indent should never use tabs
#218: FILE: include/hw/usb/dwc2-regs.h:198:
+#define GNPTXFSIZ^I^I^IHSOTG_REG(0x028)$
ERROR: code indent should never use tabs
#221: FILE: include/hw/usb/dwc2-regs.h:201:
+#define GNPTXSTS^I^I^IHSOTG_REG(0x02C)$
ERROR: code indent should never use tabs
#222: FILE: include/hw/usb/dwc2-regs.h:202:
+#define GNPTXSTS_NP_TXQ_TOP_MASK^I^I(0x7f << 24)$
ERROR: code indent should never use tabs
#223: FILE: include/hw/usb/dwc2-regs.h:203:
+#define GNPTXSTS_NP_TXQ_TOP_SHIFT^I^I24$
ERROR: code indent should never use tabs
#224: FILE: include/hw/usb/dwc2-regs.h:204:
+#define GNPTXSTS_NP_TXQ_SPC_AVAIL_MASK^I^I(0xff << 16)$
ERROR: code indent should never use tabs
#225: FILE: include/hw/usb/dwc2-regs.h:205:
+#define GNPTXSTS_NP_TXQ_SPC_AVAIL_SHIFT^I^I16$
ERROR: code indent should never use tabs
#226: FILE: include/hw/usb/dwc2-regs.h:206:
+#define GNPTXSTS_NP_TXQ_SPC_AVAIL_GET(_v)^I(((_v) >> 16) & 0xff)$
ERROR: code indent should never use tabs
#227: FILE: include/hw/usb/dwc2-regs.h:207:
+#define GNPTXSTS_NP_TXF_SPC_AVAIL_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#228: FILE: include/hw/usb/dwc2-regs.h:208:
+#define GNPTXSTS_NP_TXF_SPC_AVAIL_SHIFT^I^I0$
ERROR: code indent should never use tabs
#229: FILE: include/hw/usb/dwc2-regs.h:209:
+#define GNPTXSTS_NP_TXF_SPC_AVAIL_GET(_v)^I(((_v) >> 0) & 0xffff)$
ERROR: code indent should never use tabs
#231: FILE: include/hw/usb/dwc2-regs.h:211:
+#define GI2CCTL^I^I^I^IHSOTG_REG(0x0030)$
ERROR: code indent should never use tabs
#232: FILE: include/hw/usb/dwc2-regs.h:212:
+#define GI2CCTL_BSYDNE^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#233: FILE: include/hw/usb/dwc2-regs.h:213:
+#define GI2CCTL_RW^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#234: FILE: include/hw/usb/dwc2-regs.h:214:
+#define GI2CCTL_I2CDATSE0^I^IBIT(28)$
ERROR: code indent should never use tabs
#235: FILE: include/hw/usb/dwc2-regs.h:215:
+#define GI2CCTL_I2CDEVADDR_MASK^I^I(0x3 << 26)$
ERROR: code indent should never use tabs
#236: FILE: include/hw/usb/dwc2-regs.h:216:
+#define GI2CCTL_I2CDEVADDR_SHIFT^I26$
ERROR: code indent should never use tabs
#237: FILE: include/hw/usb/dwc2-regs.h:217:
+#define GI2CCTL_I2CSUSPCTL^I^IBIT(25)$
ERROR: code indent should never use tabs
#238: FILE: include/hw/usb/dwc2-regs.h:218:
+#define GI2CCTL_ACK^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#239: FILE: include/hw/usb/dwc2-regs.h:219:
+#define GI2CCTL_I2CEN^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#240: FILE: include/hw/usb/dwc2-regs.h:220:
+#define GI2CCTL_ADDR_MASK^I^I(0x7f << 16)$
ERROR: code indent should never use tabs
#241: FILE: include/hw/usb/dwc2-regs.h:221:
+#define GI2CCTL_ADDR_SHIFT^I^I16$
ERROR: code indent should never use tabs
#242: FILE: include/hw/usb/dwc2-regs.h:222:
+#define GI2CCTL_REGADDR_MASK^I^I(0xff << 8)$
ERROR: code indent should never use tabs
#243: FILE: include/hw/usb/dwc2-regs.h:223:
+#define GI2CCTL_REGADDR_SHIFT^I^I8$
ERROR: code indent should never use tabs
#244: FILE: include/hw/usb/dwc2-regs.h:224:
+#define GI2CCTL_RWDATA_MASK^I^I(0xff << 0)$
ERROR: code indent should never use tabs
#245: FILE: include/hw/usb/dwc2-regs.h:225:
+#define GI2CCTL_RWDATA_SHIFT^I^I0$
ERROR: code indent should never use tabs
#247: FILE: include/hw/usb/dwc2-regs.h:227:
+#define GPVNDCTL^I^I^IHSOTG_REG(0x0034)$
ERROR: code indent should never use tabs
#248: FILE: include/hw/usb/dwc2-regs.h:228:
+#define GGPIO^I^I^I^IHSOTG_REG(0x0038)$
ERROR: code indent should never use tabs
#249: FILE: include/hw/usb/dwc2-regs.h:229:
+#define GGPIO_STM32_OTG_GCCFG_PWRDWN^IBIT(16)$
ERROR: code indent should never use tabs
#251: FILE: include/hw/usb/dwc2-regs.h:231:
+#define GUID^I^I^I^IHSOTG_REG(0x003c)$
ERROR: code indent should never use tabs
#252: FILE: include/hw/usb/dwc2-regs.h:232:
+#define GSNPSID^I^I^I^IHSOTG_REG(0x0040)$
ERROR: code indent should never use tabs
#253: FILE: include/hw/usb/dwc2-regs.h:233:
+#define GHWCFG1^I^I^I^IHSOTG_REG(0x0044)$
ERROR: code indent should never use tabs
#254: FILE: include/hw/usb/dwc2-regs.h:234:
+#define GSNPSID_ID_MASK^I^I^IGENMASK(31, 16)$
ERROR: code indent should never use tabs
#256: FILE: include/hw/usb/dwc2-regs.h:236:
+#define GHWCFG2^I^I^I^IHSOTG_REG(0x0048)$
ERROR: code indent should never use tabs
#257: FILE: include/hw/usb/dwc2-regs.h:237:
+#define GHWCFG2_OTG_ENABLE_IC_USB^I^IBIT(31)$
ERROR: code indent should never use tabs
#258: FILE: include/hw/usb/dwc2-regs.h:238:
+#define GHWCFG2_DEV_TOKEN_Q_DEPTH_MASK^I^I(0x1f << 26)$
ERROR: code indent should never use tabs
#259: FILE: include/hw/usb/dwc2-regs.h:239:
+#define GHWCFG2_DEV_TOKEN_Q_DEPTH_SHIFT^I^I26$
ERROR: code indent should never use tabs
#260: FILE: include/hw/usb/dwc2-regs.h:240:
+#define GHWCFG2_HOST_PERIO_TX_Q_DEPTH_MASK^I(0x3 << 24)$
ERROR: code indent should never use tabs
#261: FILE: include/hw/usb/dwc2-regs.h:241:
+#define GHWCFG2_HOST_PERIO_TX_Q_DEPTH_SHIFT^I24$
ERROR: code indent should never use tabs
#262: FILE: include/hw/usb/dwc2-regs.h:242:
+#define GHWCFG2_NONPERIO_TX_Q_DEPTH_MASK^I(0x3 << 22)$
ERROR: code indent should never use tabs
#263: FILE: include/hw/usb/dwc2-regs.h:243:
+#define GHWCFG2_NONPERIO_TX_Q_DEPTH_SHIFT^I22$
ERROR: code indent should never use tabs
#264: FILE: include/hw/usb/dwc2-regs.h:244:
+#define GHWCFG2_MULTI_PROC_INT^I^I^IBIT(20)$
ERROR: code indent should never use tabs
#265: FILE: include/hw/usb/dwc2-regs.h:245:
+#define GHWCFG2_DYNAMIC_FIFO^I^I^IBIT(19)$
ERROR: code indent should never use tabs
#266: FILE: include/hw/usb/dwc2-regs.h:246:
+#define GHWCFG2_PERIO_EP_SUPPORTED^I^IBIT(18)$
ERROR: code indent should never use tabs
#267: FILE: include/hw/usb/dwc2-regs.h:247:
+#define GHWCFG2_NUM_HOST_CHAN_MASK^I^I(0xf << 14)$
ERROR: code indent should never use tabs
#268: FILE: include/hw/usb/dwc2-regs.h:248:
+#define GHWCFG2_NUM_HOST_CHAN_SHIFT^I^I14$
ERROR: code indent should never use tabs
#269: FILE: include/hw/usb/dwc2-regs.h:249:
+#define GHWCFG2_NUM_DEV_EP_MASK^I^I^I(0xf << 10)$
ERROR: code indent should never use tabs
#270: FILE: include/hw/usb/dwc2-regs.h:250:
+#define GHWCFG2_NUM_DEV_EP_SHIFT^I^I10$
ERROR: code indent should never use tabs
#271: FILE: include/hw/usb/dwc2-regs.h:251:
+#define GHWCFG2_FS_PHY_TYPE_MASK^I^I(0x3 << 8)$
ERROR: code indent should never use tabs
#272: FILE: include/hw/usb/dwc2-regs.h:252:
+#define GHWCFG2_FS_PHY_TYPE_SHIFT^I^I8$
ERROR: code indent should never use tabs
#273: FILE: include/hw/usb/dwc2-regs.h:253:
+#define GHWCFG2_FS_PHY_TYPE_NOT_SUPPORTED^I0$
ERROR: code indent should never use tabs
#274: FILE: include/hw/usb/dwc2-regs.h:254:
+#define GHWCFG2_FS_PHY_TYPE_DEDICATED^I^I1$
ERROR: code indent should never use tabs
#275: FILE: include/hw/usb/dwc2-regs.h:255:
+#define GHWCFG2_FS_PHY_TYPE_SHARED_UTMI^I^I2$
ERROR: code indent should never use tabs
#276: FILE: include/hw/usb/dwc2-regs.h:256:
+#define GHWCFG2_FS_PHY_TYPE_SHARED_ULPI^I^I3$
ERROR: code indent should never use tabs
#277: FILE: include/hw/usb/dwc2-regs.h:257:
+#define GHWCFG2_HS_PHY_TYPE_MASK^I^I(0x3 << 6)$
ERROR: code indent should never use tabs
#278: FILE: include/hw/usb/dwc2-regs.h:258:
+#define GHWCFG2_HS_PHY_TYPE_SHIFT^I^I6$
ERROR: code indent should never use tabs
#279: FILE: include/hw/usb/dwc2-regs.h:259:
+#define GHWCFG2_HS_PHY_TYPE_NOT_SUPPORTED^I0$
ERROR: code indent should never use tabs
#280: FILE: include/hw/usb/dwc2-regs.h:260:
+#define GHWCFG2_HS_PHY_TYPE_UTMI^I^I1$
ERROR: code indent should never use tabs
#281: FILE: include/hw/usb/dwc2-regs.h:261:
+#define GHWCFG2_HS_PHY_TYPE_ULPI^I^I2$
ERROR: code indent should never use tabs
#282: FILE: include/hw/usb/dwc2-regs.h:262:
+#define GHWCFG2_HS_PHY_TYPE_UTMI_ULPI^I^I3$
ERROR: code indent should never use tabs
#283: FILE: include/hw/usb/dwc2-regs.h:263:
+#define GHWCFG2_POINT2POINT^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#284: FILE: include/hw/usb/dwc2-regs.h:264:
+#define GHWCFG2_ARCHITECTURE_MASK^I^I(0x3 << 3)$
ERROR: code indent should never use tabs
#285: FILE: include/hw/usb/dwc2-regs.h:265:
+#define GHWCFG2_ARCHITECTURE_SHIFT^I^I3$
ERROR: code indent should never use tabs
#286: FILE: include/hw/usb/dwc2-regs.h:266:
+#define GHWCFG2_SLAVE_ONLY_ARCH^I^I^I0$
ERROR: code indent should never use tabs
#287: FILE: include/hw/usb/dwc2-regs.h:267:
+#define GHWCFG2_EXT_DMA_ARCH^I^I^I1$
ERROR: code indent should never use tabs
#288: FILE: include/hw/usb/dwc2-regs.h:268:
+#define GHWCFG2_INT_DMA_ARCH^I^I^I2$
ERROR: code indent should never use tabs
#289: FILE: include/hw/usb/dwc2-regs.h:269:
+#define GHWCFG2_OP_MODE_MASK^I^I^I(0x7 << 0)$
ERROR: code indent should never use tabs
#290: FILE: include/hw/usb/dwc2-regs.h:270:
+#define GHWCFG2_OP_MODE_SHIFT^I^I^I0$
ERROR: code indent should never use tabs
#291: FILE: include/hw/usb/dwc2-regs.h:271:
+#define GHWCFG2_OP_MODE_HNP_SRP_CAPABLE^I^I0$
ERROR: code indent should never use tabs
#292: FILE: include/hw/usb/dwc2-regs.h:272:
+#define GHWCFG2_OP_MODE_SRP_ONLY_CAPABLE^I1$
ERROR: code indent should never use tabs
#293: FILE: include/hw/usb/dwc2-regs.h:273:
+#define GHWCFG2_OP_MODE_NO_HNP_SRP_CAPABLE^I2$
ERROR: code indent should never use tabs
#294: FILE: include/hw/usb/dwc2-regs.h:274:
+#define GHWCFG2_OP_MODE_SRP_CAPABLE_DEVICE^I3$
ERROR: code indent should never use tabs
#295: FILE: include/hw/usb/dwc2-regs.h:275:
+#define GHWCFG2_OP_MODE_NO_SRP_CAPABLE_DEVICE^I4$
ERROR: code indent should never use tabs
#296: FILE: include/hw/usb/dwc2-regs.h:276:
+#define GHWCFG2_OP_MODE_SRP_CAPABLE_HOST^I5$
ERROR: code indent should never use tabs
#297: FILE: include/hw/usb/dwc2-regs.h:277:
+#define GHWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST^I6$
ERROR: code indent should never use tabs
#298: FILE: include/hw/usb/dwc2-regs.h:278:
+#define GHWCFG2_OP_MODE_UNDEFINED^I^I7$
ERROR: code indent should never use tabs
#300: FILE: include/hw/usb/dwc2-regs.h:280:
+#define GHWCFG3^I^I^I^IHSOTG_REG(0x004c)$
ERROR: code indent should never use tabs
#301: FILE: include/hw/usb/dwc2-regs.h:281:
+#define GHWCFG3_DFIFO_DEPTH_MASK^I^I(0xffff << 16)$
ERROR: code indent should never use tabs
#302: FILE: include/hw/usb/dwc2-regs.h:282:
+#define GHWCFG3_DFIFO_DEPTH_SHIFT^I^I16$
ERROR: code indent should never use tabs
#303: FILE: include/hw/usb/dwc2-regs.h:283:
+#define GHWCFG3_OTG_LPM_EN^I^I^IBIT(15)$
ERROR: code indent should never use tabs
#304: FILE: include/hw/usb/dwc2-regs.h:284:
+#define GHWCFG3_BC_SUPPORT^I^I^IBIT(14)$
ERROR: code indent should never use tabs
#305: FILE: include/hw/usb/dwc2-regs.h:285:
+#define GHWCFG3_OTG_ENABLE_HSIC^I^I^IBIT(13)$
ERROR: code indent should never use tabs
#306: FILE: include/hw/usb/dwc2-regs.h:286:
+#define GHWCFG3_ADP_SUPP^I^I^IBIT(12)$
ERROR: code indent should never use tabs
#307: FILE: include/hw/usb/dwc2-regs.h:287:
+#define GHWCFG3_SYNCH_RESET_TYPE^I^IBIT(11)$
ERROR: code indent should never use tabs
#308: FILE: include/hw/usb/dwc2-regs.h:288:
+#define GHWCFG3_OPTIONAL_FEATURES^I^IBIT(10)$
ERROR: code indent should never use tabs
#309: FILE: include/hw/usb/dwc2-regs.h:289:
+#define GHWCFG3_VENDOR_CTRL_IF^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#310: FILE: include/hw/usb/dwc2-regs.h:290:
+#define GHWCFG3_I2C^I^I^I^IBIT(8)$
ERROR: code indent should never use tabs
#311: FILE: include/hw/usb/dwc2-regs.h:291:
+#define GHWCFG3_OTG_FUNC^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#312: FILE: include/hw/usb/dwc2-regs.h:292:
+#define GHWCFG3_PACKET_SIZE_CNTR_WIDTH_MASK^I(0x7 << 4)$
ERROR: code indent should never use tabs
#313: FILE: include/hw/usb/dwc2-regs.h:293:
+#define GHWCFG3_PACKET_SIZE_CNTR_WIDTH_SHIFT^I4$
ERROR: code indent should never use tabs
#314: FILE: include/hw/usb/dwc2-regs.h:294:
+#define GHWCFG3_XFER_SIZE_CNTR_WIDTH_MASK^I(0xf << 0)$
ERROR: code indent should never use tabs
#315: FILE: include/hw/usb/dwc2-regs.h:295:
+#define GHWCFG3_XFER_SIZE_CNTR_WIDTH_SHIFT^I0$
ERROR: code indent should never use tabs
#317: FILE: include/hw/usb/dwc2-regs.h:297:
+#define GHWCFG4^I^I^I^IHSOTG_REG(0x0050)$
ERROR: code indent should never use tabs
#318: FILE: include/hw/usb/dwc2-regs.h:298:
+#define GHWCFG4_DESC_DMA_DYN^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#319: FILE: include/hw/usb/dwc2-regs.h:299:
+#define GHWCFG4_DESC_DMA^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#320: FILE: include/hw/usb/dwc2-regs.h:300:
+#define GHWCFG4_NUM_IN_EPS_MASK^I^I^I(0xf << 26)$
ERROR: code indent should never use tabs
#321: FILE: include/hw/usb/dwc2-regs.h:301:
+#define GHWCFG4_NUM_IN_EPS_SHIFT^I^I26$
ERROR: code indent should never use tabs
#322: FILE: include/hw/usb/dwc2-regs.h:302:
+#define GHWCFG4_DED_FIFO_EN^I^I^IBIT(25)$
ERROR: code indent should never use tabs
#323: FILE: include/hw/usb/dwc2-regs.h:303:
+#define GHWCFG4_DED_FIFO_SHIFT^I^I25$
ERROR: code indent should never use tabs
#324: FILE: include/hw/usb/dwc2-regs.h:304:
+#define GHWCFG4_SESSION_END_FILT_EN^I^IBIT(24)$
ERROR: code indent should never use tabs
#325: FILE: include/hw/usb/dwc2-regs.h:305:
+#define GHWCFG4_B_VALID_FILT_EN^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#326: FILE: include/hw/usb/dwc2-regs.h:306:
+#define GHWCFG4_A_VALID_FILT_EN^I^I^IBIT(22)$
ERROR: code indent should never use tabs
#327: FILE: include/hw/usb/dwc2-regs.h:307:
+#define GHWCFG4_VBUS_VALID_FILT_EN^I^IBIT(21)$
ERROR: code indent should never use tabs
#328: FILE: include/hw/usb/dwc2-regs.h:308:
+#define GHWCFG4_IDDIG_FILT_EN^I^I^IBIT(20)$
ERROR: code indent should never use tabs
#329: FILE: include/hw/usb/dwc2-regs.h:309:
+#define GHWCFG4_NUM_DEV_MODE_CTRL_EP_MASK^I(0xf << 16)$
ERROR: code indent should never use tabs
#330: FILE: include/hw/usb/dwc2-regs.h:310:
+#define GHWCFG4_NUM_DEV_MODE_CTRL_EP_SHIFT^I16$
ERROR: code indent should never use tabs
#331: FILE: include/hw/usb/dwc2-regs.h:311:
+#define GHWCFG4_UTMI_PHY_DATA_WIDTH_MASK^I(0x3 << 14)$
ERROR: code indent should never use tabs
#332: FILE: include/hw/usb/dwc2-regs.h:312:
+#define GHWCFG4_UTMI_PHY_DATA_WIDTH_SHIFT^I14$
ERROR: code indent should never use tabs
#333: FILE: include/hw/usb/dwc2-regs.h:313:
+#define GHWCFG4_UTMI_PHY_DATA_WIDTH_8^I^I0$
ERROR: code indent should never use tabs
#334: FILE: include/hw/usb/dwc2-regs.h:314:
+#define GHWCFG4_UTMI_PHY_DATA_WIDTH_16^I^I1$
ERROR: code indent should never use tabs
#335: FILE: include/hw/usb/dwc2-regs.h:315:
+#define GHWCFG4_UTMI_PHY_DATA_WIDTH_8_OR_16^I2$
ERROR: code indent should never use tabs
#336: FILE: include/hw/usb/dwc2-regs.h:316:
+#define GHWCFG4_ACG_SUPPORTED^I^I^IBIT(12)$
ERROR: code indent should never use tabs
#337: FILE: include/hw/usb/dwc2-regs.h:317:
+#define GHWCFG4_IPG_ISOC_SUPPORTED^I^IBIT(11)$
ERROR: code indent should never use tabs
#339: FILE: include/hw/usb/dwc2-regs.h:319:
+#define GHWCFG4_XHIBER^I^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#340: FILE: include/hw/usb/dwc2-regs.h:320:
+#define GHWCFG4_HIBER^I^I^I^IBIT(6)$
ERROR: code indent should never use tabs
#341: FILE: include/hw/usb/dwc2-regs.h:321:
+#define GHWCFG4_MIN_AHB_FREQ^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#342: FILE: include/hw/usb/dwc2-regs.h:322:
+#define GHWCFG4_POWER_OPTIMIZ^I^I^IBIT(4)$
ERROR: code indent should never use tabs
#343: FILE: include/hw/usb/dwc2-regs.h:323:
+#define GHWCFG4_NUM_DEV_PERIO_IN_EP_MASK^I(0xf << 0)$
ERROR: code indent should never use tabs
#344: FILE: include/hw/usb/dwc2-regs.h:324:
+#define GHWCFG4_NUM_DEV_PERIO_IN_EP_SHIFT^I0$
ERROR: code indent should never use tabs
#346: FILE: include/hw/usb/dwc2-regs.h:326:
+#define GLPMCFG^I^I^I^IHSOTG_REG(0x0054)$
ERROR: code indent should never use tabs
#347: FILE: include/hw/usb/dwc2-regs.h:327:
+#define GLPMCFG_INVSELHSIC^I^IBIT(31)$
ERROR: code indent should never use tabs
#348: FILE: include/hw/usb/dwc2-regs.h:328:
+#define GLPMCFG_HSICCON^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#349: FILE: include/hw/usb/dwc2-regs.h:329:
+#define GLPMCFG_RSTRSLPSTS^I^IBIT(29)$
ERROR: code indent should never use tabs
#350: FILE: include/hw/usb/dwc2-regs.h:330:
+#define GLPMCFG_ENBESL^I^I^IBIT(28)$
ERROR: code indent should never use tabs
#351: FILE: include/hw/usb/dwc2-regs.h:331:
+#define GLPMCFG_LPM_RETRYCNT_STS_MASK^I(0x7 << 25)$
ERROR: code indent should never use tabs
#352: FILE: include/hw/usb/dwc2-regs.h:332:
+#define GLPMCFG_LPM_RETRYCNT_STS_SHIFT^I25$
ERROR: code indent should never use tabs
#353: FILE: include/hw/usb/dwc2-regs.h:333:
+#define GLPMCFG_SNDLPM^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#354: FILE: include/hw/usb/dwc2-regs.h:334:
+#define GLPMCFG_RETRY_CNT_MASK^I^I(0x7 << 21)$
ERROR: code indent should never use tabs
#355: FILE: include/hw/usb/dwc2-regs.h:335:
+#define GLPMCFG_RETRY_CNT_SHIFT^I^I21$
ERROR: code indent should never use tabs
#356: FILE: include/hw/usb/dwc2-regs.h:336:
+#define GLPMCFG_LPM_REJECT_CTRL_CONTROL^IBIT(21)$
ERROR: code indent should never use tabs
#357: FILE: include/hw/usb/dwc2-regs.h:337:
+#define GLPMCFG_LPM_ACCEPT_CTRL_ISOC^IBIT(22)$
ERROR: code indent should never use tabs
#358: FILE: include/hw/usb/dwc2-regs.h:338:
+#define GLPMCFG_LPM_CHNL_INDX_MASK^I(0xf << 17)$
ERROR: code indent should never use tabs
#359: FILE: include/hw/usb/dwc2-regs.h:339:
+#define GLPMCFG_LPM_CHNL_INDX_SHIFT^I17$
ERROR: code indent should never use tabs
#360: FILE: include/hw/usb/dwc2-regs.h:340:
+#define GLPMCFG_L1RESUMEOK^I^IBIT(16)$
ERROR: code indent should never use tabs
#361: FILE: include/hw/usb/dwc2-regs.h:341:
+#define GLPMCFG_SLPSTS^I^I^IBIT(15)$
ERROR: code indent should never use tabs
#362: FILE: include/hw/usb/dwc2-regs.h:342:
+#define GLPMCFG_COREL1RES_MASK^I^I(0x3 << 13)$
ERROR: code indent should never use tabs
#363: FILE: include/hw/usb/dwc2-regs.h:343:
+#define GLPMCFG_COREL1RES_SHIFT^I^I13$
ERROR: code indent should never use tabs
#364: FILE: include/hw/usb/dwc2-regs.h:344:
+#define GLPMCFG_HIRD_THRES_MASK^I^I(0x1f << 8)$
ERROR: code indent should never use tabs
#365: FILE: include/hw/usb/dwc2-regs.h:345:
+#define GLPMCFG_HIRD_THRES_SHIFT^I8$
ERROR: code indent should never use tabs
#366: FILE: include/hw/usb/dwc2-regs.h:346:
+#define GLPMCFG_HIRD_THRES_EN^I^I(0x10 << 8)$
ERROR: code indent should never use tabs
#367: FILE: include/hw/usb/dwc2-regs.h:347:
+#define GLPMCFG_ENBLSLPM^I^IBIT(7)$
ERROR: code indent should never use tabs
#368: FILE: include/hw/usb/dwc2-regs.h:348:
+#define GLPMCFG_BREMOTEWAKE^I^IBIT(6)$
ERROR: code indent should never use tabs
#369: FILE: include/hw/usb/dwc2-regs.h:349:
+#define GLPMCFG_HIRD_MASK^I^I(0xf << 2)$
ERROR: code indent should never use tabs
#370: FILE: include/hw/usb/dwc2-regs.h:350:
+#define GLPMCFG_HIRD_SHIFT^I^I2$
ERROR: code indent should never use tabs
#371: FILE: include/hw/usb/dwc2-regs.h:351:
+#define GLPMCFG_APPL1RES^I^IBIT(1)$
ERROR: code indent should never use tabs
#372: FILE: include/hw/usb/dwc2-regs.h:352:
+#define GLPMCFG_LPMCAP^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#374: FILE: include/hw/usb/dwc2-regs.h:354:
+#define GPWRDN^I^I^I^IHSOTG_REG(0x0058)$
ERROR: code indent should never use tabs
#375: FILE: include/hw/usb/dwc2-regs.h:355:
+#define GPWRDN_MULT_VAL_ID_BC_MASK^I(0x1f << 24)$
ERROR: code indent should never use tabs
#376: FILE: include/hw/usb/dwc2-regs.h:356:
+#define GPWRDN_MULT_VAL_ID_BC_SHIFT^I24$
ERROR: code indent should never use tabs
#377: FILE: include/hw/usb/dwc2-regs.h:357:
+#define GPWRDN_ADP_INT^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#378: FILE: include/hw/usb/dwc2-regs.h:358:
+#define GPWRDN_BSESSVLD^I^I^IBIT(22)$
ERROR: code indent should never use tabs
#379: FILE: include/hw/usb/dwc2-regs.h:359:
+#define GPWRDN_IDSTS^I^I^IBIT(21)$
ERROR: code indent should never use tabs
#380: FILE: include/hw/usb/dwc2-regs.h:360:
+#define GPWRDN_LINESTATE_MASK^I^I(0x3 << 19)$
ERROR: code indent should never use tabs
#381: FILE: include/hw/usb/dwc2-regs.h:361:
+#define GPWRDN_LINESTATE_SHIFT^I^I19$
ERROR: code indent should never use tabs
#382: FILE: include/hw/usb/dwc2-regs.h:362:
+#define GPWRDN_STS_CHGINT_MSK^I^IBIT(18)$
ERROR: code indent should never use tabs
#383: FILE: include/hw/usb/dwc2-regs.h:363:
+#define GPWRDN_STS_CHGINT^I^IBIT(17)$
ERROR: code indent should never use tabs
#384: FILE: include/hw/usb/dwc2-regs.h:364:
+#define GPWRDN_SRP_DET_MSK^I^IBIT(16)$
ERROR: code indent should never use tabs
#385: FILE: include/hw/usb/dwc2-regs.h:365:
+#define GPWRDN_SRP_DET^I^I^IBIT(15)$
ERROR: code indent should never use tabs
#386: FILE: include/hw/usb/dwc2-regs.h:366:
+#define GPWRDN_CONNECT_DET_MSK^I^IBIT(14)$
ERROR: code indent should never use tabs
#387: FILE: include/hw/usb/dwc2-regs.h:367:
+#define GPWRDN_CONNECT_DET^I^IBIT(13)$
ERROR: code indent should never use tabs
#388: FILE: include/hw/usb/dwc2-regs.h:368:
+#define GPWRDN_DISCONN_DET_MSK^I^IBIT(12)$
ERROR: code indent should never use tabs
#389: FILE: include/hw/usb/dwc2-regs.h:369:
+#define GPWRDN_DISCONN_DET^I^IBIT(11)$
ERROR: code indent should never use tabs
#390: FILE: include/hw/usb/dwc2-regs.h:370:
+#define GPWRDN_RST_DET_MSK^I^IBIT(10)$
ERROR: code indent should never use tabs
#391: FILE: include/hw/usb/dwc2-regs.h:371:
+#define GPWRDN_RST_DET^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#392: FILE: include/hw/usb/dwc2-regs.h:372:
+#define GPWRDN_LNSTSCHG_MSK^I^IBIT(8)$
ERROR: code indent should never use tabs
#393: FILE: include/hw/usb/dwc2-regs.h:373:
+#define GPWRDN_LNSTSCHG^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#394: FILE: include/hw/usb/dwc2-regs.h:374:
+#define GPWRDN_DIS_VBUS^I^I^IBIT(6)$
ERROR: code indent should never use tabs
#395: FILE: include/hw/usb/dwc2-regs.h:375:
+#define GPWRDN_PWRDNSWTCH^I^IBIT(5)$
ERROR: code indent should never use tabs
#396: FILE: include/hw/usb/dwc2-regs.h:376:
+#define GPWRDN_PWRDNRSTN^I^IBIT(4)$
ERROR: code indent should never use tabs
#397: FILE: include/hw/usb/dwc2-regs.h:377:
+#define GPWRDN_PWRDNCLMP^I^IBIT(3)$
ERROR: code indent should never use tabs
#398: FILE: include/hw/usb/dwc2-regs.h:378:
+#define GPWRDN_RESTORE^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#399: FILE: include/hw/usb/dwc2-regs.h:379:
+#define GPWRDN_PMUACTV^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#400: FILE: include/hw/usb/dwc2-regs.h:380:
+#define GPWRDN_PMUINTSEL^I^IBIT(0)$
ERROR: code indent should never use tabs
#402: FILE: include/hw/usb/dwc2-regs.h:382:
+#define GDFIFOCFG^I^I^IHSOTG_REG(0x005c)$
ERROR: code indent should never use tabs
#403: FILE: include/hw/usb/dwc2-regs.h:383:
+#define GDFIFOCFG_EPINFOBASE_MASK^I(0xffff << 16)$
ERROR: code indent should never use tabs
#404: FILE: include/hw/usb/dwc2-regs.h:384:
+#define GDFIFOCFG_EPINFOBASE_SHIFT^I16$
ERROR: code indent should never use tabs
#405: FILE: include/hw/usb/dwc2-regs.h:385:
+#define GDFIFOCFG_GDFIFOCFG_MASK^I(0xffff << 0)$
ERROR: code indent should never use tabs
#406: FILE: include/hw/usb/dwc2-regs.h:386:
+#define GDFIFOCFG_GDFIFOCFG_SHIFT^I0$
ERROR: code indent should never use tabs
#408: FILE: include/hw/usb/dwc2-regs.h:388:
+#define ADPCTL^I^I^I^IHSOTG_REG(0x0060)$
ERROR: code indent should never use tabs
#409: FILE: include/hw/usb/dwc2-regs.h:389:
+#define ADPCTL_AR_MASK^I^I^I(0x3 << 27)$
ERROR: code indent should never use tabs
#410: FILE: include/hw/usb/dwc2-regs.h:390:
+#define ADPCTL_AR_SHIFT^I^I^I27$
ERROR: code indent should never use tabs
#411: FILE: include/hw/usb/dwc2-regs.h:391:
+#define ADPCTL_ADP_TMOUT_INT_MSK^IBIT(26)$
ERROR: code indent should never use tabs
#412: FILE: include/hw/usb/dwc2-regs.h:392:
+#define ADPCTL_ADP_SNS_INT_MSK^I^IBIT(25)$
ERROR: code indent should never use tabs
#413: FILE: include/hw/usb/dwc2-regs.h:393:
+#define ADPCTL_ADP_PRB_INT_MSK^I^IBIT(24)$
ERROR: code indent should never use tabs
#414: FILE: include/hw/usb/dwc2-regs.h:394:
+#define ADPCTL_ADP_TMOUT_INT^I^IBIT(23)$
ERROR: code indent should never use tabs
#415: FILE: include/hw/usb/dwc2-regs.h:395:
+#define ADPCTL_ADP_SNS_INT^I^IBIT(22)$
ERROR: code indent should never use tabs
#416: FILE: include/hw/usb/dwc2-regs.h:396:
+#define ADPCTL_ADP_PRB_INT^I^IBIT(21)$
ERROR: code indent should never use tabs
#417: FILE: include/hw/usb/dwc2-regs.h:397:
+#define ADPCTL_ADPENA^I^I^IBIT(20)$
ERROR: code indent should never use tabs
#418: FILE: include/hw/usb/dwc2-regs.h:398:
+#define ADPCTL_ADPRES^I^I^IBIT(19)$
ERROR: code indent should never use tabs
#419: FILE: include/hw/usb/dwc2-regs.h:399:
+#define ADPCTL_ENASNS^I^I^IBIT(18)$
ERROR: code indent should never use tabs
#420: FILE: include/hw/usb/dwc2-regs.h:400:
+#define ADPCTL_ENAPRB^I^I^IBIT(17)$
ERROR: code indent should never use tabs
#421: FILE: include/hw/usb/dwc2-regs.h:401:
+#define ADPCTL_RTIM_MASK^I^I(0x7ff << 6)$
ERROR: code indent should never use tabs
#422: FILE: include/hw/usb/dwc2-regs.h:402:
+#define ADPCTL_RTIM_SHIFT^I^I6$
ERROR: code indent should never use tabs
#423: FILE: include/hw/usb/dwc2-regs.h:403:
+#define ADPCTL_PRB_PER_MASK^I^I(0x3 << 4)$
ERROR: code indent should never use tabs
#424: FILE: include/hw/usb/dwc2-regs.h:404:
+#define ADPCTL_PRB_PER_SHIFT^I^I4$
ERROR: code indent should never use tabs
#425: FILE: include/hw/usb/dwc2-regs.h:405:
+#define ADPCTL_PRB_DELTA_MASK^I^I(0x3 << 2)$
ERROR: code indent should never use tabs
#426: FILE: include/hw/usb/dwc2-regs.h:406:
+#define ADPCTL_PRB_DELTA_SHIFT^I^I2$
ERROR: code indent should never use tabs
#427: FILE: include/hw/usb/dwc2-regs.h:407:
+#define ADPCTL_PRB_DSCHRG_MASK^I^I(0x3 << 0)$
ERROR: code indent should never use tabs
#428: FILE: include/hw/usb/dwc2-regs.h:408:
+#define ADPCTL_PRB_DSCHRG_SHIFT^I^I0$
ERROR: code indent should never use tabs
#430: FILE: include/hw/usb/dwc2-regs.h:410:
+#define GREFCLK^I^I^I^I HSOTG_REG(0x0064)$
ERROR: code indent should never use tabs
#431: FILE: include/hw/usb/dwc2-regs.h:411:
+#define GREFCLK_REFCLKPER_MASK^I^I (0x1ffff << 15)$
ERROR: code indent should never use tabs
#432: FILE: include/hw/usb/dwc2-regs.h:412:
+#define GREFCLK_REFCLKPER_SHIFT^I^I 15$
ERROR: code indent should never use tabs
#433: FILE: include/hw/usb/dwc2-regs.h:413:
+#define GREFCLK_REF_CLK_MODE^I^I BIT(14)$
ERROR: code indent should never use tabs
#434: FILE: include/hw/usb/dwc2-regs.h:414:
+#define GREFCLK_SOF_CNT_WKUP_ALERT_MASK^I (0x3ff)$
ERROR: code indent should never use tabs
#437: FILE: include/hw/usb/dwc2-regs.h:417:
+#define GINTMSK2^I^I^IHSOTG_REG(0x0068)$
ERROR: code indent should never use tabs
#438: FILE: include/hw/usb/dwc2-regs.h:418:
+#define GINTMSK2_WKUP_ALERT_INT_MSK^IBIT(0)$
ERROR: code indent should never use tabs
#440: FILE: include/hw/usb/dwc2-regs.h:420:
+#define GINTSTS2^I^I^IHSOTG_REG(0x006c)$
ERROR: code indent should never use tabs
#441: FILE: include/hw/usb/dwc2-regs.h:421:
+#define GINTSTS2_WKUP_ALERT_INT^I^IBIT(0)$
ERROR: code indent should never use tabs
#443: FILE: include/hw/usb/dwc2-regs.h:423:
+#define HPTXFSIZ^I^I^IHSOTG_REG(0x100)$
ERROR: code indent should never use tabs
#446: FILE: include/hw/usb/dwc2-regs.h:426:
+#define DPTXFSIZN(_a)^I^I^IHSOTG_REG(0x104 + (((_a) - 1) * 4))$
ERROR: code indent should never use tabs
#450: FILE: include/hw/usb/dwc2-regs.h:430:
+#define FIFOSIZE_DEPTH_MASK^I^I(0xffff << 16)$
ERROR: code indent should never use tabs
#451: FILE: include/hw/usb/dwc2-regs.h:431:
+#define FIFOSIZE_DEPTH_SHIFT^I^I16$
ERROR: code indent should never use tabs
#452: FILE: include/hw/usb/dwc2-regs.h:432:
+#define FIFOSIZE_STARTADDR_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#453: FILE: include/hw/usb/dwc2-regs.h:433:
+#define FIFOSIZE_STARTADDR_SHIFT^I0$
ERROR: code indent should never use tabs
#454: FILE: include/hw/usb/dwc2-regs.h:434:
+#define FIFOSIZE_DEPTH_GET(_x)^I^I(((_x) >> 16) & 0xffff)$
ERROR: code indent should never use tabs
#458: FILE: include/hw/usb/dwc2-regs.h:438:
+#define DCFG^I^I^I^IHSOTG_REG(0x800)$
ERROR: code indent should never use tabs
#459: FILE: include/hw/usb/dwc2-regs.h:439:
+#define DCFG_DESCDMA_EN^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#460: FILE: include/hw/usb/dwc2-regs.h:440:
+#define DCFG_EPMISCNT_MASK^I^I(0x1f << 18)$
ERROR: code indent should never use tabs
#461: FILE: include/hw/usb/dwc2-regs.h:441:
+#define DCFG_EPMISCNT_SHIFT^I^I18$
ERROR: code indent should never use tabs
#462: FILE: include/hw/usb/dwc2-regs.h:442:
+#define DCFG_EPMISCNT_LIMIT^I^I0x1f$
ERROR: code indent should never use tabs
#463: FILE: include/hw/usb/dwc2-regs.h:443:
+#define DCFG_EPMISCNT(_x)^I^I((_x) << 18)$
ERROR: code indent should never use tabs
#464: FILE: include/hw/usb/dwc2-regs.h:444:
+#define DCFG_IPG_ISOC_SUPPORDED^I^IBIT(17)$
ERROR: code indent should never use tabs
#465: FILE: include/hw/usb/dwc2-regs.h:445:
+#define DCFG_PERFRINT_MASK^I^I(0x3 << 11)$
ERROR: code indent should never use tabs
#466: FILE: include/hw/usb/dwc2-regs.h:446:
+#define DCFG_PERFRINT_SHIFT^I^I11$
ERROR: code indent should never use tabs
#467: FILE: include/hw/usb/dwc2-regs.h:447:
+#define DCFG_PERFRINT_LIMIT^I^I0x3$
ERROR: code indent should never use tabs
#468: FILE: include/hw/usb/dwc2-regs.h:448:
+#define DCFG_PERFRINT(_x)^I^I((_x) << 11)$
ERROR: code indent should never use tabs
#469: FILE: include/hw/usb/dwc2-regs.h:449:
+#define DCFG_DEVADDR_MASK^I^I(0x7f << 4)$
ERROR: code indent should never use tabs
#470: FILE: include/hw/usb/dwc2-regs.h:450:
+#define DCFG_DEVADDR_SHIFT^I^I4$
ERROR: code indent should never use tabs
#471: FILE: include/hw/usb/dwc2-regs.h:451:
+#define DCFG_DEVADDR_LIMIT^I^I0x7f$
ERROR: code indent should never use tabs
#472: FILE: include/hw/usb/dwc2-regs.h:452:
+#define DCFG_DEVADDR(_x)^I^I((_x) << 4)$
ERROR: code indent should never use tabs
#473: FILE: include/hw/usb/dwc2-regs.h:453:
+#define DCFG_NZ_STS_OUT_HSHK^I^IBIT(2)$
ERROR: code indent should never use tabs
#474: FILE: include/hw/usb/dwc2-regs.h:454:
+#define DCFG_DEVSPD_MASK^I^I(0x3 << 0)$
ERROR: code indent should never use tabs
#475: FILE: include/hw/usb/dwc2-regs.h:455:
+#define DCFG_DEVSPD_SHIFT^I^I0$
ERROR: code indent should never use tabs
#476: FILE: include/hw/usb/dwc2-regs.h:456:
+#define DCFG_DEVSPD_HS^I^I^I0$
ERROR: code indent should never use tabs
#477: FILE: include/hw/usb/dwc2-regs.h:457:
+#define DCFG_DEVSPD_FS^I^I^I1$
ERROR: code indent should never use tabs
#478: FILE: include/hw/usb/dwc2-regs.h:458:
+#define DCFG_DEVSPD_LS^I^I^I2$
ERROR: code indent should never use tabs
#479: FILE: include/hw/usb/dwc2-regs.h:459:
+#define DCFG_DEVSPD_FS48^I^I3$
ERROR: code indent should never use tabs
#481: FILE: include/hw/usb/dwc2-regs.h:461:
+#define DCTL^I^I^I^IHSOTG_REG(0x804)$
ERROR: code indent should never use tabs
#483: FILE: include/hw/usb/dwc2-regs.h:463:
+#define DCTL_PWRONPRGDONE^I^IBIT(11)$
ERROR: code indent should never use tabs
#484: FILE: include/hw/usb/dwc2-regs.h:464:
+#define DCTL_CGOUTNAK^I^I^IBIT(10)$
ERROR: code indent should never use tabs
#485: FILE: include/hw/usb/dwc2-regs.h:465:
+#define DCTL_SGOUTNAK^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#486: FILE: include/hw/usb/dwc2-regs.h:466:
+#define DCTL_CGNPINNAK^I^I^IBIT(8)$
ERROR: code indent should never use tabs
#487: FILE: include/hw/usb/dwc2-regs.h:467:
+#define DCTL_SGNPINNAK^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#488: FILE: include/hw/usb/dwc2-regs.h:468:
+#define DCTL_TSTCTL_MASK^I^I(0x7 << 4)$
ERROR: code indent should never use tabs
#489: FILE: include/hw/usb/dwc2-regs.h:469:
+#define DCTL_TSTCTL_SHIFT^I^I4$
ERROR: code indent should never use tabs
#490: FILE: include/hw/usb/dwc2-regs.h:470:
+#define DCTL_GOUTNAKSTS^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#491: FILE: include/hw/usb/dwc2-regs.h:471:
+#define DCTL_GNPINNAKSTS^I^IBIT(2)$
ERROR: code indent should never use tabs
#492: FILE: include/hw/usb/dwc2-regs.h:472:
+#define DCTL_SFTDISCON^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#493: FILE: include/hw/usb/dwc2-regs.h:473:
+#define DCTL_RMTWKUPSIG^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#495: FILE: include/hw/usb/dwc2-regs.h:475:
+#define DSTS^I^I^I^IHSOTG_REG(0x808)$
ERROR: code indent should never use tabs
#496: FILE: include/hw/usb/dwc2-regs.h:476:
+#define DSTS_SOFFN_MASK^I^I^I(0x3fff << 8)$
ERROR: code indent should never use tabs
#497: FILE: include/hw/usb/dwc2-regs.h:477:
+#define DSTS_SOFFN_SHIFT^I^I8$
ERROR: code indent should never use tabs
#498: FILE: include/hw/usb/dwc2-regs.h:478:
+#define DSTS_SOFFN_LIMIT^I^I0x3fff$
ERROR: code indent should never use tabs
#499: FILE: include/hw/usb/dwc2-regs.h:479:
+#define DSTS_SOFFN(_x)^I^I^I((_x) << 8)$
ERROR: code indent should never use tabs
#500: FILE: include/hw/usb/dwc2-regs.h:480:
+#define DSTS_ERRATICERR^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#501: FILE: include/hw/usb/dwc2-regs.h:481:
+#define DSTS_ENUMSPD_MASK^I^I(0x3 << 1)$
ERROR: code indent should never use tabs
#502: FILE: include/hw/usb/dwc2-regs.h:482:
+#define DSTS_ENUMSPD_SHIFT^I^I1$
ERROR: code indent should never use tabs
#503: FILE: include/hw/usb/dwc2-regs.h:483:
+#define DSTS_ENUMSPD_HS^I^I^I0$
ERROR: code indent should never use tabs
#504: FILE: include/hw/usb/dwc2-regs.h:484:
+#define DSTS_ENUMSPD_FS^I^I^I1$
ERROR: code indent should never use tabs
#505: FILE: include/hw/usb/dwc2-regs.h:485:
+#define DSTS_ENUMSPD_LS^I^I^I2$
ERROR: code indent should never use tabs
#506: FILE: include/hw/usb/dwc2-regs.h:486:
+#define DSTS_ENUMSPD_FS48^I^I3$
ERROR: code indent should never use tabs
#507: FILE: include/hw/usb/dwc2-regs.h:487:
+#define DSTS_SUSPSTS^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#509: FILE: include/hw/usb/dwc2-regs.h:489:
+#define DIEPMSK^I^I^I^IHSOTG_REG(0x810)$
ERROR: code indent should never use tabs
#510: FILE: include/hw/usb/dwc2-regs.h:490:
+#define DIEPMSK_NAKMSK^I^I^IBIT(13)$
ERROR: code indent should never use tabs
#511: FILE: include/hw/usb/dwc2-regs.h:491:
+#define DIEPMSK_BNAININTRMSK^I^IBIT(9)$
ERROR: code indent should never use tabs
#512: FILE: include/hw/usb/dwc2-regs.h:492:
+#define DIEPMSK_TXFIFOUNDRNMSK^I^IBIT(8)$
ERROR: code indent should never use tabs
#513: FILE: include/hw/usb/dwc2-regs.h:493:
+#define DIEPMSK_TXFIFOEMPTY^I^IBIT(7)$
ERROR: code indent should never use tabs
#514: FILE: include/hw/usb/dwc2-regs.h:494:
+#define DIEPMSK_INEPNAKEFFMSK^I^IBIT(6)$
ERROR: code indent should never use tabs
#515: FILE: include/hw/usb/dwc2-regs.h:495:
+#define DIEPMSK_INTKNEPMISMSK^I^IBIT(5)$
ERROR: code indent should never use tabs
#516: FILE: include/hw/usb/dwc2-regs.h:496:
+#define DIEPMSK_INTKNTXFEMPMSK^I^IBIT(4)$
ERROR: code indent should never use tabs
#517: FILE: include/hw/usb/dwc2-regs.h:497:
+#define DIEPMSK_TIMEOUTMSK^I^IBIT(3)$
ERROR: code indent should never use tabs
#518: FILE: include/hw/usb/dwc2-regs.h:498:
+#define DIEPMSK_AHBERRMSK^I^IBIT(2)$
ERROR: code indent should never use tabs
#519: FILE: include/hw/usb/dwc2-regs.h:499:
+#define DIEPMSK_EPDISBLDMSK^I^IBIT(1)$
ERROR: code indent should never use tabs
#520: FILE: include/hw/usb/dwc2-regs.h:500:
+#define DIEPMSK_XFERCOMPLMSK^I^IBIT(0)$
ERROR: code indent should never use tabs
#522: FILE: include/hw/usb/dwc2-regs.h:502:
+#define DOEPMSK^I^I^I^IHSOTG_REG(0x814)$
ERROR: code indent should never use tabs
#523: FILE: include/hw/usb/dwc2-regs.h:503:
+#define DOEPMSK_BNAMSK^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#524: FILE: include/hw/usb/dwc2-regs.h:504:
+#define DOEPMSK_BACK2BACKSETUP^I^IBIT(6)$
ERROR: code indent should never use tabs
#525: FILE: include/hw/usb/dwc2-regs.h:505:
+#define DOEPMSK_STSPHSERCVDMSK^I^IBIT(5)$
ERROR: code indent should never use tabs
#526: FILE: include/hw/usb/dwc2-regs.h:506:
+#define DOEPMSK_OUTTKNEPDISMSK^I^IBIT(4)$
ERROR: code indent should never use tabs
#527: FILE: include/hw/usb/dwc2-regs.h:507:
+#define DOEPMSK_SETUPMSK^I^IBIT(3)$
ERROR: code indent should never use tabs
#528: FILE: include/hw/usb/dwc2-regs.h:508:
+#define DOEPMSK_AHBERRMSK^I^IBIT(2)$
ERROR: code indent should never use tabs
#529: FILE: include/hw/usb/dwc2-regs.h:509:
+#define DOEPMSK_EPDISBLDMSK^I^IBIT(1)$
ERROR: code indent should never use tabs
#530: FILE: include/hw/usb/dwc2-regs.h:510:
+#define DOEPMSK_XFERCOMPLMSK^I^IBIT(0)$
ERROR: code indent should never use tabs
#532: FILE: include/hw/usb/dwc2-regs.h:512:
+#define DAINT^I^I^I^IHSOTG_REG(0x818)$
ERROR: code indent should never use tabs
#533: FILE: include/hw/usb/dwc2-regs.h:513:
+#define DAINTMSK^I^I^IHSOTG_REG(0x81C)$
ERROR: code indent should never use tabs
#534: FILE: include/hw/usb/dwc2-regs.h:514:
+#define DAINT_OUTEP_SHIFT^I^I16$
ERROR: code indent should never use tabs
#535: FILE: include/hw/usb/dwc2-regs.h:515:
+#define DAINT_OUTEP(_x)^I^I^I(1 << ((_x) + 16))$
ERROR: code indent should never use tabs
#536: FILE: include/hw/usb/dwc2-regs.h:516:
+#define DAINT_INEP(_x)^I^I^I(1 << (_x))$
ERROR: code indent should never use tabs
#538: FILE: include/hw/usb/dwc2-regs.h:518:
+#define DTKNQR1^I^I^I^IHSOTG_REG(0x820)$
ERROR: code indent should never use tabs
#539: FILE: include/hw/usb/dwc2-regs.h:519:
+#define DTKNQR2^I^I^I^IHSOTG_REG(0x824)$
ERROR: code indent should never use tabs
#540: FILE: include/hw/usb/dwc2-regs.h:520:
+#define DTKNQR3^I^I^I^IHSOTG_REG(0x830)$
ERROR: code indent should never use tabs
#541: FILE: include/hw/usb/dwc2-regs.h:521:
+#define DTKNQR4^I^I^I^IHSOTG_REG(0x834)$
ERROR: code indent should never use tabs
#542: FILE: include/hw/usb/dwc2-regs.h:522:
+#define DIEPEMPMSK^I^I^IHSOTG_REG(0x834)$
ERROR: code indent should never use tabs
#544: FILE: include/hw/usb/dwc2-regs.h:524:
+#define DVBUSDIS^I^I^IHSOTG_REG(0x828)$
ERROR: code indent should never use tabs
#545: FILE: include/hw/usb/dwc2-regs.h:525:
+#define DVBUSPULSE^I^I^IHSOTG_REG(0x82C)$
ERROR: code indent should never use tabs
#547: FILE: include/hw/usb/dwc2-regs.h:527:
+#define DIEPCTL0^I^I^IHSOTG_REG(0x900)$
ERROR: code indent should never use tabs
#548: FILE: include/hw/usb/dwc2-regs.h:528:
+#define DIEPCTL(_a)^I^I^IHSOTG_REG(0x900 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#550: FILE: include/hw/usb/dwc2-regs.h:530:
+#define DOEPCTL0^I^I^IHSOTG_REG(0xB00)$
ERROR: code indent should never use tabs
#551: FILE: include/hw/usb/dwc2-regs.h:531:
+#define DOEPCTL(_a)^I^I^IHSOTG_REG(0xB00 + ((_a) * 0x20))$
WARNING: Block comments use a leading /* on a separate line
#553: FILE: include/hw/usb/dwc2-regs.h:533:
+/* EP0 specialness:
ERROR: code indent should never use tabs
#558: FILE: include/hw/usb/dwc2-regs.h:538:
+#define D0EPCTL_MPS_MASK^I^I(0x3 << 0)$
ERROR: code indent should never use tabs
#559: FILE: include/hw/usb/dwc2-regs.h:539:
+#define D0EPCTL_MPS_SHIFT^I^I0$
ERROR: code indent should never use tabs
#560: FILE: include/hw/usb/dwc2-regs.h:540:
+#define D0EPCTL_MPS_64^I^I^I0$
ERROR: code indent should never use tabs
#561: FILE: include/hw/usb/dwc2-regs.h:541:
+#define D0EPCTL_MPS_32^I^I^I1$
ERROR: code indent should never use tabs
#562: FILE: include/hw/usb/dwc2-regs.h:542:
+#define D0EPCTL_MPS_16^I^I^I2$
ERROR: code indent should never use tabs
#563: FILE: include/hw/usb/dwc2-regs.h:543:
+#define D0EPCTL_MPS_8^I^I^I3$
ERROR: code indent should never use tabs
#565: FILE: include/hw/usb/dwc2-regs.h:545:
+#define DXEPCTL_EPENA^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#566: FILE: include/hw/usb/dwc2-regs.h:546:
+#define DXEPCTL_EPDIS^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#567: FILE: include/hw/usb/dwc2-regs.h:547:
+#define DXEPCTL_SETD1PID^I^IBIT(29)$
ERROR: code indent should never use tabs
#568: FILE: include/hw/usb/dwc2-regs.h:548:
+#define DXEPCTL_SETODDFR^I^IBIT(29)$
ERROR: code indent should never use tabs
#569: FILE: include/hw/usb/dwc2-regs.h:549:
+#define DXEPCTL_SETD0PID^I^IBIT(28)$
ERROR: code indent should never use tabs
#570: FILE: include/hw/usb/dwc2-regs.h:550:
+#define DXEPCTL_SETEVENFR^I^IBIT(28)$
ERROR: code indent should never use tabs
#571: FILE: include/hw/usb/dwc2-regs.h:551:
+#define DXEPCTL_SNAK^I^I^IBIT(27)$
ERROR: code indent should never use tabs
#572: FILE: include/hw/usb/dwc2-regs.h:552:
+#define DXEPCTL_CNAK^I^I^IBIT(26)$
ERROR: code indent should never use tabs
#573: FILE: include/hw/usb/dwc2-regs.h:553:
+#define DXEPCTL_TXFNUM_MASK^I^I(0xf << 22)$
ERROR: code indent should never use tabs
#574: FILE: include/hw/usb/dwc2-regs.h:554:
+#define DXEPCTL_TXFNUM_SHIFT^I^I22$
ERROR: code indent should never use tabs
#575: FILE: include/hw/usb/dwc2-regs.h:555:
+#define DXEPCTL_TXFNUM_LIMIT^I^I0xf$
ERROR: code indent should never use tabs
#576: FILE: include/hw/usb/dwc2-regs.h:556:
+#define DXEPCTL_TXFNUM(_x)^I^I((_x) << 22)$
ERROR: code indent should never use tabs
#577: FILE: include/hw/usb/dwc2-regs.h:557:
+#define DXEPCTL_STALL^I^I^IBIT(21)$
ERROR: code indent should never use tabs
#578: FILE: include/hw/usb/dwc2-regs.h:558:
+#define DXEPCTL_SNP^I^I^IBIT(20)$
ERROR: code indent should never use tabs
#579: FILE: include/hw/usb/dwc2-regs.h:559:
+#define DXEPCTL_EPTYPE_MASK^I^I(0x3 << 18)$
ERROR: code indent should never use tabs
#580: FILE: include/hw/usb/dwc2-regs.h:560:
+#define DXEPCTL_EPTYPE_CONTROL^I^I(0x0 << 18)$
ERROR: code indent should never use tabs
#581: FILE: include/hw/usb/dwc2-regs.h:561:
+#define DXEPCTL_EPTYPE_ISO^I^I(0x1 << 18)$
ERROR: code indent should never use tabs
#582: FILE: include/hw/usb/dwc2-regs.h:562:
+#define DXEPCTL_EPTYPE_BULK^I^I(0x2 << 18)$
ERROR: code indent should never use tabs
#583: FILE: include/hw/usb/dwc2-regs.h:563:
+#define DXEPCTL_EPTYPE_INTERRUPT^I(0x3 << 18)$
ERROR: code indent should never use tabs
#585: FILE: include/hw/usb/dwc2-regs.h:565:
+#define DXEPCTL_NAKSTS^I^I^IBIT(17)$
ERROR: code indent should never use tabs
#586: FILE: include/hw/usb/dwc2-regs.h:566:
+#define DXEPCTL_DPID^I^I^IBIT(16)$
ERROR: code indent should never use tabs
#587: FILE: include/hw/usb/dwc2-regs.h:567:
+#define DXEPCTL_EOFRNUM^I^I^IBIT(16)$
ERROR: code indent should never use tabs
#588: FILE: include/hw/usb/dwc2-regs.h:568:
+#define DXEPCTL_USBACTEP^I^IBIT(15)$
ERROR: code indent should never use tabs
#589: FILE: include/hw/usb/dwc2-regs.h:569:
+#define DXEPCTL_NEXTEP_MASK^I^I(0xf << 11)$
ERROR: code indent should never use tabs
#590: FILE: include/hw/usb/dwc2-regs.h:570:
+#define DXEPCTL_NEXTEP_SHIFT^I^I11$
ERROR: code indent should never use tabs
#591: FILE: include/hw/usb/dwc2-regs.h:571:
+#define DXEPCTL_NEXTEP_LIMIT^I^I0xf$
ERROR: code indent should never use tabs
#592: FILE: include/hw/usb/dwc2-regs.h:572:
+#define DXEPCTL_NEXTEP(_x)^I^I((_x) << 11)$
ERROR: code indent should never use tabs
#593: FILE: include/hw/usb/dwc2-regs.h:573:
+#define DXEPCTL_MPS_MASK^I^I(0x7ff << 0)$
ERROR: code indent should never use tabs
#594: FILE: include/hw/usb/dwc2-regs.h:574:
+#define DXEPCTL_MPS_SHIFT^I^I0$
ERROR: code indent should never use tabs
#595: FILE: include/hw/usb/dwc2-regs.h:575:
+#define DXEPCTL_MPS_LIMIT^I^I0x7ff$
ERROR: code indent should never use tabs
#596: FILE: include/hw/usb/dwc2-regs.h:576:
+#define DXEPCTL_MPS(_x)^I^I^I((_x) << 0)$
ERROR: code indent should never use tabs
#598: FILE: include/hw/usb/dwc2-regs.h:578:
+#define DIEPINT(_a)^I^I^IHSOTG_REG(0x908 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#599: FILE: include/hw/usb/dwc2-regs.h:579:
+#define DOEPINT(_a)^I^I^IHSOTG_REG(0xB08 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#600: FILE: include/hw/usb/dwc2-regs.h:580:
+#define DXEPINT_SETUP_RCVD^I^IBIT(15)$
ERROR: code indent should never use tabs
#601: FILE: include/hw/usb/dwc2-regs.h:581:
+#define DXEPINT_NYETINTRPT^I^IBIT(14)$
ERROR: code indent should never use tabs
#602: FILE: include/hw/usb/dwc2-regs.h:582:
+#define DXEPINT_NAKINTRPT^I^IBIT(13)$
ERROR: code indent should never use tabs
#603: FILE: include/hw/usb/dwc2-regs.h:583:
+#define DXEPINT_BBLEERRINTRPT^I^IBIT(12)$
ERROR: code indent should never use tabs
#604: FILE: include/hw/usb/dwc2-regs.h:584:
+#define DXEPINT_PKTDRPSTS^I^IBIT(11)$
ERROR: code indent should never use tabs
#605: FILE: include/hw/usb/dwc2-regs.h:585:
+#define DXEPINT_BNAINTR^I^I^IBIT(9)$
ERROR: code indent should never use tabs
#606: FILE: include/hw/usb/dwc2-regs.h:586:
+#define DXEPINT_TXFIFOUNDRN^I^IBIT(8)$
ERROR: code indent should never use tabs
#607: FILE: include/hw/usb/dwc2-regs.h:587:
+#define DXEPINT_OUTPKTERR^I^IBIT(8)$
ERROR: code indent should never use tabs
#608: FILE: include/hw/usb/dwc2-regs.h:588:
+#define DXEPINT_TXFEMP^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#609: FILE: include/hw/usb/dwc2-regs.h:589:
+#define DXEPINT_INEPNAKEFF^I^IBIT(6)$
ERROR: code indent should never use tabs
#610: FILE: include/hw/usb/dwc2-regs.h:590:
+#define DXEPINT_BACK2BACKSETUP^I^IBIT(6)$
ERROR: code indent should never use tabs
#611: FILE: include/hw/usb/dwc2-regs.h:591:
+#define DXEPINT_INTKNEPMIS^I^IBIT(5)$
ERROR: code indent should never use tabs
#612: FILE: include/hw/usb/dwc2-regs.h:592:
+#define DXEPINT_STSPHSERCVD^I^IBIT(5)$
ERROR: code indent should never use tabs
#613: FILE: include/hw/usb/dwc2-regs.h:593:
+#define DXEPINT_INTKNTXFEMP^I^IBIT(4)$
ERROR: code indent should never use tabs
#614: FILE: include/hw/usb/dwc2-regs.h:594:
+#define DXEPINT_OUTTKNEPDIS^I^IBIT(4)$
ERROR: code indent should never use tabs
#615: FILE: include/hw/usb/dwc2-regs.h:595:
+#define DXEPINT_TIMEOUT^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#616: FILE: include/hw/usb/dwc2-regs.h:596:
+#define DXEPINT_SETUP^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#617: FILE: include/hw/usb/dwc2-regs.h:597:
+#define DXEPINT_AHBERR^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#618: FILE: include/hw/usb/dwc2-regs.h:598:
+#define DXEPINT_EPDISBLD^I^IBIT(1)$
ERROR: code indent should never use tabs
#619: FILE: include/hw/usb/dwc2-regs.h:599:
+#define DXEPINT_XFERCOMPL^I^IBIT(0)$
ERROR: code indent should never use tabs
#621: FILE: include/hw/usb/dwc2-regs.h:601:
+#define DIEPTSIZ0^I^I^IHSOTG_REG(0x910)$
ERROR: code indent should never use tabs
#622: FILE: include/hw/usb/dwc2-regs.h:602:
+#define DIEPTSIZ0_PKTCNT_MASK^I^I(0x3 << 19)$
ERROR: code indent should never use tabs
#623: FILE: include/hw/usb/dwc2-regs.h:603:
+#define DIEPTSIZ0_PKTCNT_SHIFT^I^I19$
ERROR: code indent should never use tabs
#624: FILE: include/hw/usb/dwc2-regs.h:604:
+#define DIEPTSIZ0_PKTCNT_LIMIT^I^I0x3$
ERROR: code indent should never use tabs
#625: FILE: include/hw/usb/dwc2-regs.h:605:
+#define DIEPTSIZ0_PKTCNT(_x)^I^I((_x) << 19)$
ERROR: code indent should never use tabs
#626: FILE: include/hw/usb/dwc2-regs.h:606:
+#define DIEPTSIZ0_XFERSIZE_MASK^I^I(0x7f << 0)$
ERROR: code indent should never use tabs
#627: FILE: include/hw/usb/dwc2-regs.h:607:
+#define DIEPTSIZ0_XFERSIZE_SHIFT^I0$
ERROR: code indent should never use tabs
#628: FILE: include/hw/usb/dwc2-regs.h:608:
+#define DIEPTSIZ0_XFERSIZE_LIMIT^I0x7f$
ERROR: code indent should never use tabs
#629: FILE: include/hw/usb/dwc2-regs.h:609:
+#define DIEPTSIZ0_XFERSIZE(_x)^I^I((_x) << 0)$
ERROR: code indent should never use tabs
#631: FILE: include/hw/usb/dwc2-regs.h:611:
+#define DOEPTSIZ0^I^I^IHSOTG_REG(0xB10)$
ERROR: code indent should never use tabs
#632: FILE: include/hw/usb/dwc2-regs.h:612:
+#define DOEPTSIZ0_SUPCNT_MASK^I^I(0x3 << 29)$
ERROR: code indent should never use tabs
#633: FILE: include/hw/usb/dwc2-regs.h:613:
+#define DOEPTSIZ0_SUPCNT_SHIFT^I^I29$
ERROR: code indent should never use tabs
#634: FILE: include/hw/usb/dwc2-regs.h:614:
+#define DOEPTSIZ0_SUPCNT_LIMIT^I^I0x3$
ERROR: code indent should never use tabs
#635: FILE: include/hw/usb/dwc2-regs.h:615:
+#define DOEPTSIZ0_SUPCNT(_x)^I^I((_x) << 29)$
ERROR: code indent should never use tabs
#636: FILE: include/hw/usb/dwc2-regs.h:616:
+#define DOEPTSIZ0_PKTCNT^I^IBIT(19)$
ERROR: code indent should never use tabs
#637: FILE: include/hw/usb/dwc2-regs.h:617:
+#define DOEPTSIZ0_XFERSIZE_MASK^I^I(0x7f << 0)$
ERROR: code indent should never use tabs
#638: FILE: include/hw/usb/dwc2-regs.h:618:
+#define DOEPTSIZ0_XFERSIZE_SHIFT^I0$
ERROR: code indent should never use tabs
#640: FILE: include/hw/usb/dwc2-regs.h:620:
+#define DIEPTSIZ(_a)^I^I^IHSOTG_REG(0x910 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#641: FILE: include/hw/usb/dwc2-regs.h:621:
+#define DOEPTSIZ(_a)^I^I^IHSOTG_REG(0xB10 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#642: FILE: include/hw/usb/dwc2-regs.h:622:
+#define DXEPTSIZ_MC_MASK^I^I(0x3 << 29)$
ERROR: code indent should never use tabs
#643: FILE: include/hw/usb/dwc2-regs.h:623:
+#define DXEPTSIZ_MC_SHIFT^I^I29$
ERROR: code indent should never use tabs
#644: FILE: include/hw/usb/dwc2-regs.h:624:
+#define DXEPTSIZ_MC_LIMIT^I^I0x3$
ERROR: code indent should never use tabs
#645: FILE: include/hw/usb/dwc2-regs.h:625:
+#define DXEPTSIZ_MC(_x)^I^I^I((_x) << 29)$
ERROR: code indent should never use tabs
#646: FILE: include/hw/usb/dwc2-regs.h:626:
+#define DXEPTSIZ_PKTCNT_MASK^I^I(0x3ff << 19)$
ERROR: code indent should never use tabs
#647: FILE: include/hw/usb/dwc2-regs.h:627:
+#define DXEPTSIZ_PKTCNT_SHIFT^I^I19$
ERROR: code indent should never use tabs
#648: FILE: include/hw/usb/dwc2-regs.h:628:
+#define DXEPTSIZ_PKTCNT_LIMIT^I^I0x3ff$
ERROR: code indent should never use tabs
#649: FILE: include/hw/usb/dwc2-regs.h:629:
+#define DXEPTSIZ_PKTCNT_GET(_v)^I^I(((_v) >> 19) & 0x3ff)$
ERROR: code indent should never use tabs
#650: FILE: include/hw/usb/dwc2-regs.h:630:
+#define DXEPTSIZ_PKTCNT(_x)^I^I((_x) << 19)$
ERROR: code indent should never use tabs
#651: FILE: include/hw/usb/dwc2-regs.h:631:
+#define DXEPTSIZ_XFERSIZE_MASK^I^I(0x7ffff << 0)$
ERROR: code indent should never use tabs
#652: FILE: include/hw/usb/dwc2-regs.h:632:
+#define DXEPTSIZ_XFERSIZE_SHIFT^I^I0$
ERROR: code indent should never use tabs
#653: FILE: include/hw/usb/dwc2-regs.h:633:
+#define DXEPTSIZ_XFERSIZE_LIMIT^I^I0x7ffff$
ERROR: code indent should never use tabs
#654: FILE: include/hw/usb/dwc2-regs.h:634:
+#define DXEPTSIZ_XFERSIZE_GET(_v)^I(((_v) >> 0) & 0x7ffff)$
ERROR: code indent should never use tabs
#655: FILE: include/hw/usb/dwc2-regs.h:635:
+#define DXEPTSIZ_XFERSIZE(_x)^I^I((_x) << 0)$
ERROR: code indent should never use tabs
#657: FILE: include/hw/usb/dwc2-regs.h:637:
+#define DIEPDMA(_a)^I^I^IHSOTG_REG(0x914 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#658: FILE: include/hw/usb/dwc2-regs.h:638:
+#define DOEPDMA(_a)^I^I^IHSOTG_REG(0xB14 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#660: FILE: include/hw/usb/dwc2-regs.h:640:
+#define DTXFSTS(_a)^I^I^IHSOTG_REG(0x918 + ((_a) * 0x20))$
ERROR: code indent should never use tabs
#662: FILE: include/hw/usb/dwc2-regs.h:642:
+#define PCGCTL^I^I^I^IHSOTG_REG(0x0e00)$
ERROR: code indent should never use tabs
#663: FILE: include/hw/usb/dwc2-regs.h:643:
+#define PCGCTL_IF_DEV_MODE^I^IBIT(31)$
ERROR: code indent should never use tabs
#664: FILE: include/hw/usb/dwc2-regs.h:644:
+#define PCGCTL_P2HD_PRT_SPD_MASK^I(0x3 << 29)$
ERROR: code indent should never use tabs
#665: FILE: include/hw/usb/dwc2-regs.h:645:
+#define PCGCTL_P2HD_PRT_SPD_SHIFT^I29$
ERROR: code indent should never use tabs
#666: FILE: include/hw/usb/dwc2-regs.h:646:
+#define PCGCTL_P2HD_DEV_ENUM_SPD_MASK^I(0x3 << 27)$
ERROR: code indent should never use tabs
#667: FILE: include/hw/usb/dwc2-regs.h:647:
+#define PCGCTL_P2HD_DEV_ENUM_SPD_SHIFT^I27$
ERROR: code indent should never use tabs
#668: FILE: include/hw/usb/dwc2-regs.h:648:
+#define PCGCTL_MAC_DEV_ADDR_MASK^I(0x7f << 20)$
ERROR: code indent should never use tabs
#669: FILE: include/hw/usb/dwc2-regs.h:649:
+#define PCGCTL_MAC_DEV_ADDR_SHIFT^I20$
ERROR: code indent should never use tabs
#670: FILE: include/hw/usb/dwc2-regs.h:650:
+#define PCGCTL_MAX_TERMSEL^I^IBIT(19)$
ERROR: code indent should never use tabs
#671: FILE: include/hw/usb/dwc2-regs.h:651:
+#define PCGCTL_MAX_XCVRSELECT_MASK^I(0x3 << 17)$
ERROR: code indent should never use tabs
#672: FILE: include/hw/usb/dwc2-regs.h:652:
+#define PCGCTL_MAX_XCVRSELECT_SHIFT^I17$
ERROR: code indent should never use tabs
#673: FILE: include/hw/usb/dwc2-regs.h:653:
+#define PCGCTL_PORT_POWER^I^IBIT(16)$
ERROR: code indent should never use tabs
#674: FILE: include/hw/usb/dwc2-regs.h:654:
+#define PCGCTL_PRT_CLK_SEL_MASK^I^I(0x3 << 14)$
ERROR: code indent should never use tabs
#675: FILE: include/hw/usb/dwc2-regs.h:655:
+#define PCGCTL_PRT_CLK_SEL_SHIFT^I14$
ERROR: code indent should never use tabs
#676: FILE: include/hw/usb/dwc2-regs.h:656:
+#define PCGCTL_ESS_REG_RESTORED^I^IBIT(13)$
ERROR: code indent should never use tabs
#677: FILE: include/hw/usb/dwc2-regs.h:657:
+#define PCGCTL_EXTND_HIBER_SWITCH^IBIT(12)$
ERROR: code indent should never use tabs
#678: FILE: include/hw/usb/dwc2-regs.h:658:
+#define PCGCTL_EXTND_HIBER_PWRCLMP^IBIT(11)$
ERROR: code indent should never use tabs
#679: FILE: include/hw/usb/dwc2-regs.h:659:
+#define PCGCTL_ENBL_EXTND_HIBER^I^IBIT(10)$
ERROR: code indent should never use tabs
#680: FILE: include/hw/usb/dwc2-regs.h:660:
+#define PCGCTL_RESTOREMODE^I^IBIT(9)$
ERROR: code indent should never use tabs
#681: FILE: include/hw/usb/dwc2-regs.h:661:
+#define PCGCTL_RESETAFTSUSP^I^IBIT(8)$
ERROR: code indent should never use tabs
#682: FILE: include/hw/usb/dwc2-regs.h:662:
+#define PCGCTL_DEEP_SLEEP^I^IBIT(7)$
ERROR: code indent should never use tabs
#683: FILE: include/hw/usb/dwc2-regs.h:663:
+#define PCGCTL_PHY_IN_SLEEP^I^IBIT(6)$
ERROR: code indent should never use tabs
#684: FILE: include/hw/usb/dwc2-regs.h:664:
+#define PCGCTL_ENBL_SLEEP_GATING^IBIT(5)$
ERROR: code indent should never use tabs
#685: FILE: include/hw/usb/dwc2-regs.h:665:
+#define PCGCTL_RSTPDWNMODULE^I^IBIT(3)$
ERROR: code indent should never use tabs
#686: FILE: include/hw/usb/dwc2-regs.h:666:
+#define PCGCTL_PWRCLMP^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#687: FILE: include/hw/usb/dwc2-regs.h:667:
+#define PCGCTL_GATEHCLK^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#688: FILE: include/hw/usb/dwc2-regs.h:668:
+#define PCGCTL_STOPPCLK^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#694: FILE: include/hw/usb/dwc2-regs.h:674:
+#define EPFIFO(_a)^I^I^IHSOTG_REG(0x1000 + ((_a) * 0x1000))$
ERROR: code indent should never use tabs
#698: FILE: include/hw/usb/dwc2-regs.h:678:
+#define HCFG^I^I^I^IHSOTG_REG(0x0400)$
ERROR: code indent should never use tabs
#699: FILE: include/hw/usb/dwc2-regs.h:679:
+#define HCFG_MODECHTIMEN^I^IBIT(31)$
ERROR: code indent should never use tabs
#700: FILE: include/hw/usb/dwc2-regs.h:680:
+#define HCFG_PERSCHEDENA^I^IBIT(26)$
ERROR: code indent should never use tabs
#701: FILE: include/hw/usb/dwc2-regs.h:681:
+#define HCFG_FRLISTEN_MASK^I^I(0x3 << 24)$
ERROR: code indent should never use tabs
#702: FILE: include/hw/usb/dwc2-regs.h:682:
+#define HCFG_FRLISTEN_SHIFT^I^I24$
ERROR: code indent should never use tabs
#703: FILE: include/hw/usb/dwc2-regs.h:683:
+#define HCFG_FRLISTEN_8^I^I^I^I(0 << 24)$
ERROR: code indent should never use tabs
#704: FILE: include/hw/usb/dwc2-regs.h:684:
+#define FRLISTEN_8_SIZE^I^I^I^I8$
ERROR: code indent should never use tabs
#705: FILE: include/hw/usb/dwc2-regs.h:685:
+#define HCFG_FRLISTEN_16^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#706: FILE: include/hw/usb/dwc2-regs.h:686:
+#define FRLISTEN_16_SIZE^I^I^I16$
ERROR: code indent should never use tabs
#707: FILE: include/hw/usb/dwc2-regs.h:687:
+#define HCFG_FRLISTEN_32^I^I^I(2 << 24)$
ERROR: code indent should never use tabs
#708: FILE: include/hw/usb/dwc2-regs.h:688:
+#define FRLISTEN_32_SIZE^I^I^I32$
ERROR: code indent should never use tabs
#709: FILE: include/hw/usb/dwc2-regs.h:689:
+#define HCFG_FRLISTEN_64^I^I^I(3 << 24)$
ERROR: code indent should never use tabs
#710: FILE: include/hw/usb/dwc2-regs.h:690:
+#define FRLISTEN_64_SIZE^I^I^I64$
ERROR: code indent should never use tabs
#711: FILE: include/hw/usb/dwc2-regs.h:691:
+#define HCFG_DESCDMA^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#712: FILE: include/hw/usb/dwc2-regs.h:692:
+#define HCFG_RESVALID_MASK^I^I(0xff << 8)$
ERROR: code indent should never use tabs
#713: FILE: include/hw/usb/dwc2-regs.h:693:
+#define HCFG_RESVALID_SHIFT^I^I8$
ERROR: code indent should never use tabs
#714: FILE: include/hw/usb/dwc2-regs.h:694:
+#define HCFG_ENA32KHZ^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#715: FILE: include/hw/usb/dwc2-regs.h:695:
+#define HCFG_FSLSSUPP^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#716: FILE: include/hw/usb/dwc2-regs.h:696:
+#define HCFG_FSLSPCLKSEL_MASK^I^I(0x3 << 0)$
ERROR: code indent should never use tabs
#717: FILE: include/hw/usb/dwc2-regs.h:697:
+#define HCFG_FSLSPCLKSEL_SHIFT^I^I0$
ERROR: code indent should never use tabs
#718: FILE: include/hw/usb/dwc2-regs.h:698:
+#define HCFG_FSLSPCLKSEL_30_60_MHZ^I0$
ERROR: code indent should never use tabs
#719: FILE: include/hw/usb/dwc2-regs.h:699:
+#define HCFG_FSLSPCLKSEL_48_MHZ^I^I1$
ERROR: code indent should never use tabs
#720: FILE: include/hw/usb/dwc2-regs.h:700:
+#define HCFG_FSLSPCLKSEL_6_MHZ^I^I2$
ERROR: code indent should never use tabs
#722: FILE: include/hw/usb/dwc2-regs.h:702:
+#define HFIR^I^I^I^IHSOTG_REG(0x0404)$
ERROR: code indent should never use tabs
#723: FILE: include/hw/usb/dwc2-regs.h:703:
+#define HFIR_FRINT_MASK^I^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#724: FILE: include/hw/usb/dwc2-regs.h:704:
+#define HFIR_FRINT_SHIFT^I^I0$
ERROR: code indent should never use tabs
#725: FILE: include/hw/usb/dwc2-regs.h:705:
+#define HFIR_RLDCTRL^I^I^IBIT(16)$
ERROR: code indent should never use tabs
#727: FILE: include/hw/usb/dwc2-regs.h:707:
+#define HFNUM^I^I^I^IHSOTG_REG(0x0408)$
ERROR: code indent should never use tabs
#728: FILE: include/hw/usb/dwc2-regs.h:708:
+#define HFNUM_FRREM_MASK^I^I(0xffff << 16)$
ERROR: code indent should never use tabs
#729: FILE: include/hw/usb/dwc2-regs.h:709:
+#define HFNUM_FRREM_SHIFT^I^I16$
ERROR: code indent should never use tabs
#730: FILE: include/hw/usb/dwc2-regs.h:710:
+#define HFNUM_FRNUM_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#731: FILE: include/hw/usb/dwc2-regs.h:711:
+#define HFNUM_FRNUM_SHIFT^I^I0$
ERROR: code indent should never use tabs
#732: FILE: include/hw/usb/dwc2-regs.h:712:
+#define HFNUM_MAX_FRNUM^I^I^I0x3fff$
ERROR: code indent should never use tabs
#734: FILE: include/hw/usb/dwc2-regs.h:714:
+#define HPTXSTS^I^I^I^IHSOTG_REG(0x0410)$
ERROR: code indent should never use tabs
#735: FILE: include/hw/usb/dwc2-regs.h:715:
+#define TXSTS_QTOP_ODD^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#736: FILE: include/hw/usb/dwc2-regs.h:716:
+#define TXSTS_QTOP_CHNEP_MASK^I^I(0xf << 27)$
ERROR: code indent should never use tabs
#737: FILE: include/hw/usb/dwc2-regs.h:717:
+#define TXSTS_QTOP_CHNEP_SHIFT^I^I27$
ERROR: code indent should never use tabs
#738: FILE: include/hw/usb/dwc2-regs.h:718:
+#define TXSTS_QTOP_TOKEN_MASK^I^I(0x3 << 25)$
ERROR: code indent should never use tabs
#739: FILE: include/hw/usb/dwc2-regs.h:719:
+#define TXSTS_QTOP_TOKEN_SHIFT^I^I25$
ERROR: code indent should never use tabs
#740: FILE: include/hw/usb/dwc2-regs.h:720:
+#define TXSTS_QTOP_TERMINATE^I^IBIT(24)$
ERROR: code indent should never use tabs
#741: FILE: include/hw/usb/dwc2-regs.h:721:
+#define TXSTS_QSPCAVAIL_MASK^I^I(0xff << 16)$
ERROR: code indent should never use tabs
#742: FILE: include/hw/usb/dwc2-regs.h:722:
+#define TXSTS_QSPCAVAIL_SHIFT^I^I16$
ERROR: code indent should never use tabs
#743: FILE: include/hw/usb/dwc2-regs.h:723:
+#define TXSTS_FSPCAVAIL_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#744: FILE: include/hw/usb/dwc2-regs.h:724:
+#define TXSTS_FSPCAVAIL_SHIFT^I^I0$
ERROR: code indent should never use tabs
#746: FILE: include/hw/usb/dwc2-regs.h:726:
+#define HAINT^I^I^I^IHSOTG_REG(0x0414)$
ERROR: code indent should never use tabs
#747: FILE: include/hw/usb/dwc2-regs.h:727:
+#define HAINTMSK^I^I^IHSOTG_REG(0x0418)$
ERROR: code indent should never use tabs
#748: FILE: include/hw/usb/dwc2-regs.h:728:
+#define HFLBADDR^I^I^IHSOTG_REG(0x041c)$
ERROR: code indent should never use tabs
#750: FILE: include/hw/usb/dwc2-regs.h:730:
+#define HPRT0^I^I^I^IHSOTG_REG(0x0440)$
ERROR: code indent should never use tabs
#751: FILE: include/hw/usb/dwc2-regs.h:731:
+#define HPRT0_SPD_MASK^I^I^I(0x3 << 17)$
ERROR: code indent should never use tabs
#752: FILE: include/hw/usb/dwc2-regs.h:732:
+#define HPRT0_SPD_SHIFT^I^I^I17$
ERROR: code indent should never use tabs
#753: FILE: include/hw/usb/dwc2-regs.h:733:
+#define HPRT0_SPD_HIGH_SPEED^I^I0$
ERROR: code indent should never use tabs
#754: FILE: include/hw/usb/dwc2-regs.h:734:
+#define HPRT0_SPD_FULL_SPEED^I^I1$
ERROR: code indent should never use tabs
#755: FILE: include/hw/usb/dwc2-regs.h:735:
+#define HPRT0_SPD_LOW_SPEED^I^I2$
ERROR: code indent should never use tabs
#756: FILE: include/hw/usb/dwc2-regs.h:736:
+#define HPRT0_TSTCTL_MASK^I^I(0xf << 13)$
ERROR: code indent should never use tabs
#757: FILE: include/hw/usb/dwc2-regs.h:737:
+#define HPRT0_TSTCTL_SHIFT^I^I13$
ERROR: code indent should never use tabs
#758: FILE: include/hw/usb/dwc2-regs.h:738:
+#define HPRT0_PWR^I^I^IBIT(12)$
ERROR: code indent should never use tabs
#759: FILE: include/hw/usb/dwc2-regs.h:739:
+#define HPRT0_LNSTS_MASK^I^I(0x3 << 10)$
ERROR: code indent should never use tabs
#760: FILE: include/hw/usb/dwc2-regs.h:740:
+#define HPRT0_LNSTS_SHIFT^I^I10$
ERROR: code indent should never use tabs
#761: FILE: include/hw/usb/dwc2-regs.h:741:
+#define HPRT0_RST^I^I^IBIT(8)$
ERROR: code indent should never use tabs
#762: FILE: include/hw/usb/dwc2-regs.h:742:
+#define HPRT0_SUSP^I^I^IBIT(7)$
ERROR: code indent should never use tabs
#763: FILE: include/hw/usb/dwc2-regs.h:743:
+#define HPRT0_RES^I^I^IBIT(6)$
ERROR: code indent should never use tabs
#764: FILE: include/hw/usb/dwc2-regs.h:744:
+#define HPRT0_OVRCURRCHG^I^IBIT(5)$
ERROR: code indent should never use tabs
#765: FILE: include/hw/usb/dwc2-regs.h:745:
+#define HPRT0_OVRCURRACT^I^IBIT(4)$
ERROR: code indent should never use tabs
#766: FILE: include/hw/usb/dwc2-regs.h:746:
+#define HPRT0_ENACHG^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#767: FILE: include/hw/usb/dwc2-regs.h:747:
+#define HPRT0_ENA^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#768: FILE: include/hw/usb/dwc2-regs.h:748:
+#define HPRT0_CONNDET^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#769: FILE: include/hw/usb/dwc2-regs.h:749:
+#define HPRT0_CONNSTS^I^I^IBIT(0)$
ERROR: code indent should never use tabs
#771: FILE: include/hw/usb/dwc2-regs.h:751:
+#define HCCHAR(_ch)^I^I^IHSOTG_REG(0x0500 + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#772: FILE: include/hw/usb/dwc2-regs.h:752:
+#define HCCHAR_CHENA^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#773: FILE: include/hw/usb/dwc2-regs.h:753:
+#define HCCHAR_CHDIS^I^I^IBIT(30)$
ERROR: code indent should never use tabs
#774: FILE: include/hw/usb/dwc2-regs.h:754:
+#define HCCHAR_ODDFRM^I^I^IBIT(29)$
ERROR: code indent should never use tabs
#775: FILE: include/hw/usb/dwc2-regs.h:755:
+#define HCCHAR_DEVADDR_MASK^I^I(0x7f << 22)$
ERROR: code indent should never use tabs
#776: FILE: include/hw/usb/dwc2-regs.h:756:
+#define HCCHAR_DEVADDR_SHIFT^I^I22$
ERROR: code indent should never use tabs
#777: FILE: include/hw/usb/dwc2-regs.h:757:
+#define HCCHAR_MULTICNT_MASK^I^I(0x3 << 20)$
ERROR: code indent should never use tabs
#778: FILE: include/hw/usb/dwc2-regs.h:758:
+#define HCCHAR_MULTICNT_SHIFT^I^I20$
ERROR: code indent should never use tabs
#779: FILE: include/hw/usb/dwc2-regs.h:759:
+#define HCCHAR_EPTYPE_MASK^I^I(0x3 << 18)$
ERROR: code indent should never use tabs
#780: FILE: include/hw/usb/dwc2-regs.h:760:
+#define HCCHAR_EPTYPE_SHIFT^I^I18$
ERROR: code indent should never use tabs
#781: FILE: include/hw/usb/dwc2-regs.h:761:
+#define HCCHAR_LSPDDEV^I^I^IBIT(17)$
ERROR: code indent should never use tabs
#782: FILE: include/hw/usb/dwc2-regs.h:762:
+#define HCCHAR_EPDIR^I^I^IBIT(15)$
ERROR: code indent should never use tabs
#783: FILE: include/hw/usb/dwc2-regs.h:763:
+#define HCCHAR_EPNUM_MASK^I^I(0xf << 11)$
ERROR: code indent should never use tabs
#784: FILE: include/hw/usb/dwc2-regs.h:764:
+#define HCCHAR_EPNUM_SHIFT^I^I11$
ERROR: code indent should never use tabs
#785: FILE: include/hw/usb/dwc2-regs.h:765:
+#define HCCHAR_MPS_MASK^I^I^I(0x7ff << 0)$
ERROR: code indent should never use tabs
#786: FILE: include/hw/usb/dwc2-regs.h:766:
+#define HCCHAR_MPS_SHIFT^I^I0$
ERROR: code indent should never use tabs
#788: FILE: include/hw/usb/dwc2-regs.h:768:
+#define HCSPLT(_ch)^I^I^IHSOTG_REG(0x0504 + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#789: FILE: include/hw/usb/dwc2-regs.h:769:
+#define HCSPLT_SPLTENA^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#790: FILE: include/hw/usb/dwc2-regs.h:770:
+#define HCSPLT_COMPSPLT^I^I^IBIT(16)$
ERROR: code indent should never use tabs
#791: FILE: include/hw/usb/dwc2-regs.h:771:
+#define HCSPLT_XACTPOS_MASK^I^I(0x3 << 14)$
ERROR: code indent should never use tabs
#792: FILE: include/hw/usb/dwc2-regs.h:772:
+#define HCSPLT_XACTPOS_SHIFT^I^I14$
ERROR: code indent should never use tabs
#793: FILE: include/hw/usb/dwc2-regs.h:773:
+#define HCSPLT_XACTPOS_MID^I^I0$
ERROR: code indent should never use tabs
#794: FILE: include/hw/usb/dwc2-regs.h:774:
+#define HCSPLT_XACTPOS_END^I^I1$
ERROR: code indent should never use tabs
#795: FILE: include/hw/usb/dwc2-regs.h:775:
+#define HCSPLT_XACTPOS_BEGIN^I^I2$
ERROR: code indent should never use tabs
#796: FILE: include/hw/usb/dwc2-regs.h:776:
+#define HCSPLT_XACTPOS_ALL^I^I3$
ERROR: code indent should never use tabs
#797: FILE: include/hw/usb/dwc2-regs.h:777:
+#define HCSPLT_HUBADDR_MASK^I^I(0x7f << 7)$
ERROR: code indent should never use tabs
#798: FILE: include/hw/usb/dwc2-regs.h:778:
+#define HCSPLT_HUBADDR_SHIFT^I^I7$
ERROR: code indent should never use tabs
#799: FILE: include/hw/usb/dwc2-regs.h:779:
+#define HCSPLT_PRTADDR_MASK^I^I(0x7f << 0)$
ERROR: code indent should never use tabs
#800: FILE: include/hw/usb/dwc2-regs.h:780:
+#define HCSPLT_PRTADDR_SHIFT^I^I0$
ERROR: code indent should never use tabs
#802: FILE: include/hw/usb/dwc2-regs.h:782:
+#define HCINT(_ch)^I^I^IHSOTG_REG(0x0508 + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#803: FILE: include/hw/usb/dwc2-regs.h:783:
+#define HCINTMSK(_ch)^I^I^IHSOTG_REG(0x050c + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#804: FILE: include/hw/usb/dwc2-regs.h:784:
+#define HCINTMSK_RESERVED14_31^I^I(0x3ffff << 14)$
ERROR: code indent should never use tabs
#805: FILE: include/hw/usb/dwc2-regs.h:785:
+#define HCINTMSK_FRM_LIST_ROLL^I^IBIT(13)$
ERROR: code indent should never use tabs
#806: FILE: include/hw/usb/dwc2-regs.h:786:
+#define HCINTMSK_XCS_XACT^I^IBIT(12)$
ERROR: code indent should never use tabs
#807: FILE: include/hw/usb/dwc2-regs.h:787:
+#define HCINTMSK_BNA^I^I^IBIT(11)$
ERROR: code indent should never use tabs
#808: FILE: include/hw/usb/dwc2-regs.h:788:
+#define HCINTMSK_DATATGLERR^I^IBIT(10)$
ERROR: code indent should never use tabs
#809: FILE: include/hw/usb/dwc2-regs.h:789:
+#define HCINTMSK_FRMOVRUN^I^IBIT(9)$
ERROR: code indent should never use tabs
#810: FILE: include/hw/usb/dwc2-regs.h:790:
+#define HCINTMSK_BBLERR^I^I^IBIT(8)$
ERROR: code indent should never use tabs
#811: FILE: include/hw/usb/dwc2-regs.h:791:
+#define HCINTMSK_XACTERR^I^IBIT(7)$
ERROR: code indent should never use tabs
#812: FILE: include/hw/usb/dwc2-regs.h:792:
+#define HCINTMSK_NYET^I^I^IBIT(6)$
ERROR: code indent should never use tabs
#813: FILE: include/hw/usb/dwc2-regs.h:793:
+#define HCINTMSK_ACK^I^I^IBIT(5)$
ERROR: code indent should never use tabs
#814: FILE: include/hw/usb/dwc2-regs.h:794:
+#define HCINTMSK_NAK^I^I^IBIT(4)$
ERROR: code indent should never use tabs
#815: FILE: include/hw/usb/dwc2-regs.h:795:
+#define HCINTMSK_STALL^I^I^IBIT(3)$
ERROR: code indent should never use tabs
#816: FILE: include/hw/usb/dwc2-regs.h:796:
+#define HCINTMSK_AHBERR^I^I^IBIT(2)$
ERROR: code indent should never use tabs
#817: FILE: include/hw/usb/dwc2-regs.h:797:
+#define HCINTMSK_CHHLTD^I^I^IBIT(1)$
ERROR: code indent should never use tabs
#818: FILE: include/hw/usb/dwc2-regs.h:798:
+#define HCINTMSK_XFERCOMPL^I^IBIT(0)$
ERROR: code indent should never use tabs
#820: FILE: include/hw/usb/dwc2-regs.h:800:
+#define HCTSIZ(_ch)^I^I^IHSOTG_REG(0x0510 + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#821: FILE: include/hw/usb/dwc2-regs.h:801:
+#define TSIZ_DOPNG^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#822: FILE: include/hw/usb/dwc2-regs.h:802:
+#define TSIZ_SC_MC_PID_MASK^I^I(0x3 << 29)$
ERROR: code indent should never use tabs
#823: FILE: include/hw/usb/dwc2-regs.h:803:
+#define TSIZ_SC_MC_PID_SHIFT^I^I29$
ERROR: code indent should never use tabs
#824: FILE: include/hw/usb/dwc2-regs.h:804:
+#define TSIZ_SC_MC_PID_DATA0^I^I0$
ERROR: code indent should never use tabs
#825: FILE: include/hw/usb/dwc2-regs.h:805:
+#define TSIZ_SC_MC_PID_DATA2^I^I1$
ERROR: code indent should never use tabs
#826: FILE: include/hw/usb/dwc2-regs.h:806:
+#define TSIZ_SC_MC_PID_DATA1^I^I2$
ERROR: code indent should never use tabs
#827: FILE: include/hw/usb/dwc2-regs.h:807:
+#define TSIZ_SC_MC_PID_MDATA^I^I3$
ERROR: code indent should never use tabs
#828: FILE: include/hw/usb/dwc2-regs.h:808:
+#define TSIZ_SC_MC_PID_SETUP^I^I3$
ERROR: code indent should never use tabs
#829: FILE: include/hw/usb/dwc2-regs.h:809:
+#define TSIZ_PKTCNT_MASK^I^I(0x3ff << 19)$
ERROR: code indent should never use tabs
#830: FILE: include/hw/usb/dwc2-regs.h:810:
+#define TSIZ_PKTCNT_SHIFT^I^I19$
ERROR: code indent should never use tabs
#831: FILE: include/hw/usb/dwc2-regs.h:811:
+#define TSIZ_NTD_MASK^I^I^I(0xff << 8)$
ERROR: code indent should never use tabs
#832: FILE: include/hw/usb/dwc2-regs.h:812:
+#define TSIZ_NTD_SHIFT^I^I^I8$
ERROR: code indent should never use tabs
#833: FILE: include/hw/usb/dwc2-regs.h:813:
+#define TSIZ_SCHINFO_MASK^I^I(0xff << 0)$
ERROR: code indent should never use tabs
#834: FILE: include/hw/usb/dwc2-regs.h:814:
+#define TSIZ_SCHINFO_SHIFT^I^I0$
ERROR: code indent should never use tabs
#835: FILE: include/hw/usb/dwc2-regs.h:815:
+#define TSIZ_XFERSIZE_MASK^I^I(0x7ffff << 0)$
ERROR: code indent should never use tabs
#836: FILE: include/hw/usb/dwc2-regs.h:816:
+#define TSIZ_XFERSIZE_SHIFT^I^I0$
ERROR: code indent should never use tabs
#838: FILE: include/hw/usb/dwc2-regs.h:818:
+#define HCDMA(_ch)^I^I^IHSOTG_REG(0x0514 + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#840: FILE: include/hw/usb/dwc2-regs.h:820:
+#define HCDMAB(_ch)^I^I^IHSOTG_REG(0x051c + 0x20 * (_ch))$
ERROR: code indent should never use tabs
#842: FILE: include/hw/usb/dwc2-regs.h:822:
+#define HCFIFO(_ch)^I^I^IHSOTG_REG(0x1000 + 0x1000 * (_ch))$
ERROR: code indent should never use tabs
#855: FILE: include/hw/usb/dwc2-regs.h:835:
+^Iuint32_t status;$
ERROR: code indent should never use tabs
#856: FILE: include/hw/usb/dwc2-regs.h:836:
+^Iuint32_t buf;$
ERROR: code indent should never use tabs
#861: FILE: include/hw/usb/dwc2-regs.h:841:
+#define HOST_DMA_A^I^I^IBIT(31)$
ERROR: code indent should never use tabs
#862: FILE: include/hw/usb/dwc2-regs.h:842:
+#define HOST_DMA_STS_MASK^I^I(0x3 << 28)$
ERROR: code indent should never use tabs
#863: FILE: include/hw/usb/dwc2-regs.h:843:
+#define HOST_DMA_STS_SHIFT^I^I28$
ERROR: code indent should never use tabs
#864: FILE: include/hw/usb/dwc2-regs.h:844:
+#define HOST_DMA_STS_PKTERR^I^IBIT(28)$
ERROR: code indent should never use tabs
#865: FILE: include/hw/usb/dwc2-regs.h:845:
+#define HOST_DMA_EOL^I^I^IBIT(26)$
ERROR: code indent should never use tabs
#866: FILE: include/hw/usb/dwc2-regs.h:846:
+#define HOST_DMA_IOC^I^I^IBIT(25)$
ERROR: code indent should never use tabs
#867: FILE: include/hw/usb/dwc2-regs.h:847:
+#define HOST_DMA_SUP^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#868: FILE: include/hw/usb/dwc2-regs.h:848:
+#define HOST_DMA_ALT_QTD^I^IBIT(23)$
ERROR: code indent should never use tabs
#869: FILE: include/hw/usb/dwc2-regs.h:849:
+#define HOST_DMA_QTD_OFFSET_MASK^I(0x3f << 17)$
ERROR: code indent should never use tabs
#870: FILE: include/hw/usb/dwc2-regs.h:850:
+#define HOST_DMA_QTD_OFFSET_SHIFT^I17$
ERROR: code indent should never use tabs
#871: FILE: include/hw/usb/dwc2-regs.h:851:
+#define HOST_DMA_ISOC_NBYTES_MASK^I(0xfff << 0)$
ERROR: code indent should never use tabs
#872: FILE: include/hw/usb/dwc2-regs.h:852:
+#define HOST_DMA_ISOC_NBYTES_SHIFT^I0$
ERROR: code indent should never use tabs
#873: FILE: include/hw/usb/dwc2-regs.h:853:
+#define HOST_DMA_NBYTES_MASK^I^I(0x1ffff << 0)$
ERROR: code indent should never use tabs
#874: FILE: include/hw/usb/dwc2-regs.h:854:
+#define HOST_DMA_NBYTES_SHIFT^I^I0$
ERROR: code indent should never use tabs
#875: FILE: include/hw/usb/dwc2-regs.h:855:
+#define HOST_DMA_NBYTES_LIMIT^I^I131071$
ERROR: code indent should never use tabs
#879: FILE: include/hw/usb/dwc2-regs.h:859:
+#define DEV_DMA_BUFF_STS_MASK^I^I(0x3 << 30)$
ERROR: code indent should never use tabs
#880: FILE: include/hw/usb/dwc2-regs.h:860:
+#define DEV_DMA_BUFF_STS_SHIFT^I^I30$
ERROR: code indent should never use tabs
#881: FILE: include/hw/usb/dwc2-regs.h:861:
+#define DEV_DMA_BUFF_STS_HREADY^I^I0$
ERROR: code indent should never use tabs
#882: FILE: include/hw/usb/dwc2-regs.h:862:
+#define DEV_DMA_BUFF_STS_DMABUSY^I1$
ERROR: code indent should never use tabs
#883: FILE: include/hw/usb/dwc2-regs.h:863:
+#define DEV_DMA_BUFF_STS_DMADONE^I2$
ERROR: code indent should never use tabs
#884: FILE: include/hw/usb/dwc2-regs.h:864:
+#define DEV_DMA_BUFF_STS_HBUSY^I^I3$
ERROR: code indent should never use tabs
#885: FILE: include/hw/usb/dwc2-regs.h:865:
+#define DEV_DMA_STS_MASK^I^I(0x3 << 28)$
ERROR: code indent should never use tabs
#886: FILE: include/hw/usb/dwc2-regs.h:866:
+#define DEV_DMA_STS_SHIFT^I^I28$
ERROR: code indent should never use tabs
#887: FILE: include/hw/usb/dwc2-regs.h:867:
+#define DEV_DMA_STS_SUCC^I^I0$
ERROR: code indent should never use tabs
#888: FILE: include/hw/usb/dwc2-regs.h:868:
+#define DEV_DMA_STS_BUFF_FLUSH^I^I1$
ERROR: code indent should never use tabs
#889: FILE: include/hw/usb/dwc2-regs.h:869:
+#define DEV_DMA_STS_BUFF_ERR^I^I3$
ERROR: code indent should never use tabs
#890: FILE: include/hw/usb/dwc2-regs.h:870:
+#define DEV_DMA_L^I^I^IBIT(27)$
ERROR: code indent should never use tabs
#891: FILE: include/hw/usb/dwc2-regs.h:871:
+#define DEV_DMA_SHORT^I^I^IBIT(26)$
ERROR: code indent should never use tabs
#892: FILE: include/hw/usb/dwc2-regs.h:872:
+#define DEV_DMA_IOC^I^I^IBIT(25)$
ERROR: code indent should never use tabs
#893: FILE: include/hw/usb/dwc2-regs.h:873:
+#define DEV_DMA_SR^I^I^IBIT(24)$
ERROR: code indent should never use tabs
#894: FILE: include/hw/usb/dwc2-regs.h:874:
+#define DEV_DMA_MTRF^I^I^IBIT(23)$
ERROR: code indent should never use tabs
#895: FILE: include/hw/usb/dwc2-regs.h:875:
+#define DEV_DMA_ISOC_PID_MASK^I^I(0x3 << 23)$
ERROR: code indent should never use tabs
#896: FILE: include/hw/usb/dwc2-regs.h:876:
+#define DEV_DMA_ISOC_PID_SHIFT^I^I23$
ERROR: code indent should never use tabs
#897: FILE: include/hw/usb/dwc2-regs.h:877:
+#define DEV_DMA_ISOC_PID_DATA0^I^I0$
ERROR: code indent should never use tabs
#898: FILE: include/hw/usb/dwc2-regs.h:878:
+#define DEV_DMA_ISOC_PID_DATA2^I^I1$
ERROR: code indent should never use tabs
#899: FILE: include/hw/usb/dwc2-regs.h:879:
+#define DEV_DMA_ISOC_PID_DATA1^I^I2$
ERROR: code indent should never use tabs
#900: FILE: include/hw/usb/dwc2-regs.h:880:
+#define DEV_DMA_ISOC_PID_MDATA^I^I3$
ERROR: code indent should never use tabs
#901: FILE: include/hw/usb/dwc2-regs.h:881:
+#define DEV_DMA_ISOC_FRNUM_MASK^I^I(0x7ff << 12)$
ERROR: code indent should never use tabs
#902: FILE: include/hw/usb/dwc2-regs.h:882:
+#define DEV_DMA_ISOC_FRNUM_SHIFT^I12$
ERROR: code indent should never use tabs
#903: FILE: include/hw/usb/dwc2-regs.h:883:
+#define DEV_DMA_ISOC_TX_NBYTES_MASK^I(0xfff << 0)$
ERROR: code indent should never use tabs
#904: FILE: include/hw/usb/dwc2-regs.h:884:
+#define DEV_DMA_ISOC_TX_NBYTES_LIMIT^I0xfff$
ERROR: code indent should never use tabs
#905: FILE: include/hw/usb/dwc2-regs.h:885:
+#define DEV_DMA_ISOC_RX_NBYTES_MASK^I(0x7ff << 0)$
ERROR: code indent should never use tabs
#906: FILE: include/hw/usb/dwc2-regs.h:886:
+#define DEV_DMA_ISOC_RX_NBYTES_LIMIT^I0x7ff$
ERROR: code indent should never use tabs
#907: FILE: include/hw/usb/dwc2-regs.h:887:
+#define DEV_DMA_ISOC_NBYTES_SHIFT^I0$
ERROR: code indent should never use tabs
#908: FILE: include/hw/usb/dwc2-regs.h:888:
+#define DEV_DMA_NBYTES_MASK^I^I(0xffff << 0)$
ERROR: code indent should never use tabs
#909: FILE: include/hw/usb/dwc2-regs.h:889:
+#define DEV_DMA_NBYTES_SHIFT^I^I0$
ERROR: code indent should never use tabs
#910: FILE: include/hw/usb/dwc2-regs.h:890:
+#define DEV_DMA_NBYTES_LIMIT^I^I0xffff$
ERROR: code indent should never use tabs
#912: FILE: include/hw/usb/dwc2-regs.h:892:
+#define MAX_DMA_DESC_NUM_GENERIC^I64$
ERROR: code indent should never use tabs
#913: FILE: include/hw/usb/dwc2-regs.h:893:
+#define MAX_DMA_DESC_NUM_HS_ISOC^I256$
total: 753 errors, 3 warnings, 895 lines checked
Patch 2/6 has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
3/6 Checking commit 19ac43453a3b (dwc-hsotg USB host controller state definitions)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#14:
new file mode 100644
ERROR: spaces required around that '/' (ctx:VxV)
#101: FILE: hw/usb/hcd-dwc2.h:83:
+ uint32_t glbreg[0x70/sizeof(uint32_t)];
^
ERROR: spaces required around that '/' (ctx:VxV)
#135: FILE: hw/usb/hcd-dwc2.h:117:
+ uint32_t fszreg[0x4/sizeof(uint32_t)];
^
ERROR: spaces required around that '/' (ctx:VxV)
#142: FILE: hw/usb/hcd-dwc2.h:124:
+ uint32_t hreg0[0x44/sizeof(uint32_t)];
^
ERROR: spaces required around that '*' (ctx:VxV)
#157: FILE: hw/usb/hcd-dwc2.h:139:
+ uint32_t hreg1[0x20*NB_CHAN/sizeof(uint32_t)];
^
ERROR: spaces required around that '/' (ctx:VxV)
#157: FILE: hw/usb/hcd-dwc2.h:139:
+ uint32_t hreg1[0x20*NB_CHAN/sizeof(uint32_t)];
^
ERROR: spaces required around that '/' (ctx:VxV)
#167: FILE: hw/usb/hcd-dwc2.h:149:
+ uint32_t pcgreg[0x8/sizeof(uint32_t)];
^
total: 6 errors, 1 warnings, 180 lines checked
Patch 3/6 has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
4/6 Checking commit a36ab17a20db (dwc-hsotg USB host controller emulation)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#29:
new file mode 100644
ERROR: do not use C99 // comments
#59: FILE: hw/usb/hcd-dwc2.c:26:
+//#define DWC2_DEBUG 1
ERROR: space required before the open parenthesis '('
#64: FILE: hw/usb/hcd-dwc2.c:31:
+#define DPRINTF(fmt, ...) do {} while(0)
ERROR: space prohibited after that '~' (ctx:WxW)
#78: FILE: hw/usb/hcd-dwc2.c:45:
+ val &= ~ field##_MASK; \
^
ERROR: braces {} are necessary for all arms of this statement
#92: FILE: hw/usb/hcd-dwc2.c:59:
+ if ((s->gintsts & s->gintmsk) && (s->gahbcfg & GAHBCFG_GLBL_INTR_EN))
[...]
WARNING: Block comments use a leading /* on a separate line
#95: FILE: hw/usb/hcd-dwc2.c:62:
+ /*DPRINTF("dwc2_update_irq, sts 0x%08x msk 0x%08x level %d\n",
WARNING: Block comments use * on subsequent lines
#96: FILE: hw/usb/hcd-dwc2.c:63:
+ /*DPRINTF("dwc2_update_irq, sts 0x%08x msk 0x%08x level %d\n",
+ s->gintsts, s->gintmsk, level);*/
WARNING: Block comments use a trailing */ on a separate line
#96: FILE: hw/usb/hcd-dwc2.c:63:
+ s->gintsts, s->gintmsk, level);*/
WARNING: Block comments use a leading /* on a separate line
#140: FILE: hw/usb/hcd-dwc2.c:107:
+ /*DPRINTF("dwc2_update_hc_irq, hcint%d 0x%04x hcintmsk%d 0x%04x\n",
WARNING: Block comments use * on subsequent lines
#141: FILE: hw/usb/hcd-dwc2.c:108:
+ /*DPRINTF("dwc2_update_hc_irq, hcint%d 0x%04x hcintmsk%d 0x%04x\n",
+ index >> 3, s->hreg1[index + 2], index >> 3, s->hreg1[index + 3]);*/
WARNING: Block comments use a trailing */ on a separate line
#141: FILE: hw/usb/hcd-dwc2.c:108:
+ index >> 3, s->hreg1[index + 2], index >> 3, s->hreg1[index + 3]);*/
WARNING: Block comments use a leading /* on a separate line
#183: FILE: hw/usb/hcd-dwc2.c:150:
+/* Start sending SOF tokens across the USB bus, lists are processed in
WARNING: Block comments use a leading /* on a separate line
#188: FILE: hw/usb/hcd-dwc2.c:155:
+ /* Delay the first SOF event by one frame time as
ERROR: braces {} are necessary for all arms of this statement
#300: FILE: hw/usb/hcd-dwc2.c:267:
+ for (i = 0; i < 8; i++)
[...]
ERROR: braces {} are necessary for all arms of this statement
#350: FILE: hw/usb/hcd-dwc2.c:317:
+ for (i = 0; i < 8; i++)
[...]
ERROR: braces {} are necessary for all arms of this statement
#359: FILE: hw/usb/hcd-dwc2.c:326:
+ if (pid == USB_TOKEN_IN)
[...]
WARNING: Block comments use a leading /* on a separate line
#380: FILE: hw/usb/hcd-dwc2.c:347:
+ /* for ctrl/bulk, automatically retry on NAK,
WARNING: Block comments use * on subsequent lines
#381: FILE: hw/usb/hcd-dwc2.c:348:
+ /* for ctrl/bulk, automatically retry on NAK,
+ but send the interrupt anyway */
WARNING: Block comments use a trailing */ on a separate line
#381: FILE: hw/usb/hcd-dwc2.c:348:
+ but send the interrupt anyway */
WARNING: line over 80 characters
#401: FILE: hw/usb/hcd-dwc2.c:368:
+ DPRINTF("done %s len %d actual %d pcnt %d\n", pstatus[stsidx], len, actual, pcnt);
WARNING: line over 80 characters
#415: FILE: hw/usb/hcd-dwc2.c:382:
+ DPRINTF("cont %s len %d actual %d pcnt %d\n", pstatus[stsidx], len, actual, pcnt);
ERROR: braces {} are necessary for all arms of this statement
#428: FILE: hw/usb/hcd-dwc2.c:395:
+ if (!port->dev || !port->dev->attached)
[...]
WARNING: Block comments use a leading /* on a separate line
#650: FILE: hw/usb/hcd-dwc2.c:617:
+ /* Hack: Networking doesn't like us delivering large transfers, it kind
WARNING: line over 80 characters
#667: FILE: hw/usb/hcd-dwc2.c:634:
+ "GOTGCTL ", "GOTGINT ", "GAHBCFG ", "GUSBCFG ", "GRSTCTL ", "GINTSTS ",
WARNING: line over 80 characters
#668: FILE: hw/usb/hcd-dwc2.c:635:
+ "GINTMSK ", "GRXSTSR ", "GRXSTSP ", "GRXFSIZ ", "GNPTXFSIZ", "GNPTXSTS ",
WARNING: line over 80 characters
#669: FILE: hw/usb/hcd-dwc2.c:636:
+ "GI2CCTL ", "GPVNDCTL ", "GGPIO ", "GUID ", "GSNPSID ", "GHWCFG1 ",
WARNING: line over 80 characters
#670: FILE: hw/usb/hcd-dwc2.c:637:
+ "GHWCFG2 ", "GHWCFG3 ", "GHWCFG4 ", "GLPMCFG ", "GPWRDN ", "GDFIFOCFG",
WARNING: line over 80 characters
#830: FILE: hw/usb/hcd-dwc2.c:797:
+ "HCFG ", "HFIR ", "HFNUM ", "<rsvd> ", "HPTXSTS ", "HAINT ",
WARNING: line over 80 characters
#831: FILE: hw/usb/hcd-dwc2.c:798:
+ "HAINTMSK ", "HFLBADDR ", "<rsvd> ", "<rsvd> ", "<rsvd> ", "<rsvd> ",
WARNING: line over 80 characters
#901: FILE: hw/usb/hcd-dwc2.c:868:
+ tval = val & (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
WARNING: line over 80 characters
#902: FILE: hw/usb/hcd-dwc2.c:869:
+ told = old & (HPRT0_OVRCURRCHG | HPRT0_ENACHG | HPRT0_ENA | HPRT0_CONNDET);
total: 8 errors, 23 warnings, 1353 lines checked
Patch 4/6 has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
5/6 Checking commit eaf83d0de40c (Add short-packet handling to usb-storage driver)
6/6 Checking commit d4c9fd6a12ad (Wire in the dwc-hsotg USB host controller emulation)
=== OUTPUT END ===
Test command exited with code: 1
The full log is available at
http://patchew.org/logs/20200322222726.10244-1-pauldzim@gmail.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 11+ messages in thread