From f5281a85967ae59c079104be92cf1180095aa4b4 Mon Sep 17 00:00:00 2001 From: theStack Date: Sat, 19 Sep 2009 01:52:48 +0200 Subject: [PATCH] adapted setup_port to old, clean state but with our evil return; hack :) --- usb/host/ohci.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/usb/host/ohci.c b/usb/host/ohci.c index 183f8c0..ce23376 100644 --- a/usb/host/ohci.c +++ b/usb/host/ohci.c @@ -391,32 +391,21 @@ static void setup_port(u32 reg, u8 from_init) { u32 port = read32(reg); if((port & RH_PS_CCS) && ((port & RH_PS_CSC) || from_init)) { - write32(reg, RH_PS_CCS); write32(reg, RH_PS_CSC); - wait_ms(200); + wait_ms(150); /* clear CSC flag, set PES and start port reset (PRS) */ write32(reg, RH_PS_PES); - wait_ms(200); while(!(read32(reg) & RH_PS_PES)) { printf("fu\n"); - //write32(reg, RH_PS_PES); - /* - printf("OHCI0_HC_RH_DESCRIPTOR_A:\t0x%08X\n", read32(OHCI0_HC_RH_DESCRIPTOR_A)); - printf("OHCI0_HC_RH_DESCRIPTOR_B:\t0x%08X\n", read32(OHCI0_HC_RH_DESCRIPTOR_B)); - printf("OHCI0_HC_RH_STATUS:\t\t0x%08X\n", read32(OHCI0_HC_RH_STATUS)); - printf("OHCI0_HC_RH_PORT_STATUS_1:\t0x%08X\n", read32(OHCI0_HC_RH_PORT_STATUS_1)); - printf("OHCI0_HC_RH_PORT_STATUS_2:\t0x%08X\n", read32(OHCI0_HC_RH_PORT_STATUS_2)); - */ return; } - port = read32(reg); - wait_ms(200); + write32(reg, RH_PS_PRS); /* spin until port reset is complete */ - while((read32(reg) & RH_PS_PRS)); + while(!(read32(reg) & RH_PS_PRSC)); // hint: it may stuck here printf("loop done\n"); (void) usb_add_device(); -- 2.25.1