summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/usb/if_axe.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/dev/usb/if_axe.c b/sys/dev/usb/if_axe.c
index 6b226c6b452..3f4151a8ee1 100644
--- a/sys/dev/usb/if_axe.c
+++ b/sys/dev/usb/if_axe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_axe.c,v 1.31 2005/08/11 05:24:17 jsg Exp $ */
+/* $OpenBSD: if_axe.c,v 1.32 2005/08/12 11:56:16 jsg Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000-2003
@@ -547,22 +547,34 @@ USB_ATTACH(axe)
printf("gpio0 path not done! PHY not enabled\n");
else {
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x008c, NULL);
+ usbd_delay_ms(sc->axe_udev, 40);
if (phymode != 1) {
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x003c, NULL);
+ usbd_delay_ms(sc->axe_udev, 30);
+
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x001c, NULL);
+ usbd_delay_ms(sc->axe_udev, 300);
+
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x003c, NULL);
+ usbd_delay_ms(sc->axe_udev, 30);
} else {
+ DPRINTF(("axe gpio phymode == 1 path\n"));
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x0004, NULL);
+ usbd_delay_ms(sc->axe_udev, 30);
axe_cmd(sc, AXE_CMD_WRITE_GPIO, 0, 0x000c, NULL);
+ usbd_delay_ms(sc->axe_udev, 30);
}
}
axe_cmd(sc, AXE_CMD_SW_PHY_SELECT, 0, 0, NULL);
+ usbd_delay_ms(sc->axe_udev, 150);
/* soft reset */
axe_cmd(sc, AXE_CMD_SW_RESET_REG, 0,
AXE_178_RESET_PRL | AXE_178_RESET_MAGIC, NULL);
- delay(500);
+ usbd_delay_ms(sc->axe_udev, 150);
axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, 0, NULL);
+ /* XXX is a delay this long required for PHY to work? */
+ usbd_delay_ms(sc->axe_udev, 1500);
}
/*