static void usb_on(int enable) { unsigned char regval; /* Base 8231 controller */ device_t dev0 = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231, 0); /* USB controller 1 */ device_t dev2 = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, 0); /* USB controller 2 */ device_t dev3 = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, dev2); /* enable USB1 */ if(dev2) { if (enable) { pci_write_config8(dev2, 0x3c, 0x05); pci_write_config8(dev2, 0x04, 0x07); } else { pci_write_config8(dev2, 0x3c, 0x00); pci_write_config8(dev2, 0x04, 0x00); } } if(dev0) { regval = pci_read_config8(dev0, 0x50); if (enable) regval &= ~(0x10); else regval |= 0x10; pci_write_config8(dev0, 0x50, regval); } /* enable USB2 */ if(dev3) { if (enable) { pci_write_config8(dev3, 0x3c, 0x05); pci_write_config8(dev3, 0x04, 0x07); } else { pci_write_config8(dev3, 0x3c, 0x00); pci_write_config8(dev3, 0x04, 0x00); } } if(dev0) { regval = pci_read_config8(dev0, 0x50); if (enable) regval &= ~(0x20); else regval |= 0x20; pci_write_config8(dev0, 0x50, regval); } }