usb: Hook up USB interrupts to rest of the chipsets

This commit is contained in:
Cacodemon345
2023-05-06 15:35:03 +06:00
parent c0103b8243
commit d6ff34208c
3 changed files with 53 additions and 5 deletions

View File

@@ -77,6 +77,7 @@ typedef struct _piix_ {
piix_io_trap_t io_traps[26];
port_92_t *port_92;
pc_timer_t fast_off_timer;
usb_params_t usb_params;
} piix_t;
#ifdef ENABLE_PIIX_LOG
@@ -1425,6 +1426,14 @@ piix_fast_off_count(void *priv)
dev->regs[0][0xaa] |= 0x20;
}
static void
piix_usb_raise_interrupt(usb_t* usb, void *priv)
{
piix_t *dev = (piix_t *) priv;
pci_set_irq(dev->pci_slot, PCI_INTD);
}
static void
piix_reset(void *p)
{
@@ -1569,8 +1578,12 @@ piix_init(const device_t *info)
sff_set_irq_mode(dev->bm[1], 1, 2);
}
if (dev->type >= 3)
dev->usb = device_add(&usb_device);
if (dev->type >= 3) {
dev->usb_params.parent_priv = dev;
dev->usb_params.smi_handle = NULL;
dev->usb_params.raise_interrupt = piix_usb_raise_interrupt;
dev->usb = device_add_parameters(&usb_device, &dev->usb_params);
}
if (dev->type > 3) {
dev->nvr = device_add(&piix4_nvr_device);