Skip to content

Commit 1dd3304

Browse files
committed
ac97: Add nForce codec probing
1 parent 3b21a6f commit 1dd3304

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

ac97/ac97.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -442,13 +442,14 @@ intel_codec_write(uint8_t reg, uint16_t val)
442442
}
443443

444444
static void
445-
intel_probe(uint16_t dev_id)
445+
intel_probe(const char *name, uint16_t dev_id)
446446
{
447447
uint8_t rev;
448+
uint32_t globcnt;
448449

449450
/* Print controller information. */
450451
rev = pci_readb(bus, dev, func, 0x08);
451-
printf("Found Intel %04X revision %02X at bus %02X device %02X function %d\n", dev_id, rev, bus, dev, func);
452+
printf("Found %s %04X revision %02X at bus %02X device %02X function %d\n", name, dev_id, rev, bus, dev, func);
452453

453454
/* Get Mixer I/O BAR. */
454455
io_base = pci_get_io_bar(bus, dev, func, 0x10, 256, "Mixer");
@@ -462,10 +463,12 @@ intel_probe(uint16_t dev_id)
462463

463464
/* Set up AC-Link interface. */
464465
printf("Waking codec up... ");
465-
outl(alt_io_base | 0x2c, inl(alt_io_base | 0x2c) & ~0x00000002);
466+
globcnt = inl(alt_io_base | 0x2c) & ~0x00000008;
467+
outl(alt_io_base | 0x2c, globcnt & ~0x00000002);
468+
globcnt = inl(alt_io_base | 0x2c);
466469
for (i = 1; i; i++) /* unknown delay required */
467470
inb(0xeb);
468-
outl(alt_io_base | 0x2c, inl(alt_io_base | 0x2c) | 0x00000002);
471+
outl(alt_io_base | 0x2c, globcnt | 0x00000002);
469472
for (i = 1; i; i++) {
470473
if (inl(alt_io_base | 0x30) & 0x00000100)
471474
break;
@@ -510,7 +513,10 @@ pci_scan_callback(uint8_t this_bus, uint8_t this_dev, uint8_t this_func,
510513
via_probe(dev_id);
511514
} else if ((ven_id == 0x8086) && ((dev_id == 0x2415) || (dev_id == 0x2425) || (dev_id == 0x2445) || (dev_id == 0x2485) || (dev_id == 0x24c5) || (dev_id == 0x24d5) || (dev_id == 0x25a6) || (dev_id == 0x266e) || (dev_id == 0x27de) || (dev_id == 0x7195))) {
512515
print_spacer();
513-
intel_probe(dev_id);
516+
intel_probe("Intel", dev_id);
517+
} else if ((ven_id == 0x10de) && ((dev_id == 0x01b1) || (dev_id == 0x003a) || (dev_id == 0x006a) || (dev_id == 0x0059) || (dev_id == 0x008a) || (dev_id == 0x00da) || (dev_id == 0x00ea) || (dev_id == 0x026b))) {
518+
print_spacer();
519+
intel_probe("nForce", dev_id);
514520
}
515521
}
516522

0 commit comments

Comments
 (0)