View | Details | Raw Unified | Return to bug 115837
Collapse All | Expand All

(-)linux/sound/pci/intel8x0.c (+9 lines)
Lines 69-74 Link Here
69
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
69
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
70
static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
70
static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
71
static char *ac97_quirk[SNDRV_CARDS];
71
static char *ac97_quirk[SNDRV_CARDS];
72
static int buggy_semaphore[SNDRV_CARDS];
72
static int buggy_irq[SNDRV_CARDS];
73
static int buggy_irq[SNDRV_CARDS];
73
static int xbox[SNDRV_CARDS];
74
static int xbox[SNDRV_CARDS];
74
75
Lines 86-91 Link Here
86
MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect).");
87
MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect).");
87
module_param_array(ac97_quirk, charp, NULL, 0444);
88
module_param_array(ac97_quirk, charp, NULL, 0444);
88
MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
89
MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
90
module_param_array(buggy_semaphore, bool, NULL, 0444);
91
MODULE_PARM_DESC(buggy_semaphore, "Enable workaround for hardwares with problematic codec semaphores.");
89
module_param_array(buggy_irq, bool, NULL, 0444);
92
module_param_array(buggy_irq, bool, NULL, 0444);
90
MODULE_PARM_DESC(buggy_irq, "Enable workaround for buggy interrupts on some motherboards.");
93
MODULE_PARM_DESC(buggy_irq, "Enable workaround for buggy interrupts on some motherboards.");
91
module_param_array(xbox, bool, NULL, 0444);
94
module_param_array(xbox, bool, NULL, 0444);
Lines 367-372 Link Here
367
	unsigned fix_nocache: 1; 	/* workaround for 440MX */
370
	unsigned fix_nocache: 1; 	/* workaround for 440MX */
368
	unsigned buggy_irq: 1;		/* workaround for buggy mobos */
371
	unsigned buggy_irq: 1;		/* workaround for buggy mobos */
369
	unsigned xbox: 1;		/* workaround for Xbox AC'97 detection */
372
	unsigned xbox: 1;		/* workaround for Xbox AC'97 detection */
373
	unsigned buggy_semaphore: 1;	/* workaround for buggy codec semaphore */
370
374
371
	int spdif_idx;	/* SPDIF BAR index; *_SPBAR or -1 if use PCMOUT */
375
	int spdif_idx;	/* SPDIF BAR index; *_SPBAR or -1 if use PCMOUT */
372
	unsigned int sdm_saved;	/* SDM reg value */
376
	unsigned int sdm_saved;	/* SDM reg value */
Lines 521-526 Link Here
521
	if ((igetdword(chip, ICHREG(GLOB_STA)) & codec) == 0)
525
	if ((igetdword(chip, ICHREG(GLOB_STA)) & codec) == 0)
522
		return -EIO;
526
		return -EIO;
523
527
528
	if (chip->buggy_semaphore)
529
		return 0; /* just ignore ... */
530
524
	/* Anyone holding a semaphore for 1 msec should be shot... */
531
	/* Anyone holding a semaphore for 1 msec should be shot... */
525
	time = 100;
532
	time = 100;
526
      	do {
533
      	do {
Lines 2818-2823 Link Here
2818
		chip->buggy_irq = 1;
2825
		chip->buggy_irq = 1;
2819
	if (xbox[dev])
2826
	if (xbox[dev])
2820
		chip->xbox = 1;
2827
		chip->xbox = 1;
2828
	if (buggy_semaphore[dev])
2829
		chip->buggy_semaphore = 1;
2821
2830
2822
	if ((err = snd_intel8x0_mixer(chip, ac97_clock[dev], ac97_quirk[dev])) < 0) {
2831
	if ((err = snd_intel8x0_mixer(chip, ac97_clock[dev], ac97_quirk[dev])) < 0) {
2823
		snd_card_free(card);
2832
		snd_card_free(card);

Return to bug 115837