Commit f9933487 authored by Ondrej Zary's avatar Ondrej Zary Committed by Takashi Iwai

ALSA: introduce snd-cmi8328: C-Media CMI8328 driver

Introduce snd-cmi8328 driver for C-Media CMI8328-based sound cards, such as
AudioExcel AV500.

It supports PCM playback and capture (full-duplex) through wss_lib, gameport,
OPL3 and MPU401. The AV500 card has onboard Dream wavetable synth connected
to the MPU401 port and Aux 1 input internally which works too.
The CDROM interface is not supported (as the drivers for these CDROMs were
removed from the kernel some time ago).

A separate driver is needed because CMI8328 is completely different chip to
CMI8329/CMI8330. It's configured by magic registers (there's no PnP). Sound is
provided by a real WSS codec (CS4231A) and the SB part is just a SB Pro
emulation (for DOS games, useless for Linux).

When SB is enabled, the CMI8328 chip disables access to the WSS codec,
emulates SoundBlaster on one side and outputs sound data to the codec - so SB
and WSS can't work together with this card. The WSS codec can do full duplex
by itself so there's no need for crazy things like snd-cmi8330 does
(combining SB and WSS parts into one driver).
Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ddf83485
...@@ -117,6 +117,18 @@ config SND_AZT2320 ...@@ -117,6 +117,18 @@ config SND_AZT2320
To compile this driver as a module, choose M here: the module To compile this driver as a module, choose M here: the module
will be called snd-azt2320. will be called snd-azt2320.
config SND_CMI8328
tristate "C-Media CMI8328"
select SND_WSS_LIB
select SND_OPL3_LIB
select SND_MPU401_UART
help
Say Y here to include support for soundcards based on the
C-Media CMI8328 chip.
To compile this driver as a module, choose M here: the module
will be called snd-cmi8328.
config SND_CMI8330 config SND_CMI8330
tristate "C-Media CMI8330" tristate "C-Media CMI8330"
select SND_WSS_LIB select SND_WSS_LIB
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
snd-adlib-objs := adlib.o snd-adlib-objs := adlib.o
snd-als100-objs := als100.o snd-als100-objs := als100.o
snd-azt2320-objs := azt2320.o snd-azt2320-objs := azt2320.o
snd-cmi8328-objs := cmi8328.o
snd-cmi8330-objs := cmi8330.o snd-cmi8330-objs := cmi8330.o
snd-es18xx-objs := es18xx.o snd-es18xx-objs := es18xx.o
snd-opl3sa2-objs := opl3sa2.o snd-opl3sa2-objs := opl3sa2.o
...@@ -16,6 +17,7 @@ snd-sscape-objs := sscape.o ...@@ -16,6 +17,7 @@ snd-sscape-objs := sscape.o
obj-$(CONFIG_SND_ADLIB) += snd-adlib.o obj-$(CONFIG_SND_ADLIB) += snd-adlib.o
obj-$(CONFIG_SND_ALS100) += snd-als100.o obj-$(CONFIG_SND_ALS100) += snd-als100.o
obj-$(CONFIG_SND_AZT2320) += snd-azt2320.o obj-$(CONFIG_SND_AZT2320) += snd-azt2320.o
obj-$(CONFIG_SND_CMI8328) += snd-cmi8328.o
obj-$(CONFIG_SND_CMI8330) += snd-cmi8330.o obj-$(CONFIG_SND_CMI8330) += snd-cmi8330.o
obj-$(CONFIG_SND_ES18XX) += snd-es18xx.o obj-$(CONFIG_SND_ES18XX) += snd-es18xx.o
obj-$(CONFIG_SND_OPL3SA2) += snd-opl3sa2.o obj-$(CONFIG_SND_OPL3SA2) += snd-opl3sa2.o
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment