ohci: enumerate a device that was already attached at init

hcd_init() clears every pending interrupt flag before enabling its own set:

  OHCI_REG->interrupt_status = OHCI_REG->interrupt_status;

If a device is already connected at that point, that write drops the RHSC
which went with the connect, while the root hub keeps ConnectStatusChange
set. The device stays put, so no new edge follows and the attach is never
reported - the port sits at CCS=1, CSC=1, PES=0 forever.

Host-only builds got away with it because the connect is usually detected
after that clear. In a dual build the device stack initialises first and
enables the shared USB interrupt, which moves the detection into the window
that gets cleared, and the host then never sees the device.

Scan the root-hub ports once at the end of hcd_init and raise the attach
ourselves, clearing the stale change bit so the next RHSC does not report
the same device again.

Verified on ea4088_quickstart: dual/host_info_to_device_cdc now enumerates
on a plain reset (HIL test passes, "Device 1: ID 1a86:8010 SN 7FD88F0604B5"),
host/device_info still enumerates, and device/cdc_msc is unaffected.
host/device_info also builds for lpcxpresso55s69, lpcxpresso1769 and mcb1800.
diff --git a/src/portable/ohci/ohci.c b/src/portable/ohci/ohci.c
index 2a174e4..598e9b2 100644
--- a/src/portable/ohci/ohci.c
+++ b/src/portable/ohci/ohci.c
@@ -232,6 +232,18 @@
 
   tusb_time_delay_ms_api(OHCI_REG->rh_descriptorA_bit.power_on_to_good_time * 2); // Wait POTG after power up
 
+  // A device attached before this point sets the port's connect status change, but the RHSC
+  // interrupt that went with it was cleared above and no new edge will follow. Scan the ports
+  // once so an already-connected device is still enumerated.
+  for (uint8_t i = 0; i < TUP_OHCI_RHPORTS; i++) {
+    if (OHCI_REG->rhport_status_bit[i].current_connect_status) {
+      // one write does both: w1c the stale ConnectStatusChange, else the next RHSC reports
+      // this device again, and w1s PortReset to reset the port the way the RHSC path does
+      OHCI_REG->rhport_status[i] = RHPORT_CONNECT_STATUS_CHANGE_MASK | RHPORT_PORT_RESET_STATUS_MASK;
+      hcd_event_device_attach(i, false);
+    }
+  }
+
   return true;
 }