You moved the USB_EN setting: + /* Enable interface. */ + setbits_be32(&ehci->control, USB_EN); + [...] - /* Enable interface. */ - setbits_be32(&ehci->control, USB_EN); - Should we clear this bit if we don't find a valid clock? The patch description didn't say why you moved this write. Andy