On 04/05/11 21:59, Alan Stern wrote: > On Wed, 4 May 2011, Jan Andersson wrote: > >> This patch is part of a series that extend the UHCI HCD to support >> non-PCI controllers. >> >> This patch moves PCI specific functions to uhci-pci.c and includes >> this file in uhci-hcd.c. It also renames the function uhci_init to >> uhci_pci_init. > > ... > >> -static int uhci_init(struct usb_hcd *hcd) >> -{ >> - struct uhci_hcd *uhci = hcd_to_uhci(hcd); >> - unsigned io_size = (unsigned) hcd->rsrc_len; >> - int port; >> - >> - uhci->io_addr = (unsigned long) hcd->rsrc_start; >> - >> - /* The UHCI spec says devices must have 2 ports, and goes on to say >> - * they may have more but gives no way to determine how many there >> - * are. However according to the UHCI spec, Bit 7 of the port >> - * status and control register is always set to 1. So we try to >> - * use this to our advantage. Another common failure mode when >> - * a nonexistent register is addressed is to return all ones, so >> - * we test for that also. >> - */ >> - for (port = 0; port < (io_size - USBPORTSC1) / 2; port++) { >> - unsigned int portstatus; >> - >> - portstatus = inw(uhci->io_addr + USBPORTSC1 + (port * 2)); >> - if (!(portstatus & 0x0080) || portstatus == 0xffff) >> - break; >> - } >> - if (debug) >> - dev_info(uhci_dev(uhci), "detected %d ports\n", port); >> - >> - /* Anything greater than 7 is weird so we'll ignore it. */ >> - if (port > UHCI_RH_MAXCHILD) { >> - dev_info(uhci_dev(uhci), "port count misdetected? " >> - "forcing to 2 ports\n"); >> - port = 2; >> - } >> - uhci->rh_numports = port; > > This port-detection logic will be common to all platforms. It should > remain in uhci-hcd as a subroutine that can be called from the > platform-specific init routine. > Good idea. Will do. Best regards, Jan -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html