diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2024-10-24 14:18:53 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2024-11-30 21:38:58 +0000 |
| commit | 11592af90f0d902c979097df3a583b07ba5a419d (patch) | |
| tree | c0484634d63f752e9d81d16efda93b32209222ca /sys/dev | |
| parent | 1ea0d07628d3927304f5d684eb2c153aeaf925d4 (diff) | |
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sound/pci/csa.c | 47 |
1 files changed, 13 insertions, 34 deletions
diff --git a/sys/dev/sound/pci/csa.c b/sys/dev/sound/pci/csa.c index d84d2a1e9310..caba61d31def 100644 --- a/sys/dev/sound/pci/csa.c +++ b/sys/dev/sound/pci/csa.c @@ -114,46 +114,25 @@ static int clkrun_hack(int run) { #ifdef __i386__ - devclass_t pci_devclass; - device_t *pci_devices, *pci_children, *busp, *childp; - int pci_count = 0, pci_childcount = 0; - int i, j, port; + device_t child; + int port; u_int16_t control; bus_space_tag_t btag; - if ((pci_devclass = devclass_find("pci")) == NULL) { - return ENXIO; - } - - devclass_get_devices(pci_devclass, &pci_devices, &pci_count); + child = pci_find_device(0x8086, 0x7113); + if (child == NULL) + return (ENXIO); - for (i = 0, busp = pci_devices; i < pci_count; i++, busp++) { - pci_childcount = 0; - if (device_get_children(*busp, &pci_children, &pci_childcount)) - continue; - for (j = 0, childp = pci_children; j < pci_childcount; j++, childp++) { - if (pci_get_vendor(*childp) == 0x8086 && pci_get_device(*childp) == 0x7113) { - port = (pci_read_config(*childp, 0x41, 1) << 8) + 0x10; - /* XXX */ - btag = X86_BUS_SPACE_IO; + port = (pci_read_config(child, 0x41, 1) << 8) + 0x10; + /* XXX */ + btag = X86_BUS_SPACE_IO; - control = bus_space_read_2(btag, 0x0, port); - control &= ~0x2000; - control |= run? 0 : 0x2000; - bus_space_write_2(btag, 0x0, port, control); - free(pci_devices, M_TEMP); - free(pci_children, M_TEMP); - return 0; - } - } - free(pci_children, M_TEMP); - } - - free(pci_devices, M_TEMP); - return ENXIO; -#else - return 0; + control = bus_space_read_2(btag, 0x0, port); + control &= ~0x2000; + control |= run? 0 : 0x2000; + bus_space_write_2(btag, 0x0, port, control); #endif + return (0); } static struct csa_card cards_4610[] = { |
