On Sun, 16 Jan 2022, Philippe Mathieu-Daudé wrote:
On 16/1/22 14:20, BALATON Zoltan wrote:
This also allows removing two forward declarations

Signed-off-by: BALATON Zoltan <bala...@eik.bme.hu>
---
  hw/usb/hcd-ohci.c | 204 +++++++++++++++++++++++-----------------------
  1 file changed, 100 insertions(+), 104 deletions(-)

+static const MemoryRegionOps ohci_mem_ops = {
+    .read = ohci_mem_read,
+    .write = ohci_mem_write,
+    .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
+/* USBPortOps */
+static void ohci_attach(USBPort *port1)
+{
+    OHCIState *s = port1->opaque;
+    OHCIPort *port = &s->rhport[port1->index];
+    uint32_t old_state = port->ctrl;
+
+    /* set connect status */
+    port->ctrl |= OHCI_PORT_CCS | OHCI_PORT_CSC;
+
+    /* update speed */
+    if (port->port.dev->speed == USB_SPEED_LOW) {
+        port->ctrl |= OHCI_PORT_LSDA;
+    } else {
+        port->ctrl &= ~OHCI_PORT_LSDA;
+    }
+
+    /* notify of remote-wakeup */
+    if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND) {
+        ohci_set_interrupt(s, OHCI_INTR_RD);
+    }
+
+    trace_usb_ohci_port_attach(port1->index);
+
+    if (old_state != port->ctrl) {
+        ohci_set_interrupt(s, OHCI_INTR_RHSC);
+    }
+}
+
  static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev)
  {
      if (ohci->async_td &&
@@ -1799,11 +1735,71 @@ static void ohci_async_cancel_device(OHCIState *ohci, USBDevice *dev)
      }
  }

We could have ohci_attach() just before ohci*_detach(),

The ohci_child_detach() function (which the next patch merges with ohci_async_cancel_device) is used by ohci_detach() but not ohci_attach() that's why I've put it between attach and detach. Attach and detach are less related than ohci_child_detach and ohci_detach in my opinion. Attach and detach are still close enough after the next patch but without moving child_detach and detach apart.

anyhow:

Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>

Thanks for the review.

Regards,
BALATON Zoltan

Reply via email to