diff options
| author | Ariff Abdullah <ariff@FreeBSD.org> | 2006-01-13 04:54:34 +0000 |
|---|---|---|
| committer | Ariff Abdullah <ariff@FreeBSD.org> | 2006-01-13 04:54:34 +0000 |
| commit | 8c437e077b07e7083aae266260e600519fd32325 (patch) | |
| tree | 14b058fd357c1857ec7de6f907a30d4d06cb1bd9 /sys/dev | |
| parent | f5eea0f5f2dc435ce4d167757f5fe579fccc5702 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sound/pci/es137x.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/dev/sound/pci/es137x.c b/sys/dev/sound/pci/es137x.c index f8dfed3ca066..0f7f387b3933 100644 --- a/sys/dev/sound/pci/es137x.c +++ b/sys/dev/sound/pci/es137x.c @@ -794,18 +794,31 @@ es1370_init(struct es_info *es) int es1371_init(struct es_info *es) { - uint32_t cssr, devid, revid; + uint32_t cssr, devid, revid, subdev; int idx; ES_LOCK(es); /* This is NOT ES1370 */ es->escfg = ES_SET_IS_ES1370(es->escfg, 0); es->num = 0; - es->ctrl = CTRL_JYSTK_EN; es->sctrl = 0; cssr = 0; devid = pci_get_devid(es->dev); revid = pci_get_revid(es->dev); + subdev = (pci_get_subdevice(es->dev) << 16) | pci_get_subvendor(es->dev); + /* + * Joyport blacklist. Either we're facing with broken hardware + * or because this hardware need special (unknown) initialization + * procedures. + */ + switch (subdev) { + case 0x20001274: /* old Ensoniq */ + es->ctrl = 0; + break; + default: + es->ctrl = CTRL_JYSTK_EN; + break; + } if (devid == CT4730_PCI_ID) { /* XXX amplifier hack? */ es->ctrl |= (1 << 16); |
