Fixed Cacodemon345's OHCI mess and implemented proper OHCI IRQ updating, fixes the Gigabyte GA-5AX POST.

This commit is contained in:
OBattler
2023-05-07 02:53:04 +02:00
parent a9cc8cf898
commit ecb8091d41
11 changed files with 8015 additions and 254 deletions

View File

@@ -906,6 +906,7 @@ ali5237_write(int func, int addr, uint8_t val, void *priv)
case 0x0c: /* Cache Line Size */
case 0x0d: /* Latency Timer */
dev->usb_conf[addr] = val;
break;
case 0x3c: /* Interrupt Line Register */
@@ -1430,14 +1431,14 @@ ali7101_read(int func, int addr, void *priv)
}
static void
ali5237_usb_raise_interrupt(usb_t* usb, void *priv)
ali5237_usb_update_interrupt(usb_t* usb, void *priv)
{
ali1543_t *dev = (ali1543_t *) priv;
if (!dev->usb_dev_enable)
return;
pci_set_irq(dev->usb_slot, PCI_INTA);
if (usb->irq_level)
pci_set_mirq(4, !!(dev->pci_conf[0x74] & 0x10));
else
pci_clear_mirq(4, !!(dev->pci_conf[0x74] & 0x10));
}
static void
@@ -1590,10 +1591,10 @@ ali1543_init(const device_t *info)
dev->smbus = device_add(&ali7101_smbus_device);
/* USB */
dev->usb_params.parent_priv = dev;
dev->usb_params.smi_handle = NULL;
dev->usb_params.raise_interrupt = ali5237_usb_raise_interrupt;
dev->usb = device_add_parameters(&usb_device, &dev->usb_params);
dev->usb_params.parent_priv = dev;
dev->usb_params.smi_handle = NULL;
dev->usb_params.update_interrupt = ali5237_usb_update_interrupt;
dev->usb = device_add_parameters(&usb_device, &dev->usb_params);
dev->type = info->local & 0xff;
dev->offset = (info->local >> 8) & 0x7f;