@@ -442,13 +442,14 @@ intel_codec_write(uint8_t reg, uint16_t val)
442442}
443443
444444static 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