es137x.c (8c437e077b07e7083aae266260e600519fd32325) es137x.c (851a904af5cd8e3633e18f70af19c49672a5f729)
1/*-
2 * Support the ENSONIQ AudioPCI board and Creative Labs SoundBlaster PCI
3 * boards based on the ES1370, ES1371 and ES1373 chips.
4 *
5 * Copyright (c) 1999 Russell Cattelan <cattelan@thebarn.com>
6 * Copyright (c) 1999 Cameron Grant <cg@freebsd.org>
7 * Copyright (c) 1998 by Joachim Kuebart. All rights reserved.
8 *

--- 1346 unchanged lines hidden (view full) ---

1355 devid = pci_get_devid(dev);
1356 revid = pci_get_revid(dev);
1357 es = pcm_getdevinfo(dev);
1358 if ((devid == ES1371_PCI_ID && revid == ES1371REV_ES1373_8) ||
1359 (devid == ES1371_PCI_ID && revid == ES1371REV_CT5880_A) ||
1360 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_C) ||
1361 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_D) ||
1362 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_E)) {
1/*-
2 * Support the ENSONIQ AudioPCI board and Creative Labs SoundBlaster PCI
3 * boards based on the ES1370, ES1371 and ES1373 chips.
4 *
5 * Copyright (c) 1999 Russell Cattelan <cattelan@thebarn.com>
6 * Copyright (c) 1999 Cameron Grant <cg@freebsd.org>
7 * Copyright (c) 1998 by Joachim Kuebart. All rights reserved.
8 *

--- 1346 unchanged lines hidden (view full) ---

1355 devid = pci_get_devid(dev);
1356 revid = pci_get_revid(dev);
1357 es = pcm_getdevinfo(dev);
1358 if ((devid == ES1371_PCI_ID && revid == ES1371REV_ES1373_8) ||
1359 (devid == ES1371_PCI_ID && revid == ES1371REV_CT5880_A) ||
1360 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_C) ||
1361 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_D) ||
1362 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_E)) {
1363 /* XXX: an user should be able to set this with a control tool,
1364 if not done before 7.0-RELEASE, this needs to be converted
1365 to a device specific sysctl "dev.pcm.X.yyy" via
1366 device_get_sysctl_*() as discussed on multimedia@ in msg-id
1367 <861wujij2q.fsf@xps.des.no> */
1363 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1364 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1368 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1369 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1365 OID_AUTO, "spdif_enabled",
1370 OID_AUTO, "_spdif_enabled",
1366 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1367 sysctl_es137x_spdif_enable, "I",
1368 "Enable S/PDIF output on primary playback channel");
1369 } else if (devid == ES1370_PCI_ID) {
1370 /*
1371 * Enable fixed rate sysctl if both DAC2 / ADC enabled.
1372 */
1373 if (es->ch[ES_DAC2].channel != NULL && es->ch[ES_ADC].channel != NULL) {
1371 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1372 sysctl_es137x_spdif_enable, "I",
1373 "Enable S/PDIF output on primary playback channel");
1374 } else if (devid == ES1370_PCI_ID) {
1375 /*
1376 * Enable fixed rate sysctl if both DAC2 / ADC enabled.
1377 */
1378 if (es->ch[ES_DAC2].channel != NULL && es->ch[ES_ADC].channel != NULL) {
1379 /* XXX: an user should be able to set this with a control tool,
1380 if not done before 7.0-RELEASE, this needs to be converted
1381 to a device specific sysctl "dev.pcm.X.yyy" via
1382 device_get_sysctl_*() as discussed on multimedia@ in msg-id
1383 <861wujij2q.fsf@xps.des.no> */
1374 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1375 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1384 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1385 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1376 OID_AUTO, "fixed_rate",
1386 OID_AUTO, "_fixed_rate",
1377 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1378 sysctl_es137x_fixed_rate, "I",
1379 "Enable fixed rate playback/recording");
1380 }
1381 /*
1382 * Enable single pcm mixer sysctl if both DAC1/2 enabled.
1383 */
1384 if (es->ch[ES_DAC1].channel != NULL && es->ch[ES_DAC2].channel != NULL) {
1387 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1388 sysctl_es137x_fixed_rate, "I",
1389 "Enable fixed rate playback/recording");
1390 }
1391 /*
1392 * Enable single pcm mixer sysctl if both DAC1/2 enabled.
1393 */
1394 if (es->ch[ES_DAC1].channel != NULL && es->ch[ES_DAC2].channel != NULL) {
1395 /* XXX: an user should be able to set this with a control tool,
1396 if not done before 7.0-RELEASE, this needs to be converted
1397 to a device specific sysctl "dev.pcm.X.yyy" via
1398 device_get_sysctl_*() as discussed on multimedia@ in msg-id
1399 <861wujij2q.fsf@xps.des.no> */
1385 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1386 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1400 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1401 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1387 OID_AUTO, "single_pcm_mixer",
1402 OID_AUTO, "_single_pcm_mixer",
1388 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1389 sysctl_es137x_single_pcm_mixer, "I",
1390 "Single PCM mixer controller for both DAC1/DAC2");
1391 }
1392 }
1393 if (resource_int_value(device_get_name(dev),
1394 device_get_unit(dev), "latency_timer", &r) == 0 &&
1395 !(r < 0 || r > 255))
1396 pci_write_config(dev, PCIR_LATTIMER, r, 1);
1403 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1404 sysctl_es137x_single_pcm_mixer, "I",
1405 "Single PCM mixer controller for both DAC1/DAC2");
1406 }
1407 }
1408 if (resource_int_value(device_get_name(dev),
1409 device_get_unit(dev), "latency_timer", &r) == 0 &&
1410 !(r < 0 || r > 255))
1411 pci_write_config(dev, PCIR_LATTIMER, r, 1);
1412 /* XXX: this needs to be converted to a device specific sysctl
1413 "dev.pcm.X.yyy" via device_get_sysctl_*() as discussed on
1414 multimedia@ in msg-id <861wujij2q.fsf@xps.des.no> */
1397 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1398 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1399 OID_AUTO, "latency_timer",
1400 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1401 sysctl_es137x_latency_timer, "I",
1402 "PCI Latency Timer configuration");
1403#endif /* SND_DYNSYSCTL */
1404}

--- 208 unchanged lines hidden ---
1415 SYSCTL_ADD_PROC(snd_sysctl_tree(dev),
1416 SYSCTL_CHILDREN(snd_sysctl_tree_top(dev)),
1417 OID_AUTO, "latency_timer",
1418 CTLTYPE_INT | CTLFLAG_RW, dev, sizeof(dev),
1419 sysctl_es137x_latency_timer, "I",
1420 "PCI Latency Timer configuration");
1421#endif /* SND_DYNSYSCTL */
1422}

--- 208 unchanged lines hidden ---