44 if (
device->interrupt_line) {
45 auto irq = IOUtils::irq_alloc_entry();
46 IOUtils::isr_map(
device->interrupt_line, irq);
57 size_t request_size,
uint32_t response_phys,
58 size_t response_size) {
60 addr, endpoint, data_phys, request_size, response_phys,
65 struct ioforge_usb_controller_device* usb_controller =
67 sizeof(
struct ioforge_usb_controller_device));
static void * alloc(size_t size)
static void strcopy(char *dst, char *src)
struct ioforge_pci_device * findDevice(uint16_t vendor_id, uint16_t device_id)
IOforgePCI(const char *mod)
ioforge_pci_device * device
void set_controller(ioforge_usb_controller_device *ctrl)
static XHCIModule instance
volatile uint32_t * doorbell_regs
void send_async_with_response(uint8_t addr, uint8_t endpoint, uint32_t data_phys, size_t size, uint32_t response_phys, size_t response_size)
struct xhci_op_regs * op_regs
static XHCIModule * getInstance()
struct xhci_cap_regs * cap_regs
struct xhci_runtime_regs * runtime_regs
static void fireHandler()
void ioforge_attach(struct ioforge_device *parent, struct ioforge_device *child)
#define log(mod, fmt,...)
#define IoForgeModuleConstructor(Class)
struct ioforge_device * ioforge_get_usb_ctrl_root()
void xhci_send_async_stub(uint32_t addr, uint8_t endpoint, uint32_t data_phys, size_t request_size, uint32_t response_phys, size_t response_size)