Comment 20 for bug 100114

Revision history for this message
TJ (tj) wrote :

I'm afraid I'm seeing no difference here. I had previously checked TCSEL because of the comment in the head of azx_init_chip(), and I had also made sure that azx_resume() was called, and in-turn was calling azx_init_chip().

I also put a check of the value of TCSEL in azx_init_chip() to see what value it had upon resume, and another at the end of azx_resume() to ensure the reset had been done.

... start-up ...
Jul 11 22:46:03 bagoas kernel: [ 17.736000] hda-intel: Allocated posbuf size=64
Jul 11 22:46:03 bagoas kernel: [ 17.736000] hda-intel: azx_init_chip: TCSEL=7
... Resume ...
Jul 11 22:50:33 bagoas kernel: [ 291.960000] hda-intel: azx_init_chip: TCSEL=7
Jul 11 22:50:33 bagoas kernel: [ 292.024000] hda-intel: azx_resume: TCSEL=0

With TCSEL confirmed as 0 I am still hearing the same problem after resume.

00000060 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00 |.p..............|

static void azx_init_chip(struct azx *chip)
{
 unsigned char reg;

 /* Clear bits 0-2 of PCI register TCSEL (at offset 0x44)
  * TCSEL == Traffic Class Select Register, which sets PCI express QOS
  * Ensuring these bits are 0 clears playback static on some HD Audio codecs
  */
 pci_read_config_byte (chip->pci, ICH6_PCIREG_TCSEL, &reg);
 pci_write_config_byte(chip->pci, ICH6_PCIREG_TCSEL, reg & 0xf8);
#ifdef DEBUG_RESUME
 snd_printk(KERN_DEBUG SFX "%s: TCSEL=%X\n", __FUNCTION__, reg);
#endif

static int azx_resume(struct pci_dev *pci)
{
 struct snd_card *card = pci_get_drvdata(pci);
 struct azx *chip = card->private_data;
#ifdef DEBUG_RESUME
 unsigned char reg;
#endif
...
#ifdef DEBUG_RESUME
 pci_read_config_byte (chip->pci, ICH6_PCIREG_TCSEL, &reg);
 snd_printk(KERN_DEBUG SFX "%s: TCSEL=%X\n", __FUNCTION__ , reg);
#endif

 return 0;
}