20#include "pedigree/kernel/Log.h"
21#include "pedigree/kernel/machine/Device.h"
22#include "pedigree/kernel/processor/Processor.h"
23#include "pedigree/kernel/utilities/new"
29#include "modules/Module.h"
34 HCI_PROGIF_UHCI = 0x00,
35 HCI_PROGIF_OHCI = 0x10,
36 HCI_PROGIF_EHCI = 0x20,
37 HCI_PROGIF_XHCI = 0x30,
40static bool bFound =
false;
42static void probeXhci(
Device* pDev) {
43 NOTICE(
"USB: xHCI found");
45 if (!pXhci->initialiseController()) {
46 ERROR(
"USB: xHCI failed to initialise");
55static void probeEhci(
Device* pDev) {
56 NOTICE(
"USB: EHCI found");
60 bool success = pEhci->initialiseController();
62 NOTICE(
"USB: EHCI failed to initialise");
70 pEhci->startFirmwareRecovery();
75static void probeOhci(
Device* pDev) {
76 NOTICE(
"USB: OHCI found");
80 if (!pOhci->initialised()) {
81 NOTICE(
"USB: OHCI failed to initialise");
94static void probeUhci(
Device* pDev) {
95 NOTICE(
"USB: UHCI found");
99 if (!pUhci->initialised()) {
116 Device::searchByClassSubclassAndProgInterface(HCI_CLASS, HCI_SUBCLASS, HCI_PROGIF_XHCI,
118 Device::searchByClassSubclassAndProgInterface(HCI_CLASS, HCI_SUBCLASS, HCI_PROGIF_EHCI,
120 Device::searchByClassSubclassAndProgInterface(HCI_CLASS, HCI_SUBCLASS, HCI_PROGIF_OHCI,
123 Device::searchByClassSubclassAndProgInterface(HCI_CLASS, HCI_SUBCLASS, HCI_PROGIF_UHCI,
133MODULE_INFO_NON_UNLOADABLE(
"usb-hcd", &entry, &exit,
"pci",
"usb");
135MODULE_INFO_NON_UNLOADABLE(
"usb-hcd", &entry, &exit,
"usb");
Device * getParent() const
void replaceChild(Device *src, Device *dest)
static void setInterrupts(bool bEnable)