[ALSA] intel8x0: another attempt to fix ac97_clock measure routine
Appearently, a big delay ~300ms is required before hw is settled and ready to transfer samples on some hardware variants. Also, return back "clocking to 48000Hz" message when something fails. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
		
							parent
							
								
									e10f9d87c9
								
							
						
					
					
						commit
						30fd9940ee
					
				| @ -2751,11 +2751,12 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip) | ||||
| 	if (pos == 0) { | ||||
| 		snd_printk(KERN_ERR "intel8x0: measure - unreliable DMA position..\n"); | ||||
| 	      __retry: | ||||
| 		if (attempt < 2) { | ||||
| 		if (attempt < 3) { | ||||
| 			msleep(300); | ||||
| 			attempt++; | ||||
| 			goto __again; | ||||
| 		} | ||||
| 		return; | ||||
| 		goto __end; | ||||
| 	} | ||||
| 
 | ||||
| 	pos /= 4; | ||||
| @ -2782,6 +2783,7 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip) | ||||
| 	else if (pos < 47500 || pos > 48500) | ||||
| 		/* not 48000Hz, tuning the clock.. */ | ||||
| 		chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos; | ||||
|       __end: | ||||
| 	printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock); | ||||
| 	snd_ac97_update_power(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 0); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user