Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 170366
b: refs/heads/master
c: 362bc24
h: refs/heads/master
v: v3
  • Loading branch information
Clemens Ladisch authored and Takashi Iwai committed Sep 28, 2009
1 parent b56d97e commit c243758
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 87b61902ce3dec23a2d8256b9cfcf4e28786a320
refs/heads/master: 362bc24d6746bcd49bb4853fc5aa7d4c728b3f9e
23 changes: 23 additions & 0 deletions trunk/sound/pci/oxygen/oxygen_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,28 @@ static void oxygen_restore_eeprom(struct oxygen *chip,
}
}

static void pci_bridge_magic(void)
{
struct pci_dev *pci = NULL;
u32 tmp;

for (;;) {
/* If there is any Pericom PI7C9X110 PCI-E/PCI bridge ... */
pci = pci_get_device(0x12d8, 0xe110, pci);
if (!pci)
break;
/*
* ... configure its secondary internal arbiter to park to
* the secondary port, instead of to the last master.
*/
if (!pci_read_config_dword(pci, 0x40, &tmp)) {
tmp |= 1;
pci_write_config_dword(pci, 0x40, tmp);
}
/* Why? Try asking C-Media. */
}
}

static void oxygen_init(struct oxygen *chip)
{
unsigned int i;
Expand Down Expand Up @@ -585,6 +607,7 @@ int oxygen_pci_probe(struct pci_dev *pci, int index, char *id,
snd_card_set_dev(card, &pci->dev);
card->private_free = oxygen_card_free;

pci_bridge_magic();
oxygen_init(chip);
chip->model.init(chip);

Expand Down

0 comments on commit c243758

Please sign in to comment.