diff --git a/src/hw/usb-ohci.c b/src/hw/usb-ohci.c
index c839d11..cc35bae 100644
--- a/src/hw/usb-ohci.c
+++ b/src/hw/usb-ohci.c
@@ -64,13 +64,15 @@
     struct usb_ohci_s *cntl = container_of(hub->cntl, struct usb_ohci_s, usb);
     writel(&cntl->regs->roothub_portstatus[port], RH_PS_PRS);
     u32 sts;
-    u32 end = timer_calc(USB_TIME_DRSTR * 2);
+    struct wait_t end;
+
+    timer_calc2_ms(&end, USB_TIME_DRSTR * 2);
     for (;;) {
         sts = readl(&cntl->regs->roothub_portstatus[port]);
         if (!(sts & RH_PS_PRS))
             // XXX - need to ensure USB_TIME_DRSTR time in reset?
             break;
-        if (timer_check(end)) {
+        if (timer_check2(&end)) {
             // Timeout.
             warn_timeout();
             ohci_hub_disconnect(hub, port);
@@ -128,11 +130,13 @@
     barrier();
     struct ohci_hcca *hcca = (void*)readl(&regs->hcca);
     u32 startframe = hcca->frame_no;
-    u32 end = timer_calc(1000 * 5);
+    struct wait_t end;
+
+    timer_calc2_ms(&end, 1000 * 5);
     for (;;) {
         if (hcca->frame_no != startframe)
             break;
-        if (timer_check(end)) {
+        if (timer_check2(&end)) {
             warn_timeout();
             return;
         }
@@ -442,11 +446,20 @@
 static int
 wait_ed(struct ohci_ed *ed, int timeout)
 {
-    u32 end = timer_calc(timeout);
+    struct wait_t end;
+
+    timer_calc2_ms(&end, timeout);
+#if 0
+    while (1) {
+        timer_calc2_ms(&end, 1000);
+        while (!timer_check2(&end))  { };
+        dprintf(1, "Tick\n");
+    }
+#endif
     for (;;) {
         if ((le32_to_cpu(ed->hwHeadP) & ~(ED_C|ED_H)) == le32_to_cpu(ed->hwTailP))
             return 0;
-        if (timer_check(end)) {
+        if (timer_check2(&end)) {
             warn_timeout();
             dprintf(1, "ohci ed info=%x tail=%x head=%x next=%x\n",
                     le32_to_cpu(ed->hwINFO), le32_to_cpu(ed->hwTailP),
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index 92d044e..9c8375d 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -2917,8 +2917,8 @@
     find_serial_pci_card();
 
     serial_setup();
+    // usb_setup();
     // ohci_setup();
-    usb_setup();
     block_setup();
 
     /* find SCSI PCI card when running on Astro or Dino */
diff --git a/src/parisc/timer.c b/src/parisc/timer.c
index 9605f91..c3169f3 100644
--- a/src/parisc/timer.c
+++ b/src/parisc/timer.c
@@ -94,6 +94,33 @@
     return ((usecs * PAGE0->mem_10msec / 10) / 1000) + timer_read();
 }
 
+void
+timer_calc2_ms(struct wait_t *w, u32 msecs)
+{
+    w->usecs = msecs / 1000;
+    w->end = msecs % 1000;
+    if (w->end == 0) {
+        w->end = 1000;
+        w->usecs -= 1;
+    }
+    w->end = timer_calc(w->end);
+}
+
+int
+timer_check2(struct wait_t *w)
+{
+    s32 remain;
+
+    /* return 1 if timed out */
+    remain = (s32)(timer_read() - w->end);
+    if (remain <= 0)
+        return 0;
+    if (w->usecs == 0)
+        return 1;
+    w->usecs -= 1;
+    w->end = timer_calc(1000);
+    return 0;
+}
 
 void
 pit_setup(void)
diff --git a/src/util.h b/src/util.h
index 0de3522..dd919a8 100644
--- a/src/util.h
+++ b/src/util.h
@@ -71,6 +71,13 @@
 int irqtimer_check(u32 end);
 void handle_1586(struct bregs *regs);
 
+struct wait_t {
+    u32 usecs;
+    u32 end;
+};
+void timer_calc2_ms(struct wait_t *w, u32 msecs);
+int timer_check2(struct wait_t *w);
+
 // fw/acpi.c
 void acpi_setup(void);
 
