diff options
author | cg <cg@FreeBSD.org> | 2000-04-23 17:57:35 +0000 |
---|---|---|
committer | cg <cg@FreeBSD.org> | 2000-04-23 17:57:35 +0000 |
commit | 33a9f13a32a88e23c4bffbf39a386772586329fc (patch) | |
tree | adc17bf7f026439400b37e8d924de3eba0f90c61 /sys/dev/sound | |
parent | 88db00dc43c0cfb35ec085992e2117debea6339e (diff) | |
download | FreeBSD-src-33a9f13a32a88e23c4bffbf39a386772586329fc.zip FreeBSD-src-33a9f13a32a88e23c4bffbf39a386772586329fc.tar.gz |
maybe make cmi8330 work - no feedback yet
implement bass/treble for yamaha opl-sax chips
Diffstat (limited to 'sys/dev/sound')
-rw-r--r-- | sys/dev/sound/isa/mss.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/sys/dev/sound/isa/mss.c b/sys/dev/sound/isa/mss.c index 400c8b8..b076833 100644 --- a/sys/dev/sound/isa/mss.c +++ b/sys/dev/sound/isa/mss.c @@ -1371,12 +1371,12 @@ pnpmss_attach(device_t dev) mss->irq_rid = 0; mss->drq1_rid = 0; mss->drq2_rid = 1; + mss->bd_id = MD_CS42XX; switch (isa_get_logicalid(dev)) { case 0x0000630e: /* CSC0000 */ case 0x0001630e: /* CSC0100 */ mss->bd_flags |= BD_F_MSS_OFFSET; - mss->bd_id = MD_CS42XX; break; case 0x2100a865: /* YHM0021 */ @@ -1404,7 +1404,6 @@ pnpmss_attach(device_t dev) case 0x1022b839: /* NMX2210 */ mss->io_rid = 1; - mss->bd_id = MD_CS42XX; break; #if 0 @@ -1417,10 +1416,13 @@ pnpmss_attach(device_t dev) mss->bd_id = MD_GUSPNP; break; #endif + case 0x01000000: /* @@@0001 */ + mss->drq2_rid = -1; + break; + /* Unknown MSS default. We could let the CSC0000 stuff match too */ default: mss->bd_flags |= BD_F_MSS_OFFSET; - mss->bd_id = MD_CS42XX; break; } return mss_doattach(dev, mss); @@ -1637,7 +1639,8 @@ ymmix_init(snd_mixer *m) struct mss_info *mss = mix_getdevinfo(m); mssmix_init(m); - mix_setdevs(m, mix_getdevs(m) | SOUND_MASK_VOLUME | SOUND_MASK_MIC); + mix_setdevs(m, mix_getdevs(m) | SOUND_MASK_VOLUME | SOUND_MASK_MIC + | SOUND_MASK_BASS | SOUND_MASK_TREBLE); /* Set master volume */ conf_wr(mss, OPL3SAx_VOLUMEL, 7); conf_wr(mss, OPL3SAx_VOLUMER, 7); @@ -1649,7 +1652,7 @@ static int ymmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right) { struct mss_info *mss = mix_getdevinfo(m); - int t; + int t, l, r; switch (dev) { case SOUND_MIXER_VOLUME: @@ -1669,8 +1672,18 @@ ymmix_set(snd_mixer *m, unsigned dev, unsigned left, unsigned right) break; case SOUND_MIXER_BASS: + l = (left * 7) / 100; + r = (right * 7) / 100; + t = (r << 4) | l; + conf_wr(mss, OPL3SAx_BASS, t); + break; + case SOUND_MIXER_TREBLE: - /* Later maybe */ + l = (left * 7) / 100; + r = (right * 7) / 100; + t = (r << 4) | l; + conf_wr(mss, OPL3SAx_TREBLE, t); + break; default: mss_mixer_set(mss, dev, left, right); |