aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorAriff Abdullah <ariff@FreeBSD.org>2006-01-13 04:54:34 +0000
committerAriff Abdullah <ariff@FreeBSD.org>2006-01-13 04:54:34 +0000
commit8c437e077b07e7083aae266260e600519fd32325 (patch)
tree14b058fd357c1857ec7de6f907a30d4d06cb1bd9 /sys/dev
parentf5eea0f5f2dc435ce4d167757f5fe579fccc5702 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/sound/pci/es137x.c17
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);