Improve gating of VIA functions
This commit is contained in:
@@ -237,7 +237,7 @@ pipc_reset_hard(void *priv)
|
|||||||
dev->usb_regs[i][0xc1] = 0x20;
|
dev->usb_regs[i][0xc1] = 0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->local >= VIA_PIPC_586B) {
|
if (dev->acpi) {
|
||||||
dev->max_func++;
|
dev->max_func++;
|
||||||
dev->power_regs[0x00] = 0x06; dev->power_regs[0x01] = 0x11;
|
dev->power_regs[0x00] = 0x06; dev->power_regs[0x01] = 0x11;
|
||||||
if (dev->local <= VIA_PIPC_586B)
|
if (dev->local <= VIA_PIPC_586B)
|
||||||
@@ -391,7 +391,7 @@ pipc_read(int func, int addr, void *priv)
|
|||||||
pipc_t *dev = (pipc_t *) priv;
|
pipc_t *dev = (pipc_t *) priv;
|
||||||
uint8_t ret = 0xff;
|
uint8_t ret = 0xff;
|
||||||
int c;
|
int c;
|
||||||
uint8_t pm_func = (dev->local >= VIA_PIPC_686A) ? 4 : 3;
|
uint8_t pm_func = dev->usb[1] ? 4 : 3;
|
||||||
|
|
||||||
if (func > dev->max_func)
|
if (func > dev->max_func)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -445,7 +445,7 @@ pipc_write(int func, int addr, uint8_t val, void *priv)
|
|||||||
{
|
{
|
||||||
pipc_t *dev = (pipc_t *) priv;
|
pipc_t *dev = (pipc_t *) priv;
|
||||||
int c;
|
int c;
|
||||||
uint8_t pm_func = (dev->local >= VIA_PIPC_686A) ? 4 : 3;
|
uint8_t pm_func = dev->usb[1] ? 4 : 3;
|
||||||
|
|
||||||
if (func > dev->max_func)
|
if (func > dev->max_func)
|
||||||
return;
|
return;
|
||||||
@@ -773,11 +773,12 @@ pipc_init(const device_t *info)
|
|||||||
|
|
||||||
dev->nvr = device_add(&via_nvr_device);
|
dev->nvr = device_add(&via_nvr_device);
|
||||||
|
|
||||||
dev->smbus = device_add(&piix4_smbus_device);
|
if (dev->local >= VIA_PIPC_596A)
|
||||||
|
dev->smbus = device_add(&piix4_smbus_device);
|
||||||
|
|
||||||
if (dev->local >= VIA_PIPC_596A)
|
if (dev->local >= VIA_PIPC_596A)
|
||||||
dev->acpi = device_add(&acpi_via_596b_device);
|
dev->acpi = device_add(&acpi_via_596b_device);
|
||||||
else
|
else if (dev->local >= VIA_PIPC_586B)
|
||||||
dev->acpi = device_add(&acpi_via_device);
|
dev->acpi = device_add(&acpi_via_device);
|
||||||
|
|
||||||
dev->usb[0] = device_add_inst(&usb_device, 1);
|
dev->usb[0] = device_add_inst(&usb_device, 1);
|
||||||
@@ -797,7 +798,8 @@ pipc_init(const device_t *info)
|
|||||||
pci_enable_mirq(2);
|
pci_enable_mirq(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
acpi_init_gporeg(dev->acpi, 0xff, 0xbf, 0xff, 0x7f);
|
if (dev->acpi)
|
||||||
|
acpi_init_gporeg(dev->acpi, 0xff, 0xbf, 0xff, 0x7f);
|
||||||
|
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user