Merge tag 'sound-4.15-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 15 Nov 2017 02:01:46 +0000 (18:01 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 15 Nov 2017 02:01:46 +0000 (18:01 -0800)
Pull sound updates from Takashi Iwai:
 "There are no big surprising changes in this cycle, yet not too boring,
  either. The biggest change from diffstat POV is the removal of the
  legacy OSS driver codes that have been already disabled for a long
  time. This will bring a few trivial merge conflicts.

  As new features in ASoC side, there are two things: a new AC97 bus
  implementation and AMD Stony platform support. Both include the
  relevant changes shared with other subsystems, e.g. AC97 MFD changes
  and DRM AMD changes.

  Some other highlighted topics are:

   - A bunch of USB-audio drivers got the hardening against the
     malicious device accesses with a new helper code for endpoint
     sanity check

   - Lots of cleanups for ASoC Intel platform code, including support
     for their open source audio firmware

   - Continued ASoC core componentization works

   - Support for scaling MCLK with sample rate in ASoC simple-card

   - Stabler PCM hot-unplug capability, especially for ASoC usages"

* tag 'sound-4.15-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (302 commits)
  Documentation: sound: hd-audio: notes.rst
  ASoC: bcm2835: Support left/right justified and DSP modes
  ASoC: bcm2835: Enforce full symmetry
  ASoC: bcm2835: Support additional samplerates up to 384kHz
  ASoC: bcm2835: Add support for TDM modes
  ASoC: add mclk-fs support to audio graph card
  ASoC: add mclk-fs to audio graph card binding
  ASoC: rt5514: work around link error
  ASoC: rt5514: mark PM functions as __maybe_unused
  ASoC: rt5663: Check the JD status in the button pushing
  ASoC: amd: Modified DMA transfer Mechanism for Playback
  ASoC: rt5645: Wait for 400msec before concluding on value of RT5645_VENDOR_ID2
  ASoC: sun4i-codec: fixed 32bit audio capture support for H3/H2+
  ASoC: da7213: add support for DSP modes
  ASoC: sun8i-codec: Add a comment on the LRCK inversion
  ASoC: sun8i-codec: Set the BCLK divider
  ASoC: rt5663: Delay and retry reading rt5663 ID register
  ASoC: amd: use do_div rather than 64 bit division to fix 32 bit builds
  ASoC: cs42l56: Fix reset GPIO name in example DT binding
  ASoC: rt5514-spi: check irq status to schedule data copy in resume function
  ...

345 files changed:
Documentation/devicetree/bindings/mfd/arizona.txt
Documentation/devicetree/bindings/sound/audio-graph-card.txt
Documentation/devicetree/bindings/sound/audio-graph-scu-card.txt
Documentation/devicetree/bindings/sound/cs42l56.txt
Documentation/devicetree/bindings/sound/rt5514.txt
Documentation/devicetree/bindings/sound/rt5663.txt
Documentation/devicetree/bindings/sound/sgtl5000.txt
Documentation/devicetree/bindings/sound/st,stm32-sai.txt
Documentation/devicetree/bindings/sound/tfa9879.txt [new file with mode: 0644]
Documentation/devicetree/bindings/sound/wlf,arizona.txt [new file with mode: 0644]
Documentation/sound/hd-audio/models.rst
Documentation/sound/oss/ALS [deleted file]
Documentation/sound/oss/AudioExcelDSP16 [deleted file]
Documentation/sound/oss/CMI8330 [deleted file]
Documentation/sound/oss/ESS [deleted file]
Documentation/sound/oss/ESS1868 [deleted file]
Documentation/sound/oss/Introduction [deleted file]
Documentation/sound/oss/MultiSound [deleted file]
Documentation/sound/oss/OPL3 [deleted file]
Documentation/sound/oss/Opti [deleted file]
Documentation/sound/oss/PAS16 [deleted file]
Documentation/sound/oss/PSS [deleted file]
Documentation/sound/oss/PSS-updates [deleted file]
Documentation/sound/oss/README.OSS [deleted file]
Documentation/sound/oss/README.modules [deleted file]
Documentation/sound/oss/README.ymfsb [deleted file]
Documentation/sound/oss/SoundPro [deleted file]
Documentation/sound/oss/Soundblaster [deleted file]
Documentation/sound/oss/Tropez+ [deleted file]
Documentation/sound/oss/VIBRA16 [deleted file]
Documentation/sound/oss/WaveArtist [deleted file]
Documentation/sound/oss/btaudio [deleted file]
Documentation/sound/oss/mwave [deleted file]
Documentation/sound/oss/oss-parameters.txt [deleted file]
Documentation/sound/oss/ultrasound [deleted file]
MAINTAINERS
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
drivers/gpu/drm/amd/include/amd_shared.h
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/wm97xx-core.c
drivers/mfd/Kconfig
drivers/mfd/Makefile
drivers/mfd/arizona-core.c
drivers/mfd/wm97xx-core.c [new file with mode: 0644]
drivers/usb/core/urb.c
include/drm/amd_asic_type.h [new file with mode: 0644]
include/linux/mfd/arizona/pdata.h
include/linux/mfd/wm97xx.h [new file with mode: 0644]
include/linux/usb.h
include/sound/ac97/codec.h [new file with mode: 0644]
include/sound/ac97/compat.h [new file with mode: 0644]
include/sound/ac97/controller.h [new file with mode: 0644]
include/sound/ac97/regs.h [new file with mode: 0644]
include/sound/ac97_codec.h
include/sound/core.h
include/sound/hdaudio.h
include/sound/pxa2xx-lib.h
include/sound/rt5651.h
include/sound/rt5663.h
include/sound/snd_wavefront.h
include/sound/soc-acpi-intel-match.h [new file with mode: 0644]
include/sound/soc-acpi.h [new file with mode: 0644]
include/sound/soc.h
sound/Kconfig
sound/Makefile
sound/ac97/Kconfig [new file with mode: 0644]
sound/ac97/Makefile [new file with mode: 0644]
sound/ac97/ac97_core.h [new file with mode: 0644]
sound/ac97/bus.c [new file with mode: 0644]
sound/ac97/codec.c [new file with mode: 0644]
sound/ac97/snd_ac97_compat.c [new file with mode: 0644]
sound/arm/pxa2xx-ac97-lib.c
sound/arm/pxa2xx-ac97.c
sound/core/hrtimer.c
sound/core/hwdep.c
sound/core/init.c
sound/core/jack.c
sound/core/pcm.c
sound/core/pcm_native.c
sound/core/seq/seq_clientmgr.c
sound/core/timer.c
sound/drivers/aloop.c
sound/drivers/dummy.c
sound/drivers/mpu401/mpu401_uart.c
sound/drivers/mtpav.c
sound/drivers/opl3/opl3_midi.c
sound/drivers/opl3/opl3_seq.c
sound/drivers/opl3/opl3_voice.h
sound/drivers/serial-u16550.c
sound/hda/hdac_controller.c
sound/hda/hdac_device.c
sound/hda/hdac_sysfs.c
sound/hda/local.h
sound/i2c/other/ak4117.c
sound/isa/sb/emu8000_pcm.c
sound/isa/sb/sb8_midi.c
sound/isa/wavefront/wavefront_midi.c
sound/oss/CHANGELOG [deleted file]
sound/oss/Kconfig [deleted file]
sound/oss/Makefile [deleted file]
sound/oss/README.FIRST [deleted file]
sound/oss/ad1848.c [deleted file]
sound/oss/ad1848.h [deleted file]
sound/oss/ad1848_mixer.h [deleted file]
sound/oss/aedsp16.c [deleted file]
sound/oss/audio.c [deleted file]
sound/oss/bin2hex.c [deleted file]
sound/oss/coproc.h [deleted file]
sound/oss/dev_table.c [deleted file]
sound/oss/dev_table.h [deleted file]
sound/oss/dmabuf.c [deleted file]
sound/oss/hex2hex.c [deleted file]
sound/oss/kahlua.c [deleted file]
sound/oss/midi_ctrl.h [deleted file]
sound/oss/midi_synth.c [deleted file]
sound/oss/midi_synth.h [deleted file]
sound/oss/midibuf.c [deleted file]
sound/oss/mpu401.c [deleted file]
sound/oss/mpu401.h [deleted file]
sound/oss/msnd.c [deleted file]
sound/oss/msnd.h [deleted file]
sound/oss/msnd_classic.c [deleted file]
sound/oss/msnd_classic.h [deleted file]
sound/oss/msnd_pinnacle.c [deleted file]
sound/oss/msnd_pinnacle.h [deleted file]
sound/oss/opl3.c [deleted file]
sound/oss/opl3_hw.h [deleted file]
sound/oss/os.h [deleted file]
sound/oss/pas2.h [deleted file]
sound/oss/pas2_card.c [deleted file]
sound/oss/pas2_midi.c [deleted file]
sound/oss/pas2_mixer.c [deleted file]
sound/oss/pas2_pcm.c [deleted file]
sound/oss/pss.c [deleted file]
sound/oss/sb.h [deleted file]
sound/oss/sb_audio.c [deleted file]
sound/oss/sb_card.c [deleted file]
sound/oss/sb_card.h [deleted file]
sound/oss/sb_common.c [deleted file]
sound/oss/sb_ess.c [deleted file]
sound/oss/sb_ess.h [deleted file]
sound/oss/sb_midi.c [deleted file]
sound/oss/sb_mixer.c [deleted file]
sound/oss/sb_mixer.h [deleted file]
sound/oss/sequencer.c [deleted file]
sound/oss/sleep.h [deleted file]
sound/oss/sound_calls.h [deleted file]
sound/oss/sound_config.h [deleted file]
sound/oss/sound_firmware.h [deleted file]
sound/oss/sound_timer.c [deleted file]
sound/oss/soundcard.c [deleted file]
sound/oss/soundvers.h [deleted file]
sound/oss/swarm_cs4297a.c [deleted file]
sound/oss/sys_timer.c [deleted file]
sound/oss/trix.c [deleted file]
sound/oss/tuning.h [deleted file]
sound/oss/uart401.c [deleted file]
sound/oss/uart6850.c [deleted file]
sound/oss/ulaw.h [deleted file]
sound/oss/v_midi.c [deleted file]
sound/oss/v_midi.h [deleted file]
sound/oss/vidc.c [deleted file]
sound/oss/vidc.h [deleted file]
sound/oss/vidc_fill.S [deleted file]
sound/oss/waveartist.c [deleted file]
sound/oss/waveartist.h [deleted file]
sound/pci/asihpi/asihpi.c
sound/pci/au88x0/au88x0_core.c
sound/pci/ctxfi/cttimer.c
sound/pci/echoaudio/midi.c
sound/pci/emu10k1/emuproc.c
sound/pci/ens1370.c
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_generic.c
sound/pci/hda/patch_ca0132.c
sound/pci/hda/patch_realtek.c
sound/pci/ice1712/ice1712.c
sound/pci/ice1712/ice1712.h
sound/pci/korg1212/korg1212.c
sound/pci/oxygen/xonar_dg.h
sound/pci/oxygen/xonar_dg_mixer.c
sound/pci/rme9652/hdsp.c
sound/pci/rme9652/hdspm.c
sound/sh/aica.c
sound/soc/Kconfig
sound/soc/Makefile
sound/soc/amd/Kconfig
sound/soc/amd/Makefile
sound/soc/amd/acp-pcm-dma.c
sound/soc/amd/acp-rt5645.c [new file with mode: 0644]
sound/soc/amd/acp.h
sound/soc/bcm/bcm2835-i2s.c
sound/soc/bcm/cygnus-ssp.c
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/codecs/arizona.c
sound/soc/codecs/arizona.h
sound/soc/codecs/cs43130.c
sound/soc/codecs/cs47l24.c
sound/soc/codecs/da7213.c
sound/soc/codecs/da7213.h
sound/soc/codecs/hdac_hdmi.c
sound/soc/codecs/hdmi-codec.c
sound/soc/codecs/max98090.c
sound/soc/codecs/max98925.c
sound/soc/codecs/max98927.c
sound/soc/codecs/max98927.h
sound/soc/codecs/msm8916-wcd-analog.c
sound/soc/codecs/msm8916-wcd-digital.c
sound/soc/codecs/pcm512x-i2c.c
sound/soc/codecs/pcm512x-spi.c
sound/soc/codecs/pcm512x.c
sound/soc/codecs/pcm512x.h
sound/soc/codecs/rl6231.c
sound/soc/codecs/rt5514-spi.c
sound/soc/codecs/rt5514.c
sound/soc/codecs/rt5645.c
sound/soc/codecs/rt5651.c
sound/soc/codecs/rt5651.h
sound/soc/codecs/rt5659.c
sound/soc/codecs/rt5663.c
sound/soc/codecs/rt5670.c
sound/soc/codecs/rt5670.h
sound/soc/codecs/tas571x.c
sound/soc/codecs/tfa9879.c
sound/soc/codecs/tlv320aic23.c
sound/soc/codecs/tlv320aic31xx.c
sound/soc/codecs/tpa6130a2.c
sound/soc/codecs/ts3a227e.c
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm5110.c
sound/soc/codecs/wm8741.c
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8993.c
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm8997.c
sound/soc/codecs/wm8998.c
sound/soc/codecs/wm9705.c
sound/soc/codecs/wm9712.c
sound/soc/codecs/wm9713.c
sound/soc/davinci/davinci-mcasp.c
sound/soc/dwc/Kconfig
sound/soc/fsl/fsl-asoc-card.c
sound/soc/fsl/fsl_spdif.c
sound/soc/fsl/fsl_ssi.c
sound/soc/generic/audio-graph-card.c
sound/soc/img/img-i2s-in.c
sound/soc/img/img-i2s-out.c
sound/soc/img/img-parallel-out.c
sound/soc/img/img-spdif-in.c
sound/soc/img/img-spdif-out.c
sound/soc/intel/Kconfig
sound/soc/intel/Makefile
sound/soc/intel/atom/sst-mfld-platform-compress.c
sound/soc/intel/atom/sst-mfld-platform.h
sound/soc/intel/atom/sst/sst_acpi.c
sound/soc/intel/atom/sst/sst_loader.c
sound/soc/intel/atom/sst/sst_stream.c
sound/soc/intel/boards/Kconfig [new file with mode: 0644]
sound/soc/intel/boards/bxt_da7219_max98357a.c
sound/soc/intel/boards/bytcht_da7213.c
sound/soc/intel/boards/bytcht_es8316.c
sound/soc/intel/boards/bytcht_nocodec.c
sound/soc/intel/boards/bytcr_rt5640.c
sound/soc/intel/boards/bytcr_rt5651.c
sound/soc/intel/boards/cht_bsw_max98090_ti.c
sound/soc/intel/boards/cht_bsw_rt5645.c
sound/soc/intel/boards/cht_bsw_rt5672.c
sound/soc/intel/boards/kbl_rt5663_max98927.c
sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
sound/soc/intel/boards/skl_nau88l25_max98357a.c
sound/soc/intel/boards/skl_nau88l25_ssm4567.c
sound/soc/intel/common/Makefile
sound/soc/intel/common/soc-acpi-intel-byt-match.c [new file with mode: 0644]
sound/soc/intel/common/soc-acpi-intel-cht-match.c [new file with mode: 0644]
sound/soc/intel/common/soc-acpi-intel-hsw-bdw-match.c [new file with mode: 0644]
sound/soc/intel/common/sst-acpi.c
sound/soc/intel/common/sst-acpi.h [deleted file]
sound/soc/intel/common/sst-firmware.c
sound/soc/intel/skylake/skl-messages.c
sound/soc/intel/skylake/skl-nhlt.c
sound/soc/intel/skylake/skl-pcm.c
sound/soc/intel/skylake/skl-sst-utils.c
sound/soc/intel/skylake/skl-topology.c
sound/soc/intel/skylake/skl-topology.h
sound/soc/intel/skylake/skl.c
sound/soc/intel/skylake/skl.h
sound/soc/kirkwood/kirkwood-dma.c
sound/soc/kirkwood/kirkwood.h
sound/soc/omap/ams-delta.c
sound/soc/omap/omap-hdmi-audio.c
sound/soc/pxa/pxa2xx-ac97.c
sound/soc/qcom/lpass-platform.c
sound/soc/rockchip/rk3399_gru_sound.c
sound/soc/rockchip/rockchip_i2s.c
sound/soc/samsung/i2s.c
sound/soc/samsung/i2s.h
sound/soc/samsung/tm2_wm5110.c
sound/soc/sh/fsi.c
sound/soc/sh/rcar/adg.c
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/ctu.c
sound/soc/sh/rcar/dma.c
sound/soc/sh/rcar/dvc.c
sound/soc/sh/rcar/mix.c
sound/soc/sh/rcar/rsnd.h
sound/soc/sh/rcar/ssi.c
sound/soc/soc-acpi.c [moved from sound/soc/intel/common/sst-match-acpi.c with 63% similarity]
sound/soc/soc-compress.c
sound/soc/soc-core.c
sound/soc/soc-dapm.c
sound/soc/soc-io.c
sound/soc/soc-pcm.c
sound/soc/stm/stm32_sai.c
sound/soc/stm/stm32_sai.h
sound/soc/stm/stm32_sai_sub.c
sound/soc/stm/stm32_spdifrx.c
sound/soc/sunxi/sun4i-codec.c
sound/soc/sunxi/sun8i-codec.c
sound/soc/zte/zx-spdif.c
sound/synth/emux/emux.c
sound/synth/emux/emux_oss.c
sound/synth/emux/emux_synth.c
sound/synth/emux/emux_voice.h
sound/usb/6fire/chip.c
sound/usb/bcd2000/bcd2000.c
sound/usb/caiaq/device.c
sound/usb/caiaq/input.c
sound/usb/hiface/pcm.c
sound/usb/line6/capture.c
sound/usb/line6/capture.h
sound/usb/line6/driver.c
sound/usb/line6/driver.h
sound/usb/line6/midi.c
sound/usb/line6/playback.c
sound/usb/line6/playback.h
sound/usb/line6/pod.c
sound/usb/line6/podhd.c
sound/usb/line6/toneport.c
sound/usb/line6/variax.c
sound/usb/midi.c
sound/usb/quirks.c
sound/usb/usx2y/usb_stream.c
sound/usb/usx2y/usbusx2y.c
sound/usb/usx2y/usbusx2yaudio.c

index b37bdde5cfda3e959887fe5ed434a7a4697a7bdf..bdd017686ea5a082faf99e389b48a624074471cc 100644 (file)
@@ -65,45 +65,6 @@ Optional properties:
     a value that is out of range for a 16 bit register then the chip default
     will be used. If present exactly five values must be specified.
 
-  - wlf,inmode : A list of INn_MODE register values, where n is the number
-    of input signals. Valid values are 0 (Differential), 1 (Single-ended) and
-    2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default.
-    If present, values must be specified less than or equal to the number of
-    input signals. If values less than the number of input signals, elements
-    that have not been specified are set to 0 by default. Entries are:
-    <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997)
-    <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814)
-  - wlf,out-mono : A list of boolean values indicating whether each output is
-    mono or stereo. Position within the list indicates the output affected
-    (eg. First entry in the list corresponds to output 1). A non-zero value
-    indicates a mono output. If present, the number of values should be less
-    than or equal to the number of outputs, if less values are supplied the
-    additional outputs will be treated as stereo.
-
-  - wlf,dmic-ref : DMIC reference voltage source for each input, can be
-    selected from either MICVDD or one of the MICBIAS's, defines
-    (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If
-    present, the number of values should be less than or equal to the
-    number of inputs, unspecified inputs will use the chip default.
-
-  - wlf,max-channels-clocked : The maximum number of channels to be clocked on
-    each AIF, useful for I2S systems with multiple data lines being mastered.
-    Specify one cell for each AIF to be configured, specify zero for AIFs that
-    should be handled normally.
-    If present, number of cells must be less than or equal to the number of
-    AIFs. If less than the number of AIFs, for cells that have not been
-    specified the corresponding AIFs will be treated as default setting.
-
-  - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6).
-    See the datasheet for values.
-    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
-      wm8998, wm1814)
-
-  - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).
-    See the datasheet for values.
-    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
-    wm8998, wm1814)
-
   - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if
     they are being externally supplied. As covered in
     Documentation/devicetree/bindings/regulator/regulator.txt
@@ -112,6 +73,7 @@ Optional properties:
 Also see child specific device properties:
   Regulator - ../regulator/arizona-regulator.txt
   Extcon    - ../extcon/extcon-arizona.txt
+  Sound     - ../sound/arizona.txt
 
 Example:
 
index 6e6720aa33f19b03c81db761413db684267acc73..d04ea3b1a1dd5d7710da9c25b76372a8aadb6347 100644 (file)
@@ -17,6 +17,7 @@ Below are same as Simple-Card.
 - bitclock-master
 - bitclock-inversion
 - frame-inversion
+- mclk-fs
 - dai-tdm-slot-num
 - dai-tdm-slot-width
 - clocks / system-clock-frequency
index 8b8afe9fcb315891b0e321152bbf56eefd5c6e30..441dd6f29df13ba987316c5b6a4102c7bf73e636 100644 (file)
@@ -43,7 +43,7 @@ Example 1. Sampling Rate Conversion
                label = "sound-card";
                prefix = "codec";
                routing = "codec Playback", "DAI0 Playback",
-                       "codec Playback", "DAI1 Playback";
+                         "DAI0 Capture",   "codec Capture";
                convert-rate = <48000>;
 
                dais = <&cpu_port>;
@@ -79,7 +79,8 @@ Example 2. 2 CPU 1 Codec (Mixing)
                label = "sound-card";
                prefix = "codec";
                routing = "codec Playback", "DAI0 Playback",
-                       "codec Playback", "DAI1 Playback";
+                         "codec Playback", "DAI1 Playback",
+                         "DAI0 Capture",   "codec Capture";
                convert-rate = <48000>;
 
                dais = <&cpu_port0
index 4feb0eb27ea4b66de5f8b9bc95173a87847107b6..4ba520a28ae8fcafb286819fb0123c9228df4f68 100644 (file)
@@ -55,7 +55,7 @@ Example:
 codec: codec@4b {
        compatible = "cirrus,cs42l56";
        reg = <0x4b>;
-       gpio-reset = <&gpio 10 0>;
+       cirrus,gpio-nreset = <&gpio 10 0>;
        cirrus,chgfreq-divisor = <0x05>;
        cirrus.ain1_ref_cfg;
        cirrus,micbias-lvl = <5>;
index 929ca6756b02314ca44c9e8786ab32637a3d2294..4f33b0d96afeb106bb457ed071ab3f4779d80ec5 100644 (file)
@@ -1,22 +1,27 @@
 RT5514 audio CODEC
 
-This device supports I2C only.
+This device supports both I2C and SPI.
 
 Required properties:
 
 - compatible : "realtek,rt5514".
 
-- reg : The I2C address of the device.
+- reg : the I2C address of the device for I2C, the chip select
+        number for SPI.
 
 Optional properties:
 
 - clocks: The phandle of the master clock to the CODEC
 - clock-names: Should be "mclk"
 
+- interrupt-parent: The phandle for the interrupt controller.
+- interrupts: The interrupt number to the cpu. The interrupt specifier format
+             depends on the interrupt controller.
+
 - realtek,dmic-init-delay-ms
-  Set the DMIC initial delay (ms) to wait it ready.
+  Set the DMIC initial delay (ms) to wait it ready for I2C.
 
-Pins on the device (for linking into audio routes) for RT5514:
+Pins on the device (for linking into audio routes) for I2C:
 
   * DMIC1L
   * DMIC1R
index ff381718c51755b5d3cb06ac7c0e3ae1a1c85f48..497bcfc58b712173b05ce876600f1595a3d20125 100644 (file)
@@ -19,6 +19,22 @@ Optional properties:
   Based on the different PCB layout, add the manual offset value to
   compensate the DC offset for each L and R channel, and they are different
   between headphone and headset.
+- "realtek,impedance_sensing_num"
+  The matrix row number of the impedance sensing table.
+  If the value is 0, it means the impedance sensing is not supported.
+- "realtek,impedance_sensing_table"
+  The matrix rows of the impedance sensing table are consisted by impedance
+  minimum, impedance maximun, volume, DC offset w/o and w/ mic of each L and
+  R channel accordingly. Example is shown as following.
+  <   0    300  7  0xffd160  0xffd1c0  0xff8a10  0xff8ab0
+    301  65535  4  0xffe470  0xffe470  0xffb8e0  0xffb8e0>
+  The first and second column are defined for the impedance range. If the
+  detected impedance value is in the range, then the volume value of the
+  third column will be set to codec. In our codec design, each volume value
+  should compensate different DC offset to avoid the pop sound, and it is
+  also different between headphone and headset. In the example, the
+  "realtek,impedance_sensing_num" is 2. It means that there are 2 ranges of
+  impedance in the impedance sensing function.
 
 Pins on the device (for linking into audio routes) for RT5663:
 
index 7a73a9d62015ecc600af3c3f1c69f001b180b410..060cb4a3b47e0c942268b43be8016464ec344b1e 100644 (file)
@@ -37,7 +37,7 @@ VDDIO         1.8V            2.5V            3.3V
 
 Example:
 
-codec: sgtl5000@0a {
+codec: sgtl5000@a {
        compatible = "fsl,sgtl5000";
        reg = <0x0a>;
        clocks = <&clks 150>;
index f1c5ae59e7c99f8f6117428f4c3de33aa5eb9a16..1f9cd7095337881b5ee97ef51e9143efcbc0574e 100644 (file)
@@ -10,13 +10,21 @@ Required properties:
   - reg: Base address and size of SAI common register set.
   - clocks: Must contain phandle and clock specifier pairs for each entry
        in clock-names.
-  - clock-names: Must contain "x8k" and "x11k"
+  - clock-names: Must contain "pclk" "x8k" and "x11k"
+       "pclk": Clock which feeds the peripheral bus interface.
+               Mandatory for "st,stm32h7-sai" compatible.
+               Not used for "st,stm32f4-sai" compatible.
        "x8k": SAI parent clock for sampling rates multiple of 8kHz.
        "x11k": SAI parent clock for sampling rates multiple of 11.025kHz.
   - interrupts: cpu DAI interrupt line shared by SAI sub-blocks
 
 Optional properties:
   - resets: Reference to a reset controller asserting the SAI
+  - st,sync: specify synchronization mode.
+       By default SAI sub-block is in asynchronous mode.
+       This property sets SAI sub-block as slave of another SAI sub-block.
+       Must contain the phandle and index of the sai sub-block providing
+       the synchronization.
 
 SAI subnodes:
 Two subnodes corresponding to SAI sub-block instances A et B can be defined.
@@ -52,8 +60,8 @@ sai1: sai1@40015800 {
        #size-cells = <1>;
        ranges = <0 0x40015800 0x400>;
        reg = <0x40015800 0x4>;
-       clocks = <&rcc PLL1_Q>, <&rcc PLL2_P>;
-       clock-names = "x8k", "x11k";
+       clocks = <&rcc SAI1_CK>, <&rcc PLL1_Q>, <&rcc PLL2_P>;
+       clock-names = "pclk", "x8k", "x11k";
        interrupts = <87>;
 
        sai1a: audio-controller@40015804 {
diff --git a/Documentation/devicetree/bindings/sound/tfa9879.txt b/Documentation/devicetree/bindings/sound/tfa9879.txt
new file mode 100644 (file)
index 0000000..23ba522
--- /dev/null
@@ -0,0 +1,23 @@
+NXP TFA9879 class-D audio amplifier
+
+Required properties:
+
+- compatible : "nxp,tfa9879"
+
+- reg : the I2C address of the device
+
+Example:
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       codec: tfa9879@6c {
+               #sound-dai-cells = <0>;
+               compatible = "nxp,tfa9879";
+               reg = <0x6c>;
+        };
+};
+
diff --git a/Documentation/devicetree/bindings/sound/wlf,arizona.txt b/Documentation/devicetree/bindings/sound/wlf,arizona.txt
new file mode 100644 (file)
index 0000000..e172c62
--- /dev/null
@@ -0,0 +1,53 @@
+Cirrus Logic Arizona class audio SoCs
+
+These devices are audio SoCs with extensive digital capabilities and a range
+of analogue I/O.
+
+This document lists sound specific bindings, see the primary binding
+document:
+  ../mfd/arizona.txt
+
+Optional properties:
+
+  - wlf,inmode : A list of INn_MODE register values, where n is the number
+    of input signals. Valid values are 0 (Differential), 1 (Single-ended) and
+    2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default.
+    If present, values must be specified less than or equal to the number of
+    input signals. If values less than the number of input signals, elements
+    that have not been specified are set to 0 by default. Entries are:
+    <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997)
+    <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814)
+  - wlf,out-mono : A list of boolean values indicating whether each output is
+    mono or stereo. Position within the list indicates the output affected
+    (eg. First entry in the list corresponds to output 1). A non-zero value
+    indicates a mono output. If present, the number of values should be less
+    than or equal to the number of outputs, if less values are supplied the
+    additional outputs will be treated as stereo.
+
+  - wlf,dmic-ref : DMIC reference voltage source for each input, can be
+    selected from either MICVDD or one of the MICBIAS's, defines
+    (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If
+    present, the number of values should be less than or equal to the
+    number of inputs, unspecified inputs will use the chip default.
+
+  - wlf,max-channels-clocked : The maximum number of channels to be clocked on
+    each AIF, useful for I2S systems with multiple data lines being mastered.
+    Specify one cell for each AIF to be configured, specify zero for AIFs that
+    should be handled normally.
+    If present, number of cells must be less than or equal to the number of
+    AIFs. If less than the number of AIFs, for cells that have not been
+    specified the corresponding AIFs will be treated as default setting.
+
+  - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6).
+    See the datasheet for values.
+    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
+      wm8998, wm1814)
+
+  - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).
+    See the datasheet for values.
+    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
+    wm8998, wm1814)
+
+  - wlf,out-volume-limit : The volume limit value that should be applied to each
+    output channel. See the datasheet for exact values. Channels are specified
+    in the order OUT1L, OUT1R, OUT2L, OUT2R, etc.
index 773d2bfacc6cc6b8e714fd89c249296d647d3f1f..1fee5a4f6660b9e15d10e3aed1cd1d2d94283a76 100644 (file)
@@ -82,6 +82,8 @@ tpt460
     Lenovo Thinkpad T460/560 setup
 dual-codecs
     Lenovo laptops with dual codecs
+alc700-ref
+    Intel reference board with ALC700 codec
 
 ALC66x/67x/892
 ==============
diff --git a/Documentation/sound/oss/ALS b/Documentation/sound/oss/ALS
deleted file mode 100644 (file)
index bf10bed..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-ALS-007/ALS-100/ALS-200 based sound cards
-=========================================
-
-Support for sound cards based around the Avance Logic
-ALS-007/ALS-100/ALS-200 chip is included.  These chips are a single
-chip PnP sound solution which is mostly hardware compatible with the
-Sound Blaster 16 card, with most differences occurring in the use of
-the mixer registers.  For this reason the ALS code is integrated
-as part of the Sound Blaster 16 driver (adding only 800 bytes to the
-SB16 driver).
-
-To use an ALS sound card under Linux, enable the following options as
-modules in the sound configuration section of the kernel config:
-  - 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
-  - FM synthesizer (YM3812/OPL-3) support 
-  - standalone MPU401 support may be required for some cards; for the
-    ALS-007, when using isapnptools, it is required
-Since the ALS-007/100/200 are PnP cards, ISAPnP support should probably be
-compiled in.  If kernel level PnP support is not included, isapnptools will
-be required to configure the card before the sound modules are loaded.
-
-When using kernel level ISAPnP, the kernel should correctly identify and
-configure all resources required by the card when the "sb" module is
-inserted.  Note that the ALS-007 does not have a 16 bit DMA channel and that
-the MPU401 interface on this card uses a different interrupt to the audio
-section.  This should all be correctly configured by the kernel; if problems
-with the MPU401 interface surface, try using the standalone MPU401 module,
-passing "0" as the "sb" module's "mpu_io" module parameter to prevent the
-soundblaster driver attempting to register the MPU401 itself.  The onboard
-synth device can be accessed using the "opl3" module.
-
-If isapnptools is used to wake up the sound card (as in 2.2.x), the settings
-of the card's resources should be passed to the kernel modules ("sb", "opl3"
-and "mpu401") using the module parameters.  When configuring an ALS-007, be
-sure to specify different IRQs for the audio and MPU401 sections - this card
-requires they be different.  For "sb", "io", "irq" and "dma" should be set
-to the same values used to configure the audio section of the card with
-isapnp.  "dma16" should be explicitly set to "-1" for an ALS-007 since this
-card does not have a 16 bit dma channel; if not specified the kernel will
-default to using channel 5 anyway which will cause audio not to work. 
-"mpu_io" should be set to 0.  The "io" parameter of the "opl3" module should
-also agree with the setting used by isapnp.  To get the MPU401 interface
-working on an ALS-007 card, the "mpu401" module will be required since this
-card uses separate IRQs for the audio and MPU401 sections and there is no
-parameter available to pass a different IRQ to the "sb" driver (whose
-inbuilt MPU401 driver would otherwise be fine).  Insert the mpu401 module
-passing appropriate values using the "io" and "irq" parameters.
-
-The resulting sound driver will provide the following capabilities:
-  - 8 and 16 bit audio playback
-  - 8 and 16 bit audio recording
-  - Software selection of record source (line in, CD, FM, mic, master)
-  - Record and playback of midi data via the external MPU-401
-  - Playback of midi data using inbuilt FM synthesizer
-  - Control of the ALS-007 mixer via any OSS-compatible mixer programs. 
-    Controls available are Master (L&R), Line in (L&R), CD (L&R), 
-    DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono).
-
-Jonathan Woithe
-jwoithe@just42.net
-30 March 1998
-
-Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200
-Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info.
-Modified 2000-11-19 by Jonathan Woithe, jwoithe@just42.net
- - updated information for kernel 2.4.x.
diff --git a/Documentation/sound/oss/AudioExcelDSP16 b/Documentation/sound/oss/AudioExcelDSP16
deleted file mode 100644 (file)
index ea8549f..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-Driver
-------
-
-Information about Audio Excel DSP 16 driver can be found in the source
-file aedsp16.c
-Please, read the head of the source before using it. It contain useful
-information.
-
-Configuration
--------------
-
-The Audio Excel configuration, is now done with the standard Linux setup.
-You have to configure the sound card (Sound Blaster or Microsoft Sound System)
-and, if you want it, the Roland MPU-401 (do not use the Sound Blaster MPU-401,
-SB-MPU401) in the main driver menu. Activate the lowlevel drivers then select
-the Audio Excel hardware that you want to initialize. Check the IRQ/DMA/MIRQ
-of the Audio Excel initialization: it must be the same as the SBPRO (or MSS)
-setup. If the parameters are different, correct it.
-I you own a Gallant's audio card based on SC-6600, activate the SC-6600 support.
-If you want to change the configuration of the sound board, be sure to
-check off all the configuration items before re-configure it.
-
-Module parameters
------------------
-To use this driver as a module, you must configure some module parameters, to
-set up I/O addresses, IRQ lines and DMA channels. Some parameters are
-mandatory while some others are optional. Here a list of parameters you can
-use with this module:
-
-Name           Description
-====           ===========
-MANDATORY
-io             I/O base address (0x220 or 0x240)
-irq            irq line (5, 7, 9, 10 or 11)
-dma            dma channel (0, 1 or 3)
-
-OPTIONAL
-mss_base       I/O base address for activate MSS mode (default SBPRO)
-               (0x530 or 0xE80)
-mpu_base       I/O base address for activate MPU-401 mode
-               (0x300, 0x310, 0x320 or 0x330)
-mpu_irq                MPU-401 irq line (5, 7, 9, 10 or 0)
-
-A configuration file in /etc/modprobe.d/ directory will have lines like this:
-
-options opl3 io=0x388
-options ad1848 io=0x530 irq=11 dma=3
-options aedsp16 io=0x220 irq=11 dma=3 mss_base=0x530
-
-Where the aedsp16 options are the options for this driver while opl3 and
-ad1848 are the corresponding options for the MSS and OPL3 modules.
-
-Loading MSS and OPL3 needs to pre load the aedsp16 module to set up correctly
-the sound card. Installation dependencies must be written in configuration
-files under /etc/modprobe.d/ directory:
-
-softdep ad1848 pre: aedsp16
-softdep opl3 pre: aedsp16
-
-Then you must load the sound modules stack in this order:
-sound -> aedsp16 -> [ ad1848, opl3 ]
-
-With the above configuration, loading ad1848 or opl3 modules, will
-automatically load all the sound stack.
-
-Sound cards supported
----------------------
-This driver supports the SC-6000 and SC-6600 based Gallant's sound card.
-It don't support the Audio Excel DSP 16 III (try the SC-6600 code).
-I'm working on the III version of the card: if someone have useful
-information about it, please let me know.
-For all the non-supported audio cards, you have to boot MS-DOS (or WIN95)
-activating the audio card with the MS-DOS device driver, then you have to
-<ctrl>-<alt>-<del> and boot Linux.
-Follow these steps:
-
-1) Compile Linux kernel with standard sound driver, using the emulation
-   you want, with the parameters of your audio card,
-   e.g. Microsoft Sound System irq10 dma3
-2) Install your new kernel as the default boot kernel.
-3) Boot MS-DOS and configure the audio card with the boot time device
-   driver, for MSS irq10 dma3 in our example.
-4) <ctrl>-<alt>-<del> and boot Linux. This will maintain the DOS configuration
-   and will boot the new kernel with sound driver. The sound driver will find
-   the audio card and will recognize and attach it.
-
-Reports on User successes
--------------------------
-
-> Date: Mon, 29 Jul 1996 08:35:40 +0100
-> From: Mr S J Greenaway <sjg95@unixfe.rl.ac.uk>
-> To: riccardo@cdc8g5.cdc.polimi.it (Riccardo Facchetti)
-> Subject: Re: Audio Excel DSP 16 initialization code
->
-> Just to let you know got my Audio Excel (emulating a MSS) working
-> with my original SB16, thanks for the driver!
-
-
-Last revised: 20 August 1998
-Riccardo Facchetti
-fizban@tin.it
diff --git a/Documentation/sound/oss/CMI8330 b/Documentation/sound/oss/CMI8330
deleted file mode 100644 (file)
index 8a5fd16..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-Documentation for CMI 8330 (SoundPRO) 
--------------------------------------
-Alessandro Zummo <azummo@ita.flashnet.it>
-
-( Be sure to read Documentation/sound/oss/SoundPro too )
-
-
-This adapter is now directly supported by the sb driver.
-
- The only thing you have to do is to compile the kernel sound
-support as a module and to enable kernel ISAPnP support,
-as shown below.
-
-
-CONFIG_SOUND=m
-CONFIG_SOUND_SB=m
-
-CONFIG_PNP=y
-CONFIG_ISAPNP=y
-
-
-and optionally:
-
-
-CONFIG_SOUND_MPU401=m
-
- for MPU401 support.
-
-
-(I suggest you to use "make menuconfig" or "make xconfig" 
- for a more comfortable configuration editing)
-
-
-
-Then you can do
-
- modprobe sb
-
-and everything will be (hopefully) configured.
-
-You should get something similar in syslog:
-
-sb: CMI8330 detected.
-sb: CMI8330 sb base located at 0x220
-sb: CMI8330 mpu base located at 0x330
-sb: CMI8330 mail reports to Alessandro Zummo <azummo@ita.flashnet.it>
-sb: ISAPnP reports CMI 8330 SoundPRO at i/o 0x220, irq 7, dma 1,5
-
-
-
-
-The old documentation file follows for reference
-purposes.
-
-
-How to enable CMI 8330 (SOUNDPRO) soundchip on Linux
-------------------------------------------
-Stefan Laudat <Stefan.Laudat@asit.ro>
-
-[Note: The CMI 8338 is unrelated and is supported by cmpci.o]
-
-       
-       In order to use CMI8330 under Linux  you just have to use a proper isapnp.conf, a good isapnp and a little bit of patience.  I use isapnp 1.17, but
-you may get a better one I guess at http://www.roestock.demon.co.uk/isapnptools/.
-
-       Of course you will have to compile kernel sound support as module, as shown below:
-
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS=m
-CONFIG_SOUND_SB=m
-CONFIG_SOUND_ADLIB=m
-CONFIG_SOUND_MPU401=m
-# Mikro$chaft sound system (kinda useful here ;))      
-CONFIG_SOUND_MSS=m
-
-       The /etc/isapnp.conf file will be:
-
-<snip below>
-
-
-(READPORT 0x0203)
-(ISOLATE PRESERVE)
-(IDENTIFY *)
-(VERBOSITY 2)
-(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
-(VERIFYLD N)
-
-
-# WSS 
-
-(CONFIGURE CMI0001/16777472 (LD 0
-(IO 0 (SIZE 8) (BASE 0x0530))
-(IO 1 (SIZE 8) (BASE 0x0388))
-(INT 0 (IRQ 7 (MODE +E)))
-(DMA 0 (CHANNEL 0))
-(NAME "CMI0001/16777472[0]{CMI8330/C3D Audio Adapter}")
-(ACT Y)
-))
-
-# MPU
-
-(CONFIGURE CMI0001/16777472 (LD 1
-(IO 0 (SIZE 2) (BASE 0x0330))
-(INT 0 (IRQ 11 (MODE +E)))
-(NAME "CMI0001/16777472[1]{CMI8330/C3D Audio Adapter}")
-(ACT Y)
-))
-
-# Joystick
-
-(CONFIGURE CMI0001/16777472 (LD 2
-(IO 0 (SIZE 8) (BASE 0x0200))
-(NAME "CMI0001/16777472[2]{CMI8330/C3D Audio Adapter}")
-(ACT Y)
-))
-
-# SoundBlaster 
-(CONFIGURE CMI0001/16777472 (LD 3
-(IO 0 (SIZE 16) (BASE 0x0220))
-(INT 0 (IRQ 5 (MODE +E)))
-(DMA 0 (CHANNEL 1))
-(DMA 1 (CHANNEL 5))
-(NAME "CMI0001/16777472[3]{CMI8330/C3D Audio Adapter}")
-(ACT Y)
-))
-
-
-(WAITFORKEY)
-
-<end of snip>
-
-       The module sequence is trivial:
-
-/sbin/insmod soundcore
-/sbin/insmod sound
-/sbin/insmod uart401
-# insert this first
-/sbin/insmod ad1848 io=0x530 irq=7 dma=0 soundpro=1
-# The sb module is an alternative to the ad1848 (Microsoft Sound System)
-# Anyhow, this is full duplex and has MIDI
-/sbin/insmod sb io=0x220 dma=1 dma16=5 irq=5 mpu_io=0x330
-
-
-
-Alma Chao <elysian@ethereal.torsion.org> suggests the following in
-a /etc/modprobe.d/*conf file:
-
-alias sound ad1848
-alias synth0 opl3
-options ad1848 io=0x530 irq=7 dma=0 soundpro=1
-options opl3 io=0x388
diff --git a/Documentation/sound/oss/ESS b/Documentation/sound/oss/ESS
deleted file mode 100644 (file)
index bba93b4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-Documentation for the ESS AudioDrive chips
-
-In 2.4 kernels the SoundBlaster driver not only tries to detect an ESS chip, it
-tries to detect the type of ESS chip too. The correct detection of the chip 
-doesn't always succeed however, so unless you use the kernel isapnp facilities
-(and you chip is pnp capable) the default behaviour is 2.0 behaviour which
-means: only detect ES688 and ES1688.
-
-All ESS chips now have a recording level setting. This is a need-to-have for
-people who want to use their ESS for recording sound.
-
-Every chip that's detected as a later-than-es1688 chip has a 6 bits logarithmic
-master volume control.
-
-Every chip that's detected as a ES1887 now has Full Duplex support. Made a 
-little testprogram that shows that is works, haven't seen a real program that
-needs this however.
-
-For ESS chips an additional parameter "esstype" can be specified. This controls
-the (auto) detection of the ESS chips. It can have 3 kinds of values:
-
--1   Act like 2.0 kernels: only detect ES688 or ES1688.
-0       Try to auto-detect the chip (may fail for ES1688)
-688  The chip will be treated as  ES688
-1688  ,,  ,,   ,,  ,,    ,,   ,, ES1688
-1868  ,,  ,,   ,,  ,,    ,,   ,, ES1868
-1869  ,,  ,,   ,,  ,,    ,,   ,, ES1869
-1788  ,,  ,,   ,,  ,,    ,,   ,, ES1788
-1887  ,,  ,,   ,,  ,,    ,,   ,, ES1887
-1888  ,,  ,,   ,,  ,,    ,,   ,, ES1888
-
-Because Full Duplex is supported for ES1887 you can specify a second DMA
-channel by specifying module parameter dma16. It can be one of: 0, 1, 3 or 5.
-
diff --git a/Documentation/sound/oss/ESS1868 b/Documentation/sound/oss/ESS1868
deleted file mode 100644 (file)
index 55e922f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-Documentation for the ESS1868F AudioDrive PnP sound card
-
-The ESS1868 sound card is a PnP ESS1688-compatible 16-bit sound card.
-
-It should be automatically detected by the Linux Kernel isapnp support when you
-load the sb.o module. Otherwise you should take care of:
-
-  *  The ESS1868 does not allow use of a 16-bit DMA, thus DMA 0, 1, 2, and 3
-     may only be used.
-
-  *  isapnptools version 1.14 does work with ESS1868.  Earlier versions might
-     not.
-
-  *  Sound support MUST be compiled as MODULES, not statically linked
-     into the kernel.
-
-
-NOTE: this is only needed when not using the kernel isapnp support!
-
-For configuring the sound card's I/O addresses, IRQ and DMA, here is a
-sample copy of the isapnp.conf directives regarding the ESS1868:
-
-(CONFIGURE ESS1868/-1 (LD 1
-(IO 0 (BASE 0x0220))
-(IO 1 (BASE 0x0388))
-(IO 2 (BASE 0x0330))
-(DMA 0 (CHANNEL 1))
-(INT 0 (IRQ 5 (MODE +E)))
-(ACT Y)
-))
-
-(for a full working isapnp.conf file, remember the
-(ISOLATE)
-(IDENTIFY *)
-at the beginning and the
-(WAITFORKEY)
-at the end.)
-
-In this setup, the main card I/O is 0x0220, FM synthesizer is 0x0388, and
-the MPU-401 MIDI port is located at 0x0330.  IRQ is IRQ 5, DMA is channel 1.
-
-After configuring the sound card via isapnp, to use the card you must load
-the sound modules with the proper I/O information.  Here is my setup:
-
-# ESS1868F AudioDrive initialization
-
-/sbin/modprobe sound
-/sbin/insmod uart401
-/sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1
-/sbin/insmod mpu401 io=0x330
-/sbin/insmod opl3 io=0x388
-/sbin/insmod v_midi
-
-opl3 is the FM synthesizer
-/sbin/insmod opl3 io=0x388
diff --git a/Documentation/sound/oss/Introduction b/Documentation/sound/oss/Introduction
deleted file mode 100644 (file)
index 42da2d8..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-Introduction   Notes on Modular Sound Drivers and Soundcore
-Wade Hampton 
-2/14/2001
-
-Purpose:  
-========
-This document provides some general notes on the modular 
-sound drivers and their configuration, along with the 
-support modules sound.o and soundcore.o.
-
-Note, some of this probably should be added to the Sound-HOWTO!
-
-Note, soundlow.o was present with 2.2 kernels but is not 
-required for 2.4.x kernels.  References have been removed
-to this.
-
-
-Copying:
-========
-none
-
-
-History:
-========
-0.1.0  11/20/1998  First version, draft
-1.0.0  11/1998     Alan Cox changes, incorporation in 2.2.0
-                   as Documentation/sound/oss/Introduction
-1.1.0  6/30/1999   Second version, added notes on making the drivers,
-                   added info on multiple sound cards of similar types,]
-                   added more diagnostics info, added info about esd.
-                   added info on OSS and ALSA.
-1.1.1  19991031           Added notes on sound-slot- and sound-service.
-                       (Alan Cox)
-1.1.2  20000920    Modified for Kernel 2.4 (Christoph Hellwig)
-1.1.3  20010214    Minor notes and corrections (Wade Hampton)
-                   Added examples of sound-slot-0, etc.
-
-
-Modular Sound Drivers:
-======================
-
-Thanks to the GREAT work by Alan Cox (alan@lxorguk.ukuu.org.uk),
-
-[And Oleg Drokin, Thomas Sailer, Andrew Veliath and more than a few 
- others - not to mention Hannu's original code being designed well
- enough to cope with that kind of chopping up](Alan)
-
-the standard Linux kernels support a modular sound driver.  From
-Alan's comments in linux/drivers/sound/README.FIRST:
-
-  The modular sound driver patches were funded by Red Hat Software 
-  (www.redhat.com). The sound driver here is thus a modified version of 
-  Hannu's code. Please bear that in mind when considering the appropriate
-  forums for bug reporting.
-
-The modular sound drivers may be loaded via insmod or modprobe.  
-To support all the various sound modules, there are two general 
-support modules that must be loaded first:
-   soundcore.o:   Top level handler for the sound system, provides
-                  a set of functions for registration of devices
-                  by type.
-
-   sound.o:       Common sound functions required by all modules.
-
-For the specific sound modules (e.g., sb.o for the Soundblaster), 
-read the documentation on that module to determine what options
-are available, for example IRQ, address, DMA.
-
-Warning, the options for different cards sometime use different names 
-for the same or a similar feature (dma1= versus dma16=).  As a last 
-resort, inspect the code (search for module_param).
-
-Notes:
-
-1.  There is a new OpenSource sound driver called ALSA which is
-    currently under development:  http://www.alsa-project.org/
-    The ALSA drivers support some newer hardware that may not 
-    be supported by this sound driver and also provide some 
-    additional features.
-
-2.  The commercial OSS driver may be obtained from the site:
-    http://www.opensound.com.  This may be used for cards that
-    are unsupported by the kernel driver, or may be used
-    by other operating systems.  
-
-3.  The enlightenment sound daemon may be used for playing
-    multiple sounds at the same time via a single card, eliminating
-    some of the requirements for multiple sound card systems.  For
-    more information, see:  http://www.tux.org/~ricdude/EsounD.html  
-    The "esd" program may be used with the real-player and mpeg 
-    players like mpg123 and x11amp.  The newer real-player 
-    and some games even include built-in support for ESD!
-
-
-Building the Modules:
-=====================
-
-This document does not provide full details on building the 
-kernel, etc.  The notes below apply only to making the kernel
-sound modules.   If this conflicts with the kernel's README,
-the README takes precedence. 
-
-1.  To make the kernel sound modules, cd to your /usr/src/linux
-    directory (typically) and type make config, make menuconfig, 
-    or make xconfig (to start the command line, dialog, or x-based
-    configuration tool).  
-
-2.  Select the Sound option and a dialog will be displayed.  
-
-3.  Select M (module) for "Sound card support".
-
-4.  Select your sound driver(s) as a module.  For ProAudio, Sound
-    Blaster, etc., select M (module) for OSS sound modules.
-    [thanks to Marvin Stodolsky <stodolsk@erols.com>]A
-
-5.  Make the kernel (e.g., make bzImage), and install the kernel.
-
-6.  Make the modules and install them (make modules; make modules_install).
-
-Note, for 2.5.x kernels, make sure you have the newer module-init-tools 
-installed or modules will not be loaded properly.  2.5.x requires an
-updated module-init-tools.
-
-
-Plug and Play (PnP:
-===================
-
-If the sound card is an ISA PnP card, isapnp may be used
-to configure the card.  See the file isapnp.txt in the 
-directory one level up (e.g., /usr/src/linux/Documentation).
-
-Also the 2.4.x kernels provide PnP capabilities, see the 
-file NEWS in this directory.
-
-PCI sound cards are highly recommended, as they are far 
-easier to configure and from what I have read, they use
-less resources and are more CPU efficient.
-
-
-INSMOD:
-=======
-
-If loading via insmod, the common modules must be loaded in the 
-order below BEFORE loading the other sound modules.  The card-specific
-modules may then be loaded (most require parameters).  For example,
-I use the following via a shell script to load my SoundBlaster:
-
-SB_BASE=0x240
-SB_IRQ=9
-SB_DMA=3
-SB_DMA2=5
-SB_MPU=0x300
-#
-echo Starting sound
-/sbin/insmod soundcore
-/sbin/insmod sound  
-#
-echo Starting sound blaster....
-/sbin/insmod uart401
-/sbin/insmod sb io=$SB_BASE irq=$SB_IRQ dma=$SB_DMA dma16=$SB_DMA2 mpu_io=$SB_MP
-
-When using sound as a module, I typically put these commands
-in a file such as /root/soundon.sh.
-
-
-MODPROBE:
-=========
-
-If loading via modprobe, these common files are automatically loaded when
-requested by modprobe.  For example, my /etc/modprobe.d/oss.conf contains:
-
-alias sound sb 
-options sb io=0x240 irq=9 dma=3 dma16=5 mpu_io=0x300
-
-All you need to do to load the module is:
-
-       /sbin/modprobe sb
-
-
-Sound Status:
-=============
-
-The status of sound may be read/checked by:
-        cat (anyfile).au >/dev/audio
-
-[WWH:  This may not work properly for SoundBlaster PCI 128 cards
-such as the es1370/1 (see the es1370/1 files in this directory) 
-as they do not automatically support uLaw on /dev/audio.]
-
-The status of the modules and which modules depend on 
-which other modules may be checked by:
-       /sbin/lsmod
-
-/sbin/lsmod should show something like the following:
-       sb                     26280   0 
-       uart401                 5640   0  [sb]
-       sound                  57112   0  [sb uart401]
-       soundcore               1968   8  [sb sound]
-
-
-Removing Sound: 
-=============== 
-
-Sound may be removed by using /sbin/rmmod in the reverse order
-in which you load the modules.  Note, if a program has a sound device
-open (e.g., xmixer), that module (and the modules on which it 
-depends) may not be unloaded.
-
-For example, I use the following to remove my Soundblaster (rmmod
-in the reverse order in which I loaded the modules):
-
-/sbin/rmmod sb
-/sbin/rmmod uart401
-/sbin/rmmod sound
-/sbin/rmmod soundcore
-
-When using sound as a module, I typically put these commands
-in a script such as /root/soundoff.sh.
-
-
-Removing Sound for use with OSS: 
-================================ 
-
-If you get really stuck or have a card that the kernel modules
-will not support, you can get a commercial sound driver from
-http://www.opensound.com.  Before loading the commercial sound
-driver, you should do the following:
-
-1.  remove sound modules (detailed above)
-2.  remove the sound modules from /etc/modprobe.d/*.conf
-3.  move the sound modules from /lib/modules/<kernel>/misc
-    (for example, I make a /lib/modules/<kernel>/misc/tmp
-    directory and copy the sound module files to that 
-    directory).
-
-
-Multiple Sound Cards:
-=====================
-
-The sound drivers will support multiple sound cards and there
-are some great applications like multitrack that support them.  
-Typically, you need two sound cards of different types.  Note, this
-uses more precious interrupts and DMA channels and sometimes 
-can be a configuration nightmare.  I have heard reports of 3-4
-sound cards (typically I only use 2).  You can sometimes use
-multiple PCI sound cards of the same type.
-
-On my machine I have two sound cards (cs4232 and Soundblaster Vibra
-16).  By loading sound as modules, I can control which is the first
-sound device (/dev/dsp, /dev/audio, /dev/mixer) and which is 
-the second.  Normally, the cs4232 (Dell sound on the motherboard) 
-would be the first sound device, but I prefer the Soundblaster.  
-All you have to do is to load the one you want as /dev/dsp 
-first (in my case "sb") and then load the other one
-(in my case "cs4232").
-
-If you have two cards of the same type that are jumpered 
-cards or different PnP revisions, you may load the same 
-module twice.  For example, I have a SoundBlaster vibra 16
-and an older SoundBlaster 16 (jumpers).  To load the module
-twice, you need to do the following:
-
-1.  Copy the sound modules to a new name.  For example
-    sb.o could be copied (or symlinked) to sb1.o for the
-    second SoundBlaster.
-
-2.  Make a second entry in /etc/modprobe.d/*conf, for example,
-    sound1 or sb1.  This second entry should refer to the
-    new module names for example sb1, and should include
-    the I/O, etc. for the second sound card.
-
-3.  Update your soundon.sh script, etc.
-
-Warning:  I have never been able to get two PnP sound cards of the
-same type to load at the same time.  I have tried this several times
-with the Soundblaster Vibra 16 cards.  OSS has indicated that this
-is a PnP problem....  If anyone has any luck doing this, please 
-send me an E-MAIL.  PCI sound cards should not have this problem.a
-Since this was originally release, I have received a couple of 
-mails from people who have accomplished this!
-
-NOTE: In Linux 2.4 the Sound Blaster driver (and only this one yet)
-supports multiple cards with one module by default.
-Read the file 'Soundblaster' in this directory for details.
-
-
-Sound Problems:
-===============
-
-First RTFM (including the troubleshooting section 
-in the Sound-HOWTO). 
-
-1)  If you are having problems loading the modules (for
-    example, if you get device conflict errors) try the
-    following:
-
-  A)  If you have Win95 or NT on the same computer,  
-      write down what addresses, IRQ, and DMA channels
-      those were using for the same hardware.  You probably 
-      can use these addresses, IRQs, and DMA channels.
-      You should really do this BEFORE attempting to get
-      sound working!
-  
-  B)  Check (cat) /proc/interrupts, /proc/ioports,
-      and /proc/dma.  Are you trying to use an address,
-      IRQ or DMA port that another device is using?
-  
-  C)  Check (cat) /proc/isapnp
-  
-  D)  Inspect your /var/log/messages file.  Often that will 
-      indicate what IRQ or IO port could not be obtained.
-  
-  E)  Try another port or IRQ.  Note this may involve 
-      using the PnP tools to move the sound card to 
-      another location.  Sometimes this is the only way 
-      and it is more or less trial and error.
-
-2)  If you get motor-boating (the same sound or part of a 
-    sound clip repeated), you probably have either an IRQ
-    or DMA conflict.  Move the card to another IRQ or DMA
-    port.  This has happened to me when playing long files 
-    when I had an IRQ conflict.
-
-3.  If you get dropouts or pauses when playing high sample
-    rate files such as using mpg123 or x11amp/xmms, you may 
-    have too slow of a CPU and may have to use the options to 
-    play the files at 1/2 speed.  For example, you may use
-    the -2 or -4 option on mpg123.  You may also get this
-    when trying to play mpeg files stored on a CD-ROM
-    (my Toshiba T8000 PII/366 sometimes has this problem).
-
-4.  If you get "cannot access device" errors, your /dev/dsp
-    files, etc. may be set to owner root, mode 600.  You 
-    may have to use the command:
-      chmod 666 /dev/dsp /dev/mixer /dev/audio
-
-5.  If you get "device busy" errors, another program has the
-    sound device open.  For example, if using the Enlightenment
-    sound daemon "esd", the "esd" program has the sound device.
-    If using "esd", please RTFM the docs on ESD.  For example,
-    esddsp <program> may be used to play files via a non-esd
-    aware program.
-
-6)  Ask for help on the sound list or send E-MAIL to the
-    sound driver author/maintainer.
-
-7)  Turn on debug in drivers/sound/sound_config.h (DEB, DDB, MDB).
-
-8)  If the system reports insufficient DMA memory then you may want to
-    load sound with the "dmabufs=1" option. Or in /etc/conf.modules add
-       
-       preinstall sound dmabufs=1
-
-    This makes the sound system allocate its buffers and hang onto them.
-
-    You may also set persistent DMA when building a 2.4.x kernel.
-
-
-Configuring Sound:
-==================
-
-There are several ways of configuring your sound:
-
-1)  On the kernel command line (when using the sound driver(s)
-    compiled in the kernel). Check the driver source and
-    documentation for details.
-
-2)  On the command line when using insmod or in a bash script
-    using command line calls to load sound.
-
-3)  In /etc/modprobe.d/*conf when using modprobe.
-
-4)  Via Red Hat's GPL'd /usr/sbin/sndconfig program (text based).
-
-5)  Via the OSS soundconf program (with the commercial version
-    of the OSS driver.
-
-6)  By just loading the module and let isapnp do everything relevant
-    for you. This works only with a few drivers yet and - of course -
-    only with isapnp hardware.
-
-And I am sure, several other ways.  
-
-Anyone want to write a linuxconf module for configuring sound?
-
-
-Module Loading:
-===============
-
-When a sound card is first referenced and sound is modular, the sound system
-will ask for the sound devices to be loaded. Initially it requests that
-the driver for the sound system is loaded. It then will ask for 
-sound-slot-0, where 0 is the first sound card. (sound-slot-1 the second and
-so on). Thus you can do
-
-alias sound-slot-0 sb
-
-To load a soundblaster at this point. If the slot loading does not provide
-the desired device - for example a soundblaster does not directly provide
-a midi synth in all cases then it will request "sound-service-0-n" where n
-is
-
-  0    Mixer
-
-  2    MIDI
-
-  3, 4 DSP audio
-
-
-For example, I use the following to load my Soundblaster PCI 128
-(ES 1371) card first, followed by my SoundBlaster Vibra 16 card,
-then by my TV card:
-
-# Load the Soundblaster PCI 128 as /dev/dsp, /dev/dsp1, /dev/mixer
-alias sound-slot-0 es1371
-
-# Load the Soundblaster Vibra 16 as /dev/dsp2, /dev/mixer1
-alias sound-slot-1 sb
-options sb io=0x240 irq=5 dma=1 dma16=5 mpu_io=0x330
-
-# Load the BTTV (TV card) as /dev/mixer2
-alias sound-slot-2 bttv
-alias sound-service-2-0 tvmixer
-
-pre-install bttv  modprobe tuner ; modprobe tvmixer
-pre-install tvmixer modprobe msp3400; modprobe tvaudio 
-options tuner debug=0 type=8 
-options bttv  card=0 radio=0 pll=0
-
-
-For More Information (RTFM):
-============================
-1)  Information on kernel modules: manual pages for insmod and modprobe.
-
-2)  Information on PnP, RTFM manual pages for isapnp.
-
-3)  Sound-HOWTO and Sound-Playing-HOWTO.
-
-4)  OSS's WWW site at http://www.opensound.com.
-
-5)  All the files in Documentation/sound.
-
-6)  The comments and code in linux/drivers/sound.
-
-7)  The sndconfig and rhsound documentation from Red Hat.
-
-8)  The Linux-sound mailing list:  sound-list@redhat.com.
-
-9)  Enlightenment documentation (for info on esd)
-    http://www.tux.org/~ricdude/EsounD.html.
-
-10) ALSA home page:  http://www.alsa-project.org/
-
-
-Contact Information:
-====================
-Wade Hampton:  (whampton@staffnet.com)
-
diff --git a/Documentation/sound/oss/MultiSound b/Documentation/sound/oss/MultiSound
deleted file mode 100644 (file)
index e4a18bb..0000000
+++ /dev/null
@@ -1,1137 +0,0 @@
-#! /bin/sh
-#
-#  Turtle Beach MultiSound Driver Notes
-#  -- Andrew Veliath <andrewtv@usa.net>
-#
-#  Last update:                      September 10, 1998
-#  Corresponding msnd driver:        0.8.3
-#
-# ** This file is a README (top part) and shell archive (bottom part).
-#    The corresponding archived utility sources can be unpacked by
-#    running `sh MultiSound' (the utilities are only needed for the
-#    Pinnacle and Fiji cards). **
-#
-#
-#  -=-=- Getting Firmware -=-=-
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#  
-#  See the section `Obtaining and Creating Firmware Files' in this
-#  document for instructions on obtaining the necessary firmware
-#  files.
-#  
-#  
-#  Supported Features
-#  ~~~~~~~~~~~~~~~~~~
-#  
-#  Currently, full-duplex digital audio (/dev/dsp only, /dev/audio is
-#  not currently available) and mixer functionality (/dev/mixer) are
-#  supported (memory mapped digital audio is not yet supported).
-#  Digital transfers and monitoring can be done as well if you have
-#  the digital daughterboard (see the section on using the S/PDIF port
-#  for more information).
-#
-#  Support for the Turtle Beach MultiSound Hurricane architecture is
-#  composed of the following modules (these can also operate compiled
-#  into the kernel):
-#  
-#  msnd               - MultiSound base (requires soundcore)
-#
-#  msnd_classic       - Base audio/mixer support for Classic, Monetery and
-#                       Tahiti cards
-#
-#  msnd_pinnacle      - Base audio/mixer support for Pinnacle and Fiji cards
-#  
-#  
-#  Important Notes - Read Before Using
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#  
-#  The firmware files are not included (may change in future).  You
-#  must obtain these images from Turtle Beach (they are included in
-#  the MultiSound Development Kits), and place them in /etc/sound for
-#  example, and give the full paths in the Linux configuration.  If
-#  you are compiling in support for the MultiSound driver rather than
-#  using it as a module, these firmware files must be accessible
-#  during kernel compilation.
-#
-#  Please note these files must be binary files, not assembler.  See
-#  the section later in this document for instructions to obtain these
-#  files.
-#  
-#  
-#  Configuring Card Resources
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#  ** This section is very important, as your card may not work at all
-#     or your machine may crash if you do not do this correctly. **
-#
-#  * Classic/Monterey/Tahiti
-#  
-#  These cards are configured through the driver msnd_classic.  You must
-#  know the io port, then the driver will select the irq and memory resources
-#  on the card.  It is up to you to know if these are free locations or now,
-#  a conflict can lock the machine up.
-#
-#  * Pinnacle/Fiji
-#
-#  The Pinnacle and Fiji cards have an extra config port, either
-#  0x250, 0x260 or 0x270.  This port can be disabled to have the card
-#  configured strictly through PnP, however you lose the ability to
-#  access the IDE controller and joystick devices on this card when
-#  using PnP.  The included pinnaclecfg program in this shell archive
-#  can be used to configure the card in non-PnP mode, and in PnP mode
-#  you can use isapnptools.  These are described briefly here.
-#
-#  pinnaclecfg is not required; you can use the msnd_pinnacle module
-#  to fully configure the card as well.  However, pinnaclecfg can be
-#  used to change the resource values of a particular device after the
-#  msnd_pinnacle module has been loaded.  If you are compiling the
-#  driver into the kernel, you must set these values during compile
-#  time, however other peripheral resource values can be changed with
-#  the pinnaclecfg program after the kernel is loaded.
-#
-#
-#  *** PnP mode
-#  
-#  Use pnpdump to obtain a sample configuration if you can; I was able
-#  to obtain one with the command `pnpdump 1 0x203' -- this may vary
-#  for you (running pnpdump by itself did not work for me).  Then,
-#  edit this file and use isapnp to uncomment and set the card values.
-#  Use these values when inserting the msnd_pinnacle module.  Using
-#  this method, you can set the resources for the DSP and the Kurzweil
-#  synth (Pinnacle).  Since Linux does not directly support PnP
-#  devices, you may have difficulty when using the card in PnP mode
-#  when it the driver is compiled into the kernel.  Using non-PnP mode
-#  is preferable in this case.
-#
-#  Here is an example mypinnacle.conf for isapnp that sets the card to
-#  io base 0x210, irq 5 and mem 0xd8000, and also sets the Kurzweil
-#  synth to 0x330 and irq 9 (may need editing for your system):
-#
-#  (READPORT 0x0203)
-#  (CSN 2)
-#  (IDENTIFY *)
-#  
-#  # DSP
-#  (CONFIGURE BVJ0440/-1 (LD 0
-#          (INT 0 (IRQ 5 (MODE +E))) (IO 0 (BASE 0x0210)) (MEM 0 (BASE 0x0d8000))
-#          (ACT Y)))
-#  
-#  # Kurzweil Synth (Pinnacle Only)
-#  (CONFIGURE BVJ0440/-1 (LD 1
-#          (IO 0 (BASE 0x0330)) (INT 0 (IRQ 9 (MODE +E)))
-#          (ACT Y)))
-#  
-#  (WAITFORKEY)
-#
-#
-#  *** Non-PnP mode
-#  
-#  The second way is by running the card in non-PnP mode.  This
-#  actually has some advantages in that you can access some other
-#  devices on the card, such as the joystick and IDE controller.  To
-#  configure the card, unpack this shell archive and build the
-#  pinnaclecfg program.  Using this program, you can assign the
-#  resource values to the card's devices, or disable the devices.  As
-#  an alternative to using pinnaclecfg, you can specify many of the
-#  configuration values when loading the msnd_pinnacle module (or
-#  during kernel configuration when compiling the driver into the
-#  kernel).
-#
-#  If you specify cfg=0x250 for the msnd_pinnacle module, it
-#  automatically configure the card to the given io, irq and memory
-#  values using that config port (the config port is jumper selectable
-#  on the card to 0x250, 0x260 or 0x270).
-#
-#  See the `msnd_pinnacle Additional Options' section below for more
-#  information on these parameters (also, if you compile the driver
-#  directly into the kernel, these extra parameters can be useful
-#  here).
-#
-#
-# ** It is very easy to cause problems in your machine if you choose a
-#    resource value which is incorrect. **
-#  
-#
-#  Examples
-#  ~~~~~~~~
-#  
-#  * MultiSound Classic/Monterey/Tahiti:
-#  
-#  modprobe soundcore
-#  insmod msnd
-#  insmod msnd_classic io=0x290 irq=7 mem=0xd0000
-#  
-#  * MultiSound Pinnacle in PnP mode:
-#  
-#  modprobe soundcore
-#  insmod msnd
-#  isapnp mypinnacle.conf
-#  insmod msnd_pinnacle io=0x210 irq=5 mem=0xd8000 <-- match mypinnacle.conf values
-#  
-#  * MultiSound Pinnacle in non-PnP mode (replace 0x250 with your configuration port,
-#    one of 0x250, 0x260 or 0x270):
-#  
-#  insmod soundcore
-#  insmod msnd
-#  insmod msnd_pinnacle cfg=0x250 io=0x290 irq=5 mem=0xd0000
-#  
-# * To use the MPU-compatible Kurzweil synth on the Pinnacle in PnP
-#   mode, add the following (assumes you did `isapnp mypinnacle.conf'):
-#  
-#  insmod sound
-#  insmod mpu401 io=0x330 irq=9                    <-- match mypinnacle.conf values
-#  
-# * To use the MPU-compatible Kurzweil synth on the Pinnacle in non-PnP
-#   mode, add the following.  Note how we first configure the peripheral's
-#   resources, _then_ install a Linux driver for it:
-#  
-#  insmod sound
-#  pinnaclecfg 0x250 mpu 0x330 9
-#  insmod mpu401 io=0x330 irq=9
-#
-#  -- OR you can use the following sequence without pinnaclecfg in non-PnP mode:
-#
-#  insmod soundcore
-#  insmod msnd
-#  insmod msnd_pinnacle cfg=0x250 io=0x290 irq=5 mem=0xd0000 mpu_io=0x330 mpu_irq=9
-#  insmod sound
-#  insmod mpu401 io=0x330 irq=9
-#
-# * To setup the joystick port on the Pinnacle in non-PnP mode (though
-#   you have to find the actual Linux joystick driver elsewhere), you
-#   can use pinnaclecfg:
-#
-#   pinnaclecfg 0x250 joystick 0x200
-#
-#  -- OR you can configure this using msnd_pinnacle with the following:
-#
-#  insmod soundcore
-#  insmod msnd
-#  insmod msnd_pinnacle cfg=0x250 io=0x290 irq=5 mem=0xd0000 joystick_io=0x200
-#
-#  
-#  msnd_classic, msnd_pinnacle Required Options
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#  
-#  If the following options are not given, the module will not load.
-#  Examine the kernel message log for informative error messages.
-#  WARNING--probing isn't supported so try to make sure you have the
-#  correct shared memory area, otherwise you may experience problems.
-#  
-#  io                   I/O base of DSP, e.g. io=0x210
-#  irq                  IRQ number, e.g. irq=5
-#  mem                  Shared memory area, e.g. mem=0xd8000
-#  
-#  
-#  msnd_classic, msnd_pinnacle Additional Options
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#  
-#  fifosize             The digital audio FIFOs, in kilobytes.  If not
-#                       specified, the default will be used.  Increasing
-#                       this value will reduce the chance of a FIFO
-#                       underflow at the expense of increasing overall
-#                       latency.  For example, fifosize=512 will
-#                       allocate 512kB read and write FIFOs (1MB total).
-#                       While this may reduce dropouts, a heavy machine
-#                       load will undoubtedly starve the FIFO of data
-#                       and you will eventually get dropouts.  One
-#                       option is to alter the scheduling priority of
-#                       the playback process, using `nice' or some form
-#                       of POSIX soft real-time scheduling.
-#
-#  calibrate_signal     Setting this to one calibrates the ADCs to the
-#                       signal, zero calibrates to the card (defaults
-#                       to zero).
-#  
-#  
-#  msnd_pinnacle Additional Options
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#  digital              Specify digital=1 to enable the S/PDIF input
-#                       if you have the digital daughterboard
-#                       adapter. This will enable access to the
-#                       DIGITAL1 input for the soundcard in the mixer.
-#                       Some mixer programs might have trouble setting
-#                       the DIGITAL1 source as an input.  If you have
-#                       trouble, you can try the setdigital.c program
-#                       at the bottom of this document.
-#
-#  cfg                  Non-PnP configuration port for the Pinnacle
-#                       and Fiji (typically 0x250, 0x260 or 0x270,
-#                       depending on the jumper configuration).  If
-#                       this option is omitted, then it is assumed
-#                       that the card is in PnP mode, and that the
-#                       specified DSP resource values are already
-#                       configured with PnP (i.e. it won't attempt to
-#                       do any sort of configuration).
-#
-#  When the Pinnacle is in non-PnP mode, you can use the following
-#  options to configure particular devices.  If a full specification
-#  for a device is not given, then the device is not configured.  Note
-#  that you still must use a Linux driver for any of these devices
-#  once their resources are setup (such as the Linux joystick driver,
-#  or the MPU401 driver from OSS for the Kurzweil synth).
-#
-#  mpu_io               I/O port of MPU (on-board Kurzweil synth)
-#  mpu_irq              IRQ of MPU (on-board Kurzweil synth)
-#  ide_io0             First I/O port of IDE controller
-#  ide_io1             Second I/O port of IDE controller
-#  ide_irq             IRQ IDE controller
-#  joystick_io          I/O port of joystick
-#  
-#  
-#  Obtaining and Creating Firmware Files
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#  
-#       For the Classic/Tahiti/Monterey
-#       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-#  
-#  Download to /tmp and unzip the following file from Turtle Beach:
-#  
-#       ftp://ftp.voyetra.com/pub/tbs/msndcl/msndvkit.zip
-#  
-#  When unzipped, unzip the file named MsndFiles.zip.  Then copy the
-#  following firmware files to /etc/sound (note the file renaming):
-#  
-#    cp DSPCODE/MSNDINIT.BIN /etc/sound/msndinit.bin
-#    cp DSPCODE/MSNDPERM.REB /etc/sound/msndperm.bin
-#  
-#  When configuring the Linux kernel, specify /etc/sound/msndinit.bin and
-#  /etc/sound/msndperm.bin for the two firmware files (Linux kernel
-#  versions older than 2.2 do not ask for firmware paths, and are
-#  hardcoded to /etc/sound).
-#
-#  If you are compiling the driver into the kernel, these files must
-#  be accessible during compilation, but will not be needed later.
-#  The files must remain, however, if the driver is used as a module.
-#  
-#  
-#       For the Pinnacle/Fiji
-#       ~~~~~~~~~~~~~~~~~~~~~
-#  
-#  Download to /tmp and unzip the following file from Turtle Beach (be
-#  sure to use the entire URL; some have had trouble navigating to the
-#  URL):
-#  
-#       ftp://ftp.voyetra.com/pub/tbs/pinn/pnddk100.zip
-#
-#  Unpack this shell archive, and run make in the created directory
-#  (you need a C compiler and flex to build the utilities).  This
-#  should give you the executables conv, pinnaclecfg and setdigital.
-#  conv is only used temporarily here to create the firmware files,
-#  while pinnaclecfg is used to configure the Pinnacle or Fiji card in
-#  non-PnP mode, and setdigital can be used to set the S/PDIF input on
-#  the mixer (pinnaclecfg and setdigital should be copied to a
-#  convenient place, possibly run during system initialization).
-#
-#  To generating the firmware files with the `conv' program, we create
-#  the binary firmware files by doing the following conversion
-#  (assuming the archive unpacked into a directory named PINNDDK):
-#  
-#    ./conv < PINNDDK/dspcode/pndspini.asm > /etc/sound/pndspini.bin
-#    ./conv < PINNDDK/dspcode/pndsperm.asm > /etc/sound/pndsperm.bin
-#  
-#  The conv (and conv.l) program is not needed after conversion and can
-#  be safely deleted.  Then, when configuring the Linux kernel, specify
-#  /etc/sound/pndspini.bin and /etc/sound/pndsperm.bin for the two
-#  firmware files (Linux kernel versions older than 2.2 do not ask for
-#  firmware paths, and are hardcoded to /etc/sound).
-#  
-#  If you are compiling the driver into the kernel, these files must
-#  be accessible during compilation, but will not be needed later.
-#  The files must remain, however, if the driver is used as a module.
-#
-#  
-#  Using Digital I/O with the S/PDIF Port
-#  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-#  If you have a Pinnacle or Fiji with the digital daughterboard and
-#  want to set it as the input source, you can use this program if you
-#  have trouble trying to do it with a mixer program (be sure to
-#  insert the module with the digital=1 option, or say Y to the option
-#  during compiled-in kernel operation).  Upon selection of the S/PDIF
-#  port, you should be able monitor and record from it.
-#
-#  There is something to note about using the S/PDIF port.  Digital
-#  timing is taken from the digital signal, so if a signal is not
-#  connected to the port and it is selected as recording input, you
-#  will find PCM playback to be distorted in playback rate.  Also,
-#  attempting to record at a sampling rate other than the DAT rate may
-#  be problematic (i.e. trying to record at 8000Hz when the DAT signal
-#  is 44100Hz).  If you have a problem with this, set the recording
-#  input to analog if you need to record at a rate other than that of
-#  the DAT rate.
-#
-#
-#  -- Shell archive attached below, just run `sh MultiSound' to extract.
-#     Contains Pinnacle/Fiji utilities to convert firmware, configure
-#     in non-PnP mode, and select the DIGITAL1 input for the mixer.
-#
-#
-#!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
-# To extract the files from this archive, save it to some FILE, remove
-# everything before the `!/bin/sh' line above, then type `sh FILE'.
-#
-# Made on 1998-12-04 10:07 EST by <andrewtv@ztransform.velsoft.com>.
-# Source directory was `/home/andrewtv/programming/pinnacle/pinnacle'.
-#
-# Existing files will *not* be overwritten unless `-c' is specified.
-#
-# This shar contains:
-# length mode       name
-# ------ ---------- ------------------------------------------
-#   2046 -rw-rw-r-- MultiSound.d/setdigital.c
-#  10235 -rw-rw-r-- MultiSound.d/pinnaclecfg.c
-#    106 -rw-rw-r-- MultiSound.d/Makefile
-#    141 -rw-rw-r-- MultiSound.d/conv.l
-#   1472 -rw-rw-r-- MultiSound.d/msndreset.c
-#
-save_IFS="${IFS}"
-IFS="${IFS}:"
-gettext_dir=FAILED
-locale_dir=FAILED
-first_param="$1"
-for dir in $PATH
-do
-  if test "$gettext_dir" = FAILED && test -f $dir/gettext \
-     && ($dir/gettext --version >/dev/null 2>&1)
-  then
-    set `$dir/gettext --version 2>&1`
-    if test "$3" = GNU
-    then
-      gettext_dir=$dir
-    fi
-  fi
-  if test "$locale_dir" = FAILED && test -f $dir/shar \
-     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
-  then
-    locale_dir=`$dir/shar --print-text-domain-dir`
-  fi
-done
-IFS="$save_IFS"
-if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
-then
-  echo=echo
-else
-  TEXTDOMAINDIR=$locale_dir
-  export TEXTDOMAINDIR
-  TEXTDOMAIN=sharutils
-  export TEXTDOMAIN
-  echo="$gettext_dir/gettext -s"
-fi
-touch -am 1231235999 $$.touch >/dev/null 2>&1
-if test ! -f 1231235999 && test -f $$.touch; then
-  shar_touch=touch
-else
-  shar_touch=:
-  echo
-  $echo 'WARNING: not restoring timestamps.  Consider getting and'
-  $echo "installing GNU \`touch', distributed in GNU File Utilities..."
-  echo
-fi
-rm -f 1231235999 $$.touch
-#
-if mkdir _sh01426; then
-  $echo 'x -' 'creating lock directory'
-else
-  $echo 'failed to create lock directory'
-  exit 1
-fi
-# ============= MultiSound.d/setdigital.c ==============
-if test ! -d 'MultiSound.d'; then
-  $echo 'x -' 'creating directory' 'MultiSound.d'
-  mkdir 'MultiSound.d'
-fi
-if test -f 'MultiSound.d/setdigital.c' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'MultiSound.d/setdigital.c' '(file already exists)'
-else
-  $echo 'x -' extracting 'MultiSound.d/setdigital.c' '(text)'
-  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/setdigital.c' &&
-/*********************************************************************
-X *
-X * setdigital.c - sets the DIGITAL1 input for a mixer
-X *
-X * Copyright (C) 1998 Andrew Veliath
-X *
-X * This program is free software; you can redistribute it and/or modify
-X * it under the terms of the GNU General Public License as published by
-X * the Free Software Foundation; either version 2 of the License, or
-X * (at your option) any later version.
-X *
-X * This program is distributed in the hope that it will be useful,
-X * but WITHOUT ANY WARRANTY; without even the implied warranty of
-X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-X * GNU General Public License for more details.
-X *
-X * You should have received a copy of the GNU General Public License
-X * along with this program; if not, write to the Free Software
-X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-X *
-X ********************************************************************/
-X
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/soundcard.h>
-X
-int main(int argc, char *argv[])
-{
-X      int fd;
-X      unsigned long recmask, recsrc;
-X
-X      if (argc != 2) {
-X              fprintf(stderr, "usage: setdigital <mixer device>\n");
-X              exit(1);
-X      }
-X
-X      if ((fd = open(argv[1], O_RDWR)) < 0) {
-X              perror(argv[1]);
-X              exit(1);
-X      }
-X
-X      if (ioctl(fd, SOUND_MIXER_READ_RECMASK, &recmask) < 0) {
-X              fprintf(stderr, "error: ioctl read recording mask failed\n");
-X              perror("ioctl");
-X              close(fd);
-X              exit(1);
-X      }
-X
-X      if (!(recmask & SOUND_MASK_DIGITAL1)) {
-X              fprintf(stderr, "error: cannot find DIGITAL1 device in mixer\n");
-X              close(fd);
-X              exit(1);
-X      }
-X
-X      if (ioctl(fd, SOUND_MIXER_READ_RECSRC, &recsrc) < 0) {
-X              fprintf(stderr, "error: ioctl read recording source failed\n");
-X              perror("ioctl");
-X              close(fd);
-X              exit(1);
-X      }
-X
-X      recsrc |= SOUND_MASK_DIGITAL1;
-X      
-X      if (ioctl(fd, SOUND_MIXER_WRITE_RECSRC, &recsrc) < 0) {
-X              fprintf(stderr, "error: ioctl write recording source failed\n");
-X              perror("ioctl");
-X              close(fd);
-X              exit(1);
-X      }
-X
-X      close(fd);
-X      
-X      return 0;
-}
-SHAR_EOF
-  $shar_touch -am 1204092598 'MultiSound.d/setdigital.c' &&
-  chmod 0664 'MultiSound.d/setdigital.c' ||
-  $echo 'restore of' 'MultiSound.d/setdigital.c' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'MultiSound.d/setdigital.c:' 'MD5 check failed'
-e87217fc3e71288102ba41fd81f71ec4  MultiSound.d/setdigital.c
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/setdigital.c'`"
-    test 2046 -eq "$shar_count" ||
-    $echo 'MultiSound.d/setdigital.c:' 'original size' '2046,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= MultiSound.d/pinnaclecfg.c ==============
-if test -f 'MultiSound.d/pinnaclecfg.c' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'MultiSound.d/pinnaclecfg.c' '(file already exists)'
-else
-  $echo 'x -' extracting 'MultiSound.d/pinnaclecfg.c' '(text)'
-  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/pinnaclecfg.c' &&
-/*********************************************************************
-X *
-X * pinnaclecfg.c - Pinnacle/Fiji Device Configuration Program
-X *
-X * This is for NON-PnP mode only.  For PnP mode, use isapnptools.
-X *
-X * This is Linux-specific, and must be run with root permissions.
-X *
-X * Part of the Turtle Beach MultiSound Sound Card Driver for Linux
-X *
-X * Copyright (C) 1998 Andrew Veliath
-X *
-X * This program is free software; you can redistribute it and/or modify
-X * it under the terms of the GNU General Public License as published by
-X * the Free Software Foundation; either version 2 of the License, or
-X * (at your option) any later version.
-X *
-X * This program is distributed in the hope that it will be useful,
-X * but WITHOUT ANY WARRANTY; without even the implied warranty of
-X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-X * GNU General Public License for more details.
-X *
-X * You should have received a copy of the GNU General Public License
-X * along with this program; if not, write to the Free Software
-X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-X *
-X ********************************************************************/
-X
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <asm/io.h>
-#include <asm/types.h>
-X
-#define IREG_LOGDEVICE         0x07
-#define IREG_ACTIVATE          0x30
-#define LD_ACTIVATE            0x01
-#define LD_DISACTIVATE         0x00
-#define IREG_EECONTROL         0x3F
-#define IREG_MEMBASEHI         0x40
-#define IREG_MEMBASELO         0x41
-#define IREG_MEMCONTROL                0x42
-#define IREG_MEMRANGEHI                0x43
-#define IREG_MEMRANGELO                0x44
-#define MEMTYPE_8BIT           0x00
-#define MEMTYPE_16BIT          0x02
-#define MEMTYPE_RANGE          0x00
-#define MEMTYPE_HIADDR         0x01
-#define IREG_IO0_BASEHI                0x60
-#define IREG_IO0_BASELO                0x61
-#define IREG_IO1_BASEHI                0x62
-#define IREG_IO1_BASELO                0x63
-#define IREG_IRQ_NUMBER                0x70
-#define IREG_IRQ_TYPE          0x71
-#define IRQTYPE_HIGH           0x02
-#define IRQTYPE_LOW            0x00
-#define IRQTYPE_LEVEL          0x01
-#define IRQTYPE_EDGE           0x00
-X
-#define HIBYTE(w)              ((BYTE)(((WORD)(w) >> 8) & 0xFF))
-#define LOBYTE(w)              ((BYTE)(w))
-#define MAKEWORD(low,hi)       ((WORD)(((BYTE)(low))|(((WORD)((BYTE)(hi)))<<8)))
-X
-typedef __u8                   BYTE;
-typedef __u16                  USHORT;
-typedef __u16                  WORD;
-X
-static int config_port = -1;
-X
-static int msnd_write_cfg(int cfg, int reg, int value)
-{
-X      outb(reg, cfg);
-X      outb(value, cfg + 1);
-X      if (value != inb(cfg + 1)) {
-X              fprintf(stderr, "error: msnd_write_cfg: I/O error\n");
-X              return -EIO;
-X      }
-X      return 0;
-}
-X
-static int msnd_read_cfg(int cfg, int reg)
-{
-X      outb(reg, cfg);
-X      return inb(cfg + 1);
-}
-X
-static int msnd_write_cfg_io0(int cfg, int num, WORD io)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IO0_BASEHI, HIBYTE(io)))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IO0_BASELO, LOBYTE(io)))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_read_cfg_io0(int cfg, int num, WORD *io)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      
-X      *io = MAKEWORD(msnd_read_cfg(cfg, IREG_IO0_BASELO),
-X                     msnd_read_cfg(cfg, IREG_IO0_BASEHI));
-X
-X      return 0;
-}
-X
-static int msnd_write_cfg_io1(int cfg, int num, WORD io)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IO1_BASEHI, HIBYTE(io)))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IO1_BASELO, LOBYTE(io)))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_read_cfg_io1(int cfg, int num, WORD *io)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      
-X      *io = MAKEWORD(msnd_read_cfg(cfg, IREG_IO1_BASELO),
-X                     msnd_read_cfg(cfg, IREG_IO1_BASEHI));
-X
-X      return 0;
-}
-X
-static int msnd_write_cfg_irq(int cfg, int num, WORD irq)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IRQ_NUMBER, LOBYTE(irq)))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_IRQ_TYPE, IRQTYPE_EDGE))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_read_cfg_irq(int cfg, int num, WORD *irq)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      
-X      *irq = msnd_read_cfg(cfg, IREG_IRQ_NUMBER);
-X
-X      return 0;
-}
-X
-static int msnd_write_cfg_mem(int cfg, int num, int mem)
-{
-X      WORD wmem;
-X
-X      mem >>= 8;
-X      mem &= 0xfff;
-X      wmem = (WORD)mem;
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_MEMBASEHI, HIBYTE(wmem)))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_MEMBASELO, LOBYTE(wmem)))
-X              return -EIO;
-X      if (wmem && msnd_write_cfg(cfg, IREG_MEMCONTROL, (MEMTYPE_HIADDR | MEMTYPE_16BIT)))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_read_cfg_mem(int cfg, int num, int *mem)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      
-X      *mem = MAKEWORD(msnd_read_cfg(cfg, IREG_MEMBASELO),
-X                      msnd_read_cfg(cfg, IREG_MEMBASEHI));
-X      *mem <<= 8;
-X
-X      return 0;
-}
-X
-static int msnd_activate_logical(int cfg, int num)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg(cfg, IREG_ACTIVATE, LD_ACTIVATE))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_write_cfg_logical(int cfg, int num, WORD io0, WORD io1, WORD irq, int mem)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_write_cfg_io0(cfg, num, io0))
-X              return -EIO;
-X      if (msnd_write_cfg_io1(cfg, num, io1))
-X              return -EIO;
-X      if (msnd_write_cfg_irq(cfg, num, irq))
-X              return -EIO;
-X      if (msnd_write_cfg_mem(cfg, num, mem))
-X              return -EIO;
-X      if (msnd_activate_logical(cfg, num))
-X              return -EIO;
-X      return 0;
-}
-X
-static int msnd_read_cfg_logical(int cfg, int num, WORD *io0, WORD *io1, WORD *irq, int *mem)
-{
-X      if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))
-X              return -EIO;
-X      if (msnd_read_cfg_io0(cfg, num, io0))
-X              return -EIO;
-X      if (msnd_read_cfg_io1(cfg, num, io1))
-X              return -EIO;
-X      if (msnd_read_cfg_irq(cfg, num, irq))
-X              return -EIO;
-X      if (msnd_read_cfg_mem(cfg, num, mem))
-X              return -EIO;
-X      return 0;
-}
-X
-static void usage(void)
-{
-X      fprintf(stderr,
-X              "\n"
-X              "pinnaclecfg 1.0\n"
-X              "\n"
-X              "usage: pinnaclecfg <config port> [device config]\n"
-X              "\n"
-X              "This is for use with the card in NON-PnP mode only.\n"
-X              "\n"
-X              "Available devices (not all available for Fiji):\n"
-X              "\n"
-X              "        Device                       Description\n"
-X              "        -------------------------------------------------------------------\n"
-X              "        reset                        Reset all devices (i.e. disable)\n"
-X              "        show                         Display current device configurations\n"
-X              "\n"
-X              "        dsp <io> <irq> <mem>         Audio device\n"
-X              "        mpu <io> <irq>               Internal Kurzweil synth\n"
-X              "        ide <io0> <io1> <irq>        On-board IDE controller\n"
-X              "        joystick <io>                Joystick port\n"
-X              "\n");
-X      exit(1);
-}
-X
-static int cfg_reset(void)
-{
-X      int i;
-X
-X      for (i = 0; i < 4; ++i)
-X              msnd_write_cfg_logical(config_port, i, 0, 0, 0, 0);
-X      
-X      return 0;
-}
-X
-static int cfg_show(void)
-{
-X      int i;
-X      int count = 0;
-X
-X      for (i = 0; i < 4; ++i) {
-X              WORD io0, io1, irq;
-X              int mem;
-X              msnd_read_cfg_logical(config_port, i, &io0, &io1, &irq, &mem);
-X              switch (i) {
-X              case 0:
-X                      if (io0 || irq || mem) {
-X                              printf("dsp 0x%x %d 0x%x\n", io0, irq, mem);
-X                              ++count;
-X                      }
-X                      break;
-X              case 1:
-X                      if (io0 || irq) {
-X                              printf("mpu 0x%x %d\n", io0, irq);
-X                              ++count;
-X                      }
-X                      break;
-X              case 2:
-X                      if (io0 || io1 || irq) {
-X                              printf("ide 0x%x 0x%x %d\n", io0, io1, irq);
-X                              ++count;
-X                      }
-X                      break;
-X              case 3:
-X                      if (io0) {
-X                              printf("joystick 0x%x\n", io0);
-X                              ++count;
-X                      }
-X                      break;
-X              }
-X      }
-X
-X      if (count == 0)
-X              fprintf(stderr, "no devices configured\n");
-X      
-X      return 0;
-}
-X
-static int cfg_dsp(int argc, char *argv[])
-{
-X      int io, irq, mem;
-X
-X      if (argc < 3 ||
-X          sscanf(argv[0], "0x%x", &io) != 1 ||
-X          sscanf(argv[1], "%d", &irq) != 1 ||
-X          sscanf(argv[2], "0x%x", &mem) != 1)
-X              usage();
-X
-X      if (!(io == 0x290 ||
-X            io == 0x260 ||
-X            io == 0x250 ||
-X            io == 0x240 ||
-X            io == 0x230 ||
-X            io == 0x220 ||
-X            io == 0x210 ||
-X            io == 0x3e0)) {
-X              fprintf(stderr, "error: io must be one of "
-X                      "210, 220, 230, 240, 250, 260, 290, or 3E0\n");
-X              usage();
-X      }
-X      
-X      if (!(irq == 5 ||
-X            irq == 7 ||
-X            irq == 9 ||
-X            irq == 10 ||
-X            irq == 11 ||
-X            irq == 12)) {
-X              fprintf(stderr, "error: irq must be one of "
-X                      "5, 7, 9, 10, 11 or 12\n");
-X              usage();
-X      }
-X
-X      if (!(mem == 0xb0000 ||
-X            mem == 0xc8000 ||
-X            mem == 0xd0000 ||
-X            mem == 0xd8000 ||
-X            mem == 0xe0000 ||
-X            mem == 0xe8000)) {
-X              fprintf(stderr, "error: mem must be one of "
-X                      "0xb0000, 0xc8000, 0xd0000, 0xd8000, 0xe0000 or 0xe8000\n");
-X              usage();
-X      }
-X
-X      return msnd_write_cfg_logical(config_port, 0, io, 0, irq, mem);
-}
-X
-static int cfg_mpu(int argc, char *argv[])
-{
-X      int io, irq;
-X
-X      if (argc < 2 ||
-X          sscanf(argv[0], "0x%x", &io) != 1 ||
-X          sscanf(argv[1], "%d", &irq) != 1)
-X              usage();
-X      
-X      return msnd_write_cfg_logical(config_port, 1, io, 0, irq, 0);
-}
-X
-static int cfg_ide(int argc, char *argv[])
-{
-X      int io0, io1, irq;
-X
-X      if (argc < 3 ||
-X          sscanf(argv[0], "0x%x", &io0) != 1 ||
-X          sscanf(argv[0], "0x%x", &io1) != 1 ||
-X          sscanf(argv[1], "%d", &irq) != 1)
-X              usage();
-X      
-X      return msnd_write_cfg_logical(config_port, 2, io0, io1, irq, 0);
-}
-X
-static int cfg_joystick(int argc, char *argv[])
-{
-X      int io;
-X
-X      if (argc < 1 ||
-X          sscanf(argv[0], "0x%x", &io) != 1)
-X              usage();
-X      
-X      return msnd_write_cfg_logical(config_port, 3, io, 0, 0, 0);
-}
-X
-int main(int argc, char *argv[])
-{
-X      char *device;
-X      int rv = 0;
-X
-X      --argc; ++argv;
-X
-X      if (argc < 2)
-X              usage();
-X
-X      sscanf(argv[0], "0x%x", &config_port);
-X      if (config_port != 0x250 && config_port != 0x260 && config_port != 0x270) {
-X              fprintf(stderr, "error: <config port> must be 0x250, 0x260 or 0x270\n");
-X              exit(1);
-X      }
-X      if (ioperm(config_port, 2, 1)) {
-X              perror("ioperm");
-X              fprintf(stderr, "note: pinnaclecfg must be run as root\n");
-X              exit(1);
-X      }
-X      device = argv[1];
-X
-X      argc -= 2; argv += 2;
-X
-X      if (strcmp(device, "reset") == 0)
-X              rv = cfg_reset();
-X      else if (strcmp(device, "show") == 0)
-X              rv = cfg_show();
-X      else if (strcmp(device, "dsp") == 0)
-X              rv = cfg_dsp(argc, argv);
-X      else if (strcmp(device, "mpu") == 0)
-X              rv = cfg_mpu(argc, argv);
-X      else if (strcmp(device, "ide") == 0)
-X              rv = cfg_ide(argc, argv);
-X      else if (strcmp(device, "joystick") == 0)
-X              rv = cfg_joystick(argc, argv);
-X      else {
-X              fprintf(stderr, "error: unknown device %s\n", device);
-X              usage();
-X      }
-X
-X      if (rv)
-X              fprintf(stderr, "error: device configuration failed\n");
-X      
-X      return 0;
-}
-SHAR_EOF
-  $shar_touch -am 1204092598 'MultiSound.d/pinnaclecfg.c' &&
-  chmod 0664 'MultiSound.d/pinnaclecfg.c' ||
-  $echo 'restore of' 'MultiSound.d/pinnaclecfg.c' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'MultiSound.d/pinnaclecfg.c:' 'MD5 check failed'
-366bdf27f0db767a3c7921d0a6db20fe  MultiSound.d/pinnaclecfg.c
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/pinnaclecfg.c'`"
-    test 10235 -eq "$shar_count" ||
-    $echo 'MultiSound.d/pinnaclecfg.c:' 'original size' '10235,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= MultiSound.d/Makefile ==============
-if test -f 'MultiSound.d/Makefile' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'MultiSound.d/Makefile' '(file already exists)'
-else
-  $echo 'x -' extracting 'MultiSound.d/Makefile' '(text)'
-  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/Makefile' &&
-CC     = gcc
-CFLAGS = -O
-PROGS  = setdigital msndreset pinnaclecfg conv
-X
-all: $(PROGS)
-X
-clean:
-X      rm -f $(PROGS)
-SHAR_EOF
-  $shar_touch -am 1204092398 'MultiSound.d/Makefile' &&
-  chmod 0664 'MultiSound.d/Makefile' ||
-  $echo 'restore of' 'MultiSound.d/Makefile' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'MultiSound.d/Makefile:' 'MD5 check failed'
-76ca8bb44e3882edcf79c97df6c81845  MultiSound.d/Makefile
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/Makefile'`"
-    test 106 -eq "$shar_count" ||
-    $echo 'MultiSound.d/Makefile:' 'original size' '106,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= MultiSound.d/conv.l ==============
-if test -f 'MultiSound.d/conv.l' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'MultiSound.d/conv.l' '(file already exists)'
-else
-  $echo 'x -' extracting 'MultiSound.d/conv.l' '(text)'
-  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/conv.l' &&
-%%
-[ \n\t,\r]
-\;.*
-DB
-[0-9A-Fa-f]+H  { int n; sscanf(yytext, "%xH", &n); printf("%c", n); }
-%%
-int yywrap() { return 1; }
-main() { yylex(); }
-SHAR_EOF
-  $shar_touch -am 0828231798 'MultiSound.d/conv.l' &&
-  chmod 0664 'MultiSound.d/conv.l' ||
-  $echo 'restore of' 'MultiSound.d/conv.l' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'MultiSound.d/conv.l:' 'MD5 check failed'
-d2411fc32cd71a00dcdc1f009e858dd2  MultiSound.d/conv.l
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/conv.l'`"
-    test 141 -eq "$shar_count" ||
-    $echo 'MultiSound.d/conv.l:' 'original size' '141,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= MultiSound.d/msndreset.c ==============
-if test -f 'MultiSound.d/msndreset.c' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'MultiSound.d/msndreset.c' '(file already exists)'
-else
-  $echo 'x -' extracting 'MultiSound.d/msndreset.c' '(text)'
-  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/msndreset.c' &&
-/*********************************************************************
-X *
-X * msndreset.c - resets the MultiSound card
-X *
-X * Copyright (C) 1998 Andrew Veliath
-X *
-X * This program is free software; you can redistribute it and/or modify
-X * it under the terms of the GNU General Public License as published by
-X * the Free Software Foundation; either version 2 of the License, or
-X * (at your option) any later version.
-X *
-X * This program is distributed in the hope that it will be useful,
-X * but WITHOUT ANY WARRANTY; without even the implied warranty of
-X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-X * GNU General Public License for more details.
-X *
-X * You should have received a copy of the GNU General Public License
-X * along with this program; if not, write to the Free Software
-X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-X *
-X ********************************************************************/
-X
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/soundcard.h>
-X
-int main(int argc, char *argv[])
-{
-X      int fd;
-X
-X      if (argc != 2) {
-X              fprintf(stderr, "usage: msndreset <mixer device>\n");
-X              exit(1);
-X      }
-X
-X      if ((fd = open(argv[1], O_RDWR)) < 0) {
-X              perror(argv[1]);
-X              exit(1);
-X      }
-X
-X      if (ioctl(fd, SOUND_MIXER_PRIVATE1, 0) < 0) {
-X              fprintf(stderr, "error: msnd ioctl reset failed\n");
-X              perror("ioctl");
-X              close(fd);
-X              exit(1);
-X      }
-X
-X      close(fd);
-X      
-X      return 0;
-}
-SHAR_EOF
-  $shar_touch -am 1204100698 'MultiSound.d/msndreset.c' &&
-  chmod 0664 'MultiSound.d/msndreset.c' ||
-  $echo 'restore of' 'MultiSound.d/msndreset.c' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'MultiSound.d/msndreset.c:' 'MD5 check failed'
-c52f876521084e8eb25e12e01dcccb8a  MultiSound.d/msndreset.c
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/msndreset.c'`"
-    test 1472 -eq "$shar_count" ||
-    $echo 'MultiSound.d/msndreset.c:' 'original size' '1472,' 'current size' "$shar_count!"
-  fi
-fi
-rm -fr _sh01426
-exit 0
diff --git a/Documentation/sound/oss/OPL3 b/Documentation/sound/oss/OPL3
deleted file mode 100644 (file)
index 2468ff8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-A pure OPL3 card is nice and easy to configure. Simply do
-
-insmod opl3 io=0x388
-
-Change the I/O address in the very unlikely case this card is differently
-configured
diff --git a/Documentation/sound/oss/Opti b/Documentation/sound/oss/Opti
deleted file mode 100644 (file)
index 4cd5d9a..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-Support for the OPTi 82C931 chip
---------------------------------
-Note: parts of this README file apply also to other
-cards that use the mad16 driver.
-
-Some items in this README file are based on features
-added to the sound driver after Linux-2.1.91 was out.
-By the time of writing this I do not know which official
-kernel release will include these features.
-Please do not report inconsistencies on older Linux
-kernels.
-
-The OPTi 82C931 is supported in its non-PnP mode.
-Usually you do not need to set jumpers, etc. The sound driver
-will check the card status and if it is required it will
-force the card into a mode in which it can be programmed.
-
-If you have another OS installed on your computer it is recommended
-that Linux and the other OS use the same resources.
-
-Also, it is recommended that resources specified in /etc/modprobe.d/*.conf
-and resources specified in /etc/isapnp.conf agree.
-
-Compiling the sound driver
---------------------------
-I highly recommend that you build a modularized sound driver.
-This document does not cover a sound-driver which is built in
-the kernel.
-
-Sound card support should be enabled as a module (chose m).
-Answer 'm' for  these items:
-  Generic OPL2/OPL3 FM synthesizer support             (CONFIG_SOUND_ADLIB)
-  Microsoft Sound System support                       (CONFIG_SOUND_MSS)
-  Support for OPTi MAD16 and/or Mozart based cards     (CONFIG_SOUND_MAD16)
-  FM synthesizer (YM3812/OPL-3) support                        (CONFIG_SOUND_YM3812)
-
-The configuration menu may ask for addresses, IRQ lines or DMA
-channels. If the card is used as a module the module loading
-options will override these values.
-
-For the OPTi 931 you can answer 'n' to:
-  Support MIDI in older MAD16 based cards (requires SB)        (CONFIG_SOUND_MAD16_OLDCARD)
-If you do need MIDI support in a Mozart or C928 based card you
-need to answer 'm' to the above question. In that case you will
-also need to answer 'm' to:
-  '100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support' (CONFIG_SOUND_SB)
-
-Go on and compile your kernel and modules. Install the modules. Run depmod -a.
-
-Using isapnptools
------------------
-In most systems with a PnP BIOS you do not need to use isapnp. The
-initialization provided by the BIOS is sufficient for the driver
-to pick up the card and continue initialization.
-
-If that fails, or if you have other PnP cards, you need to use isapnp
-to initialize the card.
-This was tested with isapnptools-1.11 but I recommend that you use
-isapnptools-1.13 (or newer). Run pnpdump to dump the information
-about your PnP cards. Then edit the resulting file and select
-the options of your choice. This file is normally installed as
-/etc/isapnp.conf.
-
-The driver has one limitation with respect to I/O port resources:
-IO3 base must be 0x0E0C.  Although isapnp allows other ports, this
-address is hard-coded into the driver.
-
-Using kmod and autoloading the sound driver
--------------------------------------------
-Config files in '/etc/modprobe.d/' are used as below:
-
-alias mixer0 mad16
-alias audio0 mad16
-alias midi0  mad16
-alias synth0 opl3
-options sb mad16=1
-options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
-options opl3 io=0x388
-install mad16 /sbin/modprobe -i mad16 && /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
-
-If you have an MPU daughtercard or onboard MPU you will want to add to the
-"options mad16" line - eg 
-
-options mad16 irq=5 dma=0 dma16=3 io=0x530 mpu_io=0x330 mpu_irq=9
-
-To set the I/O and IRQ of the MPU.
-
-
-Explain:
-
-alias mixer0 mad16
-alias audio0 mad16
-alias midi0  mad16
-alias synth0 opl3
-
-When any sound device is opened the kernel requests auto-loading
-of char-major-14. There is a built-in alias that translates this
-request to loading the main sound module.
-
-The sound module in its turn will request loading of a sub-driver
-for mixer, audio, midi or synthesizer device. The first 3 are
-supported by the mad16 driver. The synth device is supported
-by the opl3 driver.
-
-There is currently no way to autoload the sound device driver
-if more than one card is installed.
-
-options sb mad16=1
-
-This is left for historical reasons. If you enable the
-config option 'Support MIDI in older MAD16 based cards (requires SB)'
-or if you use an older mad16 driver it will force loading of the
-SoundBlaster driver. This option tells the SB driver not to look
-for a SB card but to wait for the mad16 driver.
-
-options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
-options opl3 io=0x388
-
-post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
-
-This sets resources and options for the mad16 and opl3 drivers.
-I use two DMA channels (only one is required) to enable full duplex.
-joystick=1 enables the joystick port. cdtype=0 disables the cd port.
-You can also set mpu_io and mpu_irq in the mad16 options for the
-uart401 driver.
-
-This tells modprobe to run /sbin/ad1848_mixer_reroute after
-mad16 is successfully loaded and initialized. The source
-for ad1848_mixer_reroute is appended to the end of this readme
-file. It is impossible for the sound driver to know the actual
-connections to the mixer. The 3 inputs intended for cd, synth
-and line-in are mapped to the generic inputs line1, line2 and
-line3. This program reroutes these mixer channels to their
-right names (note the right mapping depends on the actual sound
-card that you use).
-The numeric parameters mean:
- 14=line1 8=cd    - reroute line1 to the CD input.
- 15=line2 3=synth - reroute line2 to the synthesizer input.
- 16=line3 6=line  - reroute line3 to the line input.
-For reference on other input names look at the file
-/usr/include/linux/soundcard.h.
-
-Using a joystick
------------------
-You must enable a joystick in the mad16 options. (also
-in /etc/isapnp.conf if you use it).
-Tested with regular analog joysticks.
-
-A CDROM drive connected to the sound card
------------------------------------------
-The 82C931 chip has support only for secondary ATAPI cdrom.
-(cdtype=8). Loading the mad16 driver resets the C931 chip
-and if a cdrom was already mounted it may cause a complete
-system hang. Do not use the sound card if you have an alternative.
-If you do use the sound card it is important that you load
-the mad16 driver (use "modprobe mad16" to prevent auto-unloading)
-before the cdrom is accessed the first time.
-
-Using the sound driver built-in to the kernel may help here, but...
-Most new systems have a PnP BIOS and also two IDE controllers.
-The IDE controller on the sound card may be needed only on older
-systems (which have only one IDE controller) but these systems
-also do not have a PnP BIOS - requiring isapnptools and a modularized
-driver.
-
-Known problems
---------------
-1. See the section on "A CDROM drive connected to the sound card".
-
-2. On my system the codec cannot capture companded sound samples.
-   (eg., recording from /dev/audio). When any companded capture is
-   requested I get stereo-16 bit samples instead. Playback of
-   companded samples works well. Apparently this problem is not common
-   to all C931 based cards. I do not know how to identify cards that
-   have this problem.
-
-Source for ad1848_mixer_reroute.c
----------------------------------
-#include <stdio.h>
-#include <fcntl.h>
-#include <linux/soundcard.h>
-
-static char *mixer_names[SOUND_MIXER_NRDEVICES] =
-       SOUND_DEVICE_LABELS;
-
-int
-main(int argc, char **argv) {
-       int val, from, to;
-       int i, fd;
-
-       fd = open("/dev/mixer", O_RDWR);
-       if(fd < 0) {
-               perror("/dev/mixer");
-               return 1;
-       }
-
-       for(i = 2; i < argc; i += 2) {
-               from = atoi(argv[i-1]);
-               to = atoi(argv[i]);
-
-               if(to == SOUND_MIXER_NONE)
-                       fprintf(stderr, "%s: turning off mixer %s\n",
-                               argv[0], mixer_names[to]);
-               else
-                       fprintf(stderr, "%s: rerouting mixer %s to %s\n",
-                               argv[0], mixer_names[from], mixer_names[to]);
-
-               val = from << 8 | to;
-
-               if(ioctl(fd, SOUND_MIXER_PRIVATE2, &val)) {
-                       perror("AD1848 mixer reroute");
-                       return 1;
-               }
-       }
-
-       return 0;
-}
-
diff --git a/Documentation/sound/oss/PAS16 b/Documentation/sound/oss/PAS16
deleted file mode 100644 (file)
index 5c27229..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-Pro Audio Spectrum 16 for 2.3.99 and later
-=========================================
-by Thomas Molina (tmolina@home.com)
-last modified 3 Mar 2001
-Acknowledgement to Axel Boldt (boldt@math.ucsb.edu) for stuff taken
-from Configure.help, Riccardo Facchetti for stuff from README.OSS,
-and others whose names I could not find.
-
-This documentation is relevant for the PAS16 driver (pas2_card.c and
-friends) under kernel version 2.3.99 and later.  If you are
-unfamiliar with configuring sound under Linux, please read the
-Sound-HOWTO, Documentation/sound/oss/Introduction and other
-relevant docs first.
-
-The following information is relevant information from README.OSS
-and legacy docs for the Pro Audio Spectrum 16 (PAS16):
-==================================================================
-
-The pas2_card.c driver supports the following cards --
-Pro Audio Spectrum 16 (PAS16) and compatibles:
-        Pro Audio Spectrum 16
-        Pro Audio Studio 16
-        Logitech Sound Man 16
-        NOTE! The original Pro Audio Spectrum as well as the PAS+ are not
-              and will not be supported by the driver.
-
-The sound driver configuration dialog
--------------------------------------
-
-Sound configuration starts by making some yes/no questions. Be careful
-when answering to these questions since answering y to a question may
-prevent some later ones from being asked. For example don't answer y to
-the question about (PAS16) if you don't really have a PAS16.  Sound
-configuration may also be made modular by answering m to configuration
-options presented. 
-
-Note also that all questions may not be asked. The configuration program
-may disable some questions depending on the earlier choices. It may also
-select some options automatically as well.
-
-  "ProAudioSpectrum 16 support",
-        - Answer 'y'_ONLY_ if you have a Pro Audio Spectrum _16_,
-          Pro Audio Studio 16 or Logitech SoundMan 16 (be sure that
-          you read the above list correctly). Don't answer 'y' if you
-          have some other card made by Media Vision or Logitech since they
-          are not PAS16 compatible.
-          NOTE! Since 3.5-beta10 you need to enable SB support (next question)
-          if you want to use the SB emulation of PAS16. It's also possible to
-          the emulation if you want to use a true SB card together with PAS16
-          (there is another question about this that is asked later).
-
-  "Generic OPL2/OPL3 FM synthesizer support",
-        - Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
-         The PAS16 has an OPL3-compatible FM chip.
-
-With PAS16 you can use two audio device files at the same time. /dev/dsp (and
-/dev/audio) is connected to the 8/16 bit native codec and the /dev/dsp1 (and
-/dev/audio1) is connected to the SB emulation (8 bit mono only).
-
-
-The new stuff for 2.3.99 and later
-============================================================================
-The following configuration options are relevant to configuring the PAS16:
-
-Sound card support
-CONFIG_SOUND
-  If you have a sound card in your computer, i.e. if it can say more
-  than an occasional beep, say Y. Be sure to have all the information
-  about your sound card and its configuration down (I/O port,
-  interrupt and DMA channel), because you will be asked for it.
-
-  You want to read the Sound-HOWTO, available from
-  http://www.tldp.org/docs.html#howto . General information
-  about the modular sound system is contained in the files
-  Documentation/sound/oss/Introduction. The file
-  Documentation/sound/oss/README.OSS contains some slightly outdated but
-  still useful information as well.
-
-OSS sound modules
-CONFIG_SOUND_OSS
-  OSS is the Open Sound System suite of sound card drivers. They make
-  sound programming easier since they provide a common API. Say Y or M
-  here (the module will be called sound.o) if you haven't found a
-  driver for your sound card above, then pick your driver from the
-  list below.
-
-Persistent DMA buffers
-CONFIG_SOUND_DMAP
-  Linux can often have problems allocating DMA buffers for ISA sound
-  cards on machines with more than 16MB of RAM. This is because ISA
-  DMA buffers must exist below the 16MB boundary and it is quite
-  possible that a large enough free block in this region cannot be
-  found after the machine has been running for a while. If you say Y
-  here the DMA buffers (64Kb) will be allocated at boot time and kept
-  until the shutdown. This option is only useful if you said Y to
-  "OSS sound modules", above. If you said M to "OSS sound modules"
-  then you can get the persistent DMA buffer functionality by passing
-  the command-line argument "dmabuf=1" to the sound.o module.
-
-  Say y here for PAS16.
-
-ProAudioSpectrum 16 support
-CONFIG_SOUND_PAS
-  Answer Y only if you have a Pro Audio Spectrum 16, ProAudio Studio
-  16 or Logitech SoundMan 16 sound card. Don't answer Y if you have
-  some other card made by Media Vision or Logitech since they are not
-  PAS16 compatible.  It is not necessary to enable the  separate
-  Sound Blaster support; it is included in the PAS driver.
-
-  If you compile the driver into the kernel, you have to add
-  "pas2=<io>,<irq>,<dma>,<dma2>,<sbio>,<sbirq>,<sbdma>,<sbdma2>
-  to the kernel command line.
-
-FM Synthesizer (YM3812/OPL-3) support
-CONFIG_SOUND_YM3812
-  Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
-  Answering Y is usually a safe and recommended choice, however some
-  cards may have software (TSR) FM emulation. Enabling FM support with
-  these cards may cause trouble (I don't currently know of any such
-  cards, however).
-  Please read the file Documentation/sound/oss/OPL3 if your card has an
-  OPL3 chip.
-  If you compile the driver into the kernel, you have to add
-  "opl3=<io>" to the kernel command line.
-
-  If you compile your drivers into the kernel, you MUST configure 
-  OPL3 support as a module for PAS16 support to work properly.
-  You can then get OPL3 functionality by issuing the command:
-  insmod opl3
-  In addition, you must either add the following line to 
-  /etc/modprobe.d/*.conf:
-  options opl3 io=0x388
-  or else add the following line to /etc/lilo.conf:
-  opl3=0x388
-
-
-EXAMPLES
-===================================================================
-To use the PAS16 in my computer I have enabled the following sound
-configuration options:
-
-CONFIG_SOUND=y
-CONFIG_SOUND_OSS=y
-CONFIG_SOUND_TRACEINIT=y
-CONFIG_SOUND_DMAP=y
-CONFIG_SOUND_PAS=y
-CONFIG_SOUND_SB=n
-CONFIG_SOUND_YM3812=m
-
-I have also included the following append line in /etc/lilo.conf:
-append="pas2=0x388,10,3,-1,0x220,5,1,-1 sb=0x220,5,1,-1 opl3=0x388"
-
-The io address of 0x388 is default configuration on the PAS16.  The
-irq of 10 and dma of 3 may not match your installation.  The above 
-configuration enables PAS16, 8-bit Soundblaster and OPL3
-functionality.  If Soundblaster functionality is not desired, the
-following line would be appropriate:
-append="pas2=0x388,10,3,-1,0,-1,-1,-1 opl3=0x388"
-
-If sound is built totally modular, the above options may be 
-specified in /etc/modprobe.d/*.conf for pas2, sb and opl3
-respectively. 
diff --git a/Documentation/sound/oss/PSS b/Documentation/sound/oss/PSS
deleted file mode 100644 (file)
index 187b952..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-The PSS cards and other ECHO based cards provide an onboard DSP with 
-downloadable programs and also has an AD1848 "Microsoft Sound System" 
-device. The PSS driver enables MSS and MPU401 modes of the card. SB 
-is not enabled since it doesn't work concurrently with MSS. 
-
-If you build this driver as a module then the driver takes the following
-parameters
-
-pss_io.        The I/O base the PSS card is configured at (normally 0x220
-               or 0x240)
-
-mss_io         The base address of the Microsoft Sound System interface.
-               This is normally 0x530, but may be 0x604 or other addresses.
-
-mss_irq                The interrupt assigned to the Microsoft Sound System
-               emulation. IRQ's 3,5,7,9,10,11 and 12 are available. If you
-               get IRQ errors be sure to check the interrupt is set to 
-               "ISA/Legacy" in the BIOS on modern machines.
-
-mss_dma                The DMA channel used by the Microsoft Sound System.
-               This can be 0, 1, or 3. DMA 0 is not available on older 
-               machines and will cause a crash on them.
-
-mpu_io         The MPU emulation base address. This sets the base of the
-               synthesizer. It is typically 0x330 but can be altered.
-
-mpu_irq                The interrupt to use for the synthesizer. It must differ
-               from the IRQ used by the Microsoft Sound System port.
-
-
-The mpu_io/mpu_irq fields are optional. If they are not specified the 
-synthesizer parts are not configured.
-
-When the module is loaded it looks for a file called 
-/etc/sound/pss_synth. This is the firmware file from the DOS install disks.
-This fil holds a general MIDI emulation. The file expected is called
-genmidi.ld on newer DOS driver install disks and synth.ld on older ones.
-
-You can also load alternative DSP algorithms into the card if you wish. One
-alternative driver can be found at http://www.mpg123.de/
-
diff --git a/Documentation/sound/oss/PSS-updates b/Documentation/sound/oss/PSS-updates
deleted file mode 100644 (file)
index 11914a1..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-       This file contains notes for users of PSS sound cards who wish to use the 
-newly added features of the newest version of this driver.
-
-       The major enhancements present in this new revision of this driver is the 
-addition of two new module parameters that allow you to take full advantage of 
-all the features present on your PSS sound card.  These features include the 
-ability to enable both the builtin CDROM and joystick ports.
-
-pss_enable_joystick
-
-       This parameter is basically a flag.  A 0 will leave the joystick port 
-disabled, while a non-zero value would enable the joystick port.  The default 
-setting is pss_enable_joystick=0 as this keeps this driver fully compatible 
-with systems that were using previous versions of this driver.  If you wish to 
-enable the joystick port you will have to add pss_enable_joystick=1 as an 
-argument to the driver.  To actually use the joystick port you will then have 
-to load the joystick driver itself.  Just remember to load the joystick driver 
-AFTER the pss sound driver.
-
-pss_cdrom_port
-
-       This parameter takes a port address as its parameter.  Any available port 
-address can be specified to enable the CDROM port, except for 0x0 and -1 as 
-these values would leave the port disabled.  Like the joystick port, the cdrom 
-port will require that an appropriate CDROM driver be loaded before you can make 
-use of the newly enabled CDROM port.  Like the joystick port option above, 
-remember to load the CDROM driver AFTER the pss sound driver.  While it may 
-differ on some PSS sound cards, all the PSS sound cards that I have seen have a 
-builtin Wearnes CDROM port.  If this is the case with your PSS sound card you 
-should load aztcd with the appropriate port option that matches the port you 
-assigned to the CDROM port when you loaded your pss sound driver.  (ex. 
-modprobe pss pss_cdrom_port=0x340 && modprobe aztcd aztcd=0x340)  The default 
-setting of this parameter leaves the CDROM port disabled to maintain full 
-compatibility with systems using previous versions of this driver.
-
-       Other options have also been added for the added convenience and utility 
-of the user.  These options are only available if this driver is loaded as a 
-module.
-
-pss_no_sound
-
-       This module parameter is a flag that can be used to tell the driver to 
-just configure non-sound components.  0 configures all components, a non-0 
-value will only attempt to configure the CDROM and joystick ports.  This 
-parameter can be used by a user who only wished to use the builtin joystick 
-and/or CDROM port(s) of his PSS sound card.  If this driver is loaded with this 
-parameter and with the parameter below set to true then a user can safely unload 
-this driver with the following command "rmmod pss && rmmod ad1848 && rmmod 
-mpu401 && rmmod sound && rmmod soundcore" and retain the full functionality of 
-his CDROM and/or joystick port(s) while gaining back the memory previously used 
-by the sound drivers.  This default setting of this parameter is 0 to retain 
-full behavioral compatibility with previous versions of this driver.
-
-pss_keep_settings
-
-       This parameter can be used to specify whether you want the driver to reset 
-all emulations whenever its unloaded.  This can be useful for those who are 
-sharing resources (io ports, IRQ's, DMA's) between different ISA cards.  This 
-flag can also be useful in that future versions of this driver may reset all 
-emulations by default on the driver's unloading (as it probably should), so 
-specifying it now will ensure that all future versions of this driver will 
-continue to work as expected.  The default value of this parameter is 1 to 
-retain full behavioral compatibility with previous versions of this driver.
-
-pss_firmware
-
-       This parameter can be used to specify the file containing the firmware 
-code so that a user could tell the driver where that file is located instead 
-of having to put it in a predefined location with a predefined name.  The 
-default setting of this parameter is "/etc/sound/pss_synth" as this was the 
-path and filename the hardcoded value in the previous versions of this driver.
-
-Examples:
-
-# Normal PSS sound card system, loading of drivers.
-# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).
-
-/sbin/modprobe pss pss_io=0x220 mpu_io=0x338 mpu_irq=9 mss_io=0x530 mss_irq=10 mss_dma=1 pss_cdrom_port=0x340 pss_enable_joystick=1
-/sbin/modprobe aztcd aztcd=0x340
-/sbin/modprobe joystick
-
-# System using the PSS sound card just for its CDROM and joystick ports.
-# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).
-
-/sbin/modprobe pss pss_io=0x220 pss_cdrom_port=0x340 pss_enable_joystick=1 pss_no_sound=1
-/sbin/rmmod pss && /sbin/rmmod ad1848 && /sbin/rmmod mpu401 && /sbin/rmmod sound && /sbin/rmmod soundcore  # This line not needed, but saves memory.
-/sbin/modprobe aztcd aztcd=0x340
-/sbin/modprobe joystick
diff --git a/Documentation/sound/oss/README.OSS b/Documentation/sound/oss/README.OSS
deleted file mode 100644 (file)
index a085ea3..0000000
+++ /dev/null
@@ -1,1455 +0,0 @@
-Introduction
-------------
-
-This file is a collection of all the old Readme files distributed with
-OSS/Lite by Hannu Savolainen. Since the new Linux sound driver is founded
-on it I think these information may still be interesting for users that
-have to configure their sound system.
-
-Be warned: Alan Cox is the current maintainer of the Linux sound driver so if
-you have problems with it, please contact him or the current device-specific
-driver maintainer (e.g. for aedsp16 specific problems contact me). If you have
-patches, contributions or suggestions send them to Alan: I'm sure they are
-welcome.
-
-In this document you will find a lot of references about OSS/Lite or ossfree:
-they are gone forever. Keeping this in mind and with a grain of salt this
-document can be still interesting and very helpful.
-
-[ File edited 17.01.1999 - Riccardo Facchetti ]
-[ Edited miroSOUND section 19.04.2001 - Robert Siemer ]
-
-OSS/Free version 3.8 release notes
-----------------------------------
-
-Please read the SOUND-HOWTO (available from sunsite.unc.edu and other Linux FTP 
-sites). It gives instructions about using sound with Linux. It's bit out of
-date but still very useful. Information about bug fixes and such things
-is available from the web page (see above).
-
-Please check http://www.opensound.com/pguide for more info about programming
-with OSS API.
-
-   ====================================================
--  THIS VERSION ____REQUIRES____ Linux 2.1.57 OR LATER.
-   ====================================================
-
-Packages "snd-util-3.8.tar.gz" and "snd-data-0.1.tar.Z"
-contain useful utilities to be used with this driver.
-See http://www.opensound.com/ossfree/ for
-download instructions.
-
-If you are looking for the installation instructions, please
-look forward into this document.
-
-Supported sound cards
----------------------
-
-See below.
-
-Contributors
-------------
-
-This driver contains code by several contributors. In addition several other
-persons have given useful suggestions. The following is a list of major
-contributors. (I could have forgotten some names.)
-
-       Craig Metz      1/2 of the PAS16 Mixer and PCM support
-       Rob Hooft       Volume computation algorithm for the FM synth.
-       Mika Liljeberg  uLaw encoding and decoding routines
-       Jeff Tranter    Linux SOUND HOWTO document
-       Greg Lee        Volume computation algorithm for the GUS and
-                       lots of valuable suggestions.
-       Andy Warner     ISC port
-       Jim Lowe,
-       Amancio Hasty Jr        FreeBSD/NetBSD port
-       Anders Baekgaard        Bug hunting and valuable suggestions.
-       Joerg Schubert  SB16 DSP support (initial version).
-       Andrew Robinson Improvements to the GUS driver
-       Megens SA       MIDI recording for SB and SB Pro (initial version).
-       Mikael Nordqvist  Linear volume support for GUS and
-                         nonblocking /dev/sequencer.
-       Ian Hartas              SVR4.2 port
-       Markus Aroharju and
-       Risto Kankkunen         Major contributions to the mixer support
-                               of GUS v3.7.
-       Hunyue Yau      Mixer support for SG NX Pro.
-       Marc Hoffman    PSS support (initial version).
-       Rainer Vranken  Initialization for Jazz16 (initial version).
-       Peter Trattler  Initial version of loadable module support for Linux.
-       JRA Gibson      16 bit mode for Jazz16 (initial version)
-       Davor Jadrijevic MAD16 support (initial version)
-       Gregor Hoffleit Mozart support (initial version)
-       Riccardo Facchetti Audio Excel DSP 16 (aedsp16) support
-       James Hightower Spotting a tiny but important bug in CS423x support.
-       Denis Sablic    OPTi 82C924 specific enhancements (non PnP mode)
-       Tim MacKenzie   Full duplex support for OPTi 82C930.
-       
-       Please look at lowlevel/README for more contributors.
-
-There are probably many other names missing. If you have sent me some
-patches and your name is not in the above list, please inform me.
-
-Sending your contributions or patches
--------------------------------------
-
-First of all it's highly recommended to contact me before sending anything
-or before even starting to do any work. Tell me what you suggest to be
-changed or what you have planned to do. Also ensure you are using the
-very latest (development) version of OSS/Free since the change may already be
-implemented there. In general it's a major waste of time to try to improve a
-several months old version. Information about the latest version can be found
-from http://www.opensound.com/ossfree. In general there is no point in
-sending me patches relative to production kernels.
-
-Sponsors etc.
--------------
-
-The following companies have greatly helped development of this driver 
-in form of a free copy of their product:
-
-Novell, Inc.           UnixWare personal edition + SDK
-The Santa Cruz Operation, Inc.         A SCO OpenServer + SDK
-Ensoniq Corp,          a SoundScape card and extensive amount of assistance
-MediaTrix Peripherals Inc, a AudioTrix Pro card + SDK
-Acer, Inc.             a pair of AcerMagic S23 cards.
-
-In addition the following companies have provided me sufficient amount
-of technical information at least some of their products (free or $$$):
-
-Advanced Gravis Computer Technology Ltd.
-Media Vision Inc.
-Analog Devices Inc.
-Logitech Inc.
-Aztech Labs Inc.
-Crystal Semiconductor Corporation,
-Integrated Circuit Systems Inc.
-OAK Technology
-OPTi
-Turtle Beach
-miro
-Ad Lib Inc. ($$)
-Music Quest Inc. ($$)
-Creative Labs ($$$)
-
-If you have some problems
-=========================
-
-Read the sound HOWTO (sunsite.unc.edu:/pub/Linux/docs/...?).
-Also look at the home page (http://www.opensound.com/ossfree). It may
-contain info about some recent bug fixes.
-
-It's likely that you have some problems when trying to use the sound driver
-first time. Sound cards don't have standard configuration so there are no
-good default configuration to use. Please try to use same I/O, DMA and IRQ
-values for the sound card than with DOS.
-
-If you get an error message when trying to use the driver, please look
-at /var/adm/messages for more verbose error message.
-
-
-The following errors are likely with /dev/dsp and /dev/audio.
-
-       - "No such device or address".
-       This error indicates that there are no suitable hardware for the
-       device file or the sound driver has been compiled without support for
-       this particular device. For example /dev/audio and /dev/dsp will not
-       work if "digitized voice support" was not enabled during "make config".
-       
-       - "Device or resource busy". Probably the IRQ (or DMA) channel 
-       required by the sound card is in use by some other device/driver.
-
-       - "I/O error". Almost certainly (99%) it's an IRQ or DMA conflict.
-       Look at the kernel messages in /var/adm/notice for more info.
-
-       - "Invalid argument". The application is calling ioctl()
-       with impossible parameters. Check that the application is
-       for sound driver version 2.X or later.
-
-Linux installation
-==================
-
-IMPORTANT!     Read this if you are installing a separately
-               distributed version of this driver.
-
-               Check that your kernel version works with this
-               release of the driver (see Readme). Also verify
-               that your current kernel version doesn't have more
-               recent sound driver version than this one. IT'S HIGHLY
-               RECOMMENDED THAT YOU USE THE SOUND DRIVER VERSION THAT
-               IS DISTRIBUTED WITH KERNEL SOURCES.
-
-- When installing separately distributed sound driver you should first
-  read the above notice. Then try to find proper directory where and how
-  to install the driver sources. You should not try to install a separately
-  distributed driver version if you are not able to find the proper way
-  yourself (in this case use the version that is distributed with kernel
-  sources). Remove old version of linux/drivers/sound directory before
-  installing new files.
-
-- To build the device files you need to run the enclosed shell script 
-  (see below). You need to do this only when installing sound driver
-  first time or when upgrading to much recent version than the earlier
-  one.
-
-- Configure and compile Linux as normally (remember to include the
-  sound support during "make config"). Please refer to kernel documentation
-  for instructions about configuring and compiling kernel. File Readme.cards
-  contains card specific instructions for configuring this driver for
-  use with various sound cards.
-
-Boot time configuration (using lilo and insmod) 
------------------------------------------------
-
-This information has been removed. Too many users didn't believe
-that it's really not necessary to use this method. Please look at
-Readme of sound driver version 3.0.1 if you still want to use this method.
-
-Problems
---------
-
-Common error messages:
-
-- /dev/???????: No such file or directory.
-Run the script at the end of this file.
-
-- /dev/???????: No such device.
-You are not running kernel which contains the sound driver. When using
-modularized sound driver this error means that the sound driver is not
-loaded.
-
-- /dev/????: No such device or address.
-Sound driver didn't detect suitable card when initializing. Please look at
-Readme.cards for info about configuring the driver with your card. Also
-check for possible boot (insmod) time error messages in /var/adm/messages.
-
-- Other messages or problems
-Please check http://www.opensound.com/ossfree for more info.
-
-Configuring version 3.8 (for Linux) with some common sound cards
-================================================================
-
-This document describes configuring sound cards with the freeware version of
-Open Sound Systems (OSS/Free). Information about the commercial version
-(OSS/Linux) and its configuration is available from 
-http://www.opensound.com/linux.html. Information presented here is
-not valid for OSS/Linux. 
-
-If you are unsure about how to configure OSS/Free
-you can download the free evaluation version of OSS/Linux from the above
-address. There is a chance that it can autodetect your sound card. In this case
-you can use the information included in soundon.log when configuring OSS/Free.
-
-
-IMPORTANT!     This document covers only cards that were "known" when
-               this driver version was released. Please look at
-               http://www.opensound.com/ossfree for info about
-               cards introduced recently.
-
-               When configuring the sound driver, you should carefully
-               check each sound configuration option (particularly
-               "Support for /dev/dsp and /dev/audio"). The default values
-               offered by these programs are not necessarily valid.
-
-
-THE BIGGEST MISTAKES YOU CAN MAKE
-=================================
-
-1. Assuming that the card is Sound Blaster compatible when it's not.
---------------------------------------------------------------------
-
-The number one mistake is to assume that your card is compatible with
-Sound Blaster. Only the cards made by Creative Technology or which have
-one or more chips labeled by Creative are SB compatible. In addition there
-are few sound chipsets which are SB compatible in Linux such as ESS1688 or
-Jazz16. Note that SB compatibility in DOS/Windows does _NOT_ mean anything
-in Linux. 
-
-IF YOU REALLY ARE 150% SURE YOU HAVE A SOUND BLASTER YOU CAN SKIP THE REST OF
-THIS CHAPTER.
-
-For most other "supposed to be SB compatible" cards you have to use other
-than SB drivers (see below).  It is possible to get most sound cards to work
-in SB mode but in general it's a complete waste of time. There are several
-problems which you will encounter by using SB mode with cards that are not
-truly SB compatible:
-
-- The SB emulation is at most SB Pro (DSP version 3.x) which means that 
-you get only 8 bit audio (there is always an another ("native") mode which
-gives the 16 bit capability). The 8 bit only operation is the reason why
-many users claim that sound quality in Linux is much worse than in DOS.
-In addition some applications require 16 bit mode and they produce just
-noise with a 8 bit only device.
-- The card may work only in some cases but refuse to work most of the
-time. The SB compatible mode always requires special initialization which is 
-done by the DOS/Windows drivers. This kind of cards work in Linux after
-you have warm booted it after DOS but they don't work after cold boot
-(power on or reset).
-- You get the famous "DMA timed out" messages. Usually all SB clones have
-software selectable IRQ and DMA settings. If the (power on default) values
-currently used by the card don't match configuration of the driver you will
-get the above error message whenever you try to record or play. There are
-few other reasons to the DMA timeout message but using the SB mode seems
-to be the most common cause.
-
-2. Trying to use a PnP (Plug & Play) card just like an ordinary sound card
---------------------------------------------------------------------------
-
-Plug & Play is a protocol defined by Intel and Microsoft. It lets operating
-systems to easily identify and reconfigure I/O ports, IRQs and DMAs of ISA
-cards. The problem with PnP cards is that the standard Linux doesn't currently
-(versions 2.1.x and earlier) don't support PnP. This means that you will have
-to use some special tricks (see later) to get a PnP card alive. Many PnP cards
-work after they have been initialized but this is not always the case.
-
-There are sometimes both PnP and non-PnP versions of the same sound card.
-The non-PnP version is the original model which usually has been discontinued
-more than an year ago. The PnP version has the same name but with "PnP"
-appended to it (sometimes not). This causes major confusion since the non-PnP
-model works with Linux but the PnP one doesn't.
-
-You should carefully check if "Plug & Play" or "PnP" is mentioned in the name
-of the card or in the documentation or package that came with the card. 
-Everything described in the rest of this document is not necessarily valid for
-PnP models of sound cards even you have managed to wake up the card properly.
-Many PnP cards are simply too different from their non-PnP ancestors which are
-covered by this document.
-
-
-Cards that are not (fully) supported by this driver
-===================================================
-
-See http://www.opensound.com/ossfree for information about sound cards 
-to be supported in future. 
-
-
-How to use sound without recompiling kernel and/or sound driver
-===============================================================
-
-There is a commercial sound driver which comes in precompiled form and doesn't
-require recompiling of the kernel. See http://www.4Front-tech.com/oss.html for
-more info.
-
-
-Configuring PnP cards
-=====================
-
-New versions of most sound cards use the so-called ISA PnP protocol for
-soft configuring their I/O, IRQ, DMA and shared memory resources.
-Currently at least cards made by Creative Technology (SB32 and SB32AWE
-PnP), Gravis (GUS PnP and GUS PnP Pro), Ensoniq (Soundscape PnP) and
-Aztech (some Sound Galaxy models) use PnP technology. The CS4232/4236 audio
-chip by Crystal Semiconductor (Intel Atlantis, HP Pavilion and many other
-motherboards) is also based on PnP technology but there is a "native" driver
-available for it (see information about CS4232 later in this document).
-
-PnP sound cards (as well as most other PnP ISA cards) are not supported
-by this version of the driver . Proper
-support for them should be released during 97 once the kernel level
-PnP support is available.
-
-There is a method to get most of the PnP cards to work. The basic method
-is the following:
-
-1) Boot DOS so the card's DOS drivers have a chance to initialize it.
-2) _Cold_ boot to Linux by using "loadlin.exe".  Hitting ctrl-alt-del
-works with older machines but causes a hard reset of all cards on recent
-(Pentium) machines.
-3) If you have the sound driver in Linux configured properly, the card should
-work now. "Proper" means that I/O, IRQ and DMA settings are the same as in
-DOS. The hard part is to find which settings were used. See the documentation of
-your card for more info.
-
-Windows 95 could work as well as DOS but running loadlin may be difficult.
-Probably you should "shut down" your machine to MS-DOS mode before running it.
-
-Some machines have a BIOS utility for setting PnP resources. This is a good
-way to configure some cards. In this case you don't need to boot DOS/Win95
-before starting Linux.
-
-Another way to initialize PnP cards without DOS/Win95 is a Linux based
-PnP isolation tool. When writing this there is a pre alpha test version
-of such a tool available from ftp://ftp.demon.co.uk/pub/unix/linux/utils. The
-file is called isapnptools-*. Please note that this tool is just a temporary
-solution which may be incompatible with future kernel versions having proper
-support for PnP cards. There are bugs in setting DMA channels in earlier
-versions of isapnptools so at least version 1.6 is required with sound cards.
-
-Yet another way to use PnP cards is to use (commercial) OSS/Linux drivers.  See
-http://www.opensound.com/linux.html for more info. This is probably the way you
-should do it if you don't want to spend time recompiling the kernel and 
-required tools.
-
-
-Read this before trying to configure the driver
-===============================================
-
-There are currently many cards that work with this driver. Some of the cards
-have native support while others work since they emulate some other
-card (usually SB, MSS/WSS and/or MPU401). The following cards have native
-support in the driver. Detailed instructions for configuring these cards
-will be given later in this document.
-
-Pro Audio Spectrum 16 (PAS16) and compatibles:
-       Pro Audio Spectrum 16
-       Pro Audio Studio 16
-       Logitech Sound Man 16
-       NOTE! The original Pro Audio Spectrum as well as the PAS+ are not
-             and will not be supported by the driver.
-
-Media Vision Jazz16 based cards
-       Pro Sonic 16
-       Logitech SoundMan Wave
-       (Other Jazz based cards should work but I don't have any reports
-       about them).
-
-Sound Blasters
-       SB 1.0 to 2.0
-       SB Pro
-       SB 16
-       SB32/64/AWE
-               Configure SB32/64/AWE just like SB16. See lowlevel/README.awe
-               for information about using the wave table synth.
-               NOTE! AWE63/Gold and 16/32/AWE "PnP" cards need to be activated
-                     using isapnptools before they work with OSS/Free.
-       SB16 compatible cards by other manufacturers than Creative.
-               You have been fooled since there are _no_ SB16 compatible
-               cards on the market (as of May 1997). It's likely that your card
-               is compatible just with SB Pro but there is also a non-SB-
-               compatible 16 bit mode. Usually it's MSS/WSS but it could also
-               be a proprietary one like MV Jazz16 or ESS ES688. OPTi
-               MAD16 chips are very common in so called "SB 16 bit cards"
-               (try with the MAD16 driver).
-
-       ======================================================================
-       "Supposed to be SB compatible" cards.
-               Forget the SB compatibility and check for other alternatives
-               first. The only cards that work with the SB driver in
-               Linux have been made by Creative Technology (there is at least
-               one chip on the card with "CREATIVE" printed on it). The
-               only other SB compatible chips are ESS and Jazz16 chips
-               (maybe ALSxxx chips too but they probably don't work).
-               Most other "16 bit SB compatible" cards such as "OPTi/MAD16" or
-               "Crystal" are _NOT_ SB compatible in Linux.
-
-               Practically all sound cards have some kind of SB emulation mode
-               in addition to their native (16 bit) mode. In most cases this
-               (8 bit only) SB compatible mode doesn't work with Linux. If
-               you get it working it may cause problems with games and
-               applications which require 16 bit audio. Some 16 bit only
-               applications don't check if the card actually supports 16 bits.
-               They just dump 16 bit data to a 8 bit card which produces just
-               noise.
-
-               In most cases the 16 bit native mode is supported by Linux.
-               Use the SB mode with "clones" only if you don't find anything
-               better from the rest of this doc.
-       ======================================================================
-
-Gravis Ultrasound (GUS)
-       GUS
-       GUS + the 16 bit option
-       GUS MAX
-       GUS ACE (No MIDI port and audio recording)
-       GUS PnP (with RAM)
-
-MPU-401        and compatibles
-       The driver works both with the full (intelligent mode) MPU-401
-       cards (such as MPU IPC-T and MQX-32M) and with the UART only
-       dumb MIDI ports. MPU-401 is currently the most common MIDI
-       interface. Most sound cards are compatible with it. However,
-       don't enable MPU401 mode blindly. Many cards with native support
-       in the driver have their own MPU401 driver. Enabling the standard one
-       will cause a conflict with these cards. So check if your card is
-       in the list of supported cards before enabling MPU401.
-
-Windows Sound System (MSS/WSS)
-       Even when Microsoft has discontinued their own Sound System card 
-       they managed to make it a standard. MSS compatible cards are based on 
-       a codec chip which is easily available from at least two manufacturers
-       (AD1848 by Analog Devices and CS4231/CS4248 by Crystal Semiconductor).
-       Currently most sound cards are based on one of the MSS compatible codec
-       chips. The CS4231 is used in the high quality cards such as GUS MAX,
-       MediaTrix AudioTrix Pro and TB Tropez (GUS MAX is not MSS compatible). 
-
-       Having a AD1848, CS4248 or CS4231 codec chip on the card is a good
-       sign. Even if the card is not MSS compatible, it could be easy to write
-       support for it. Note also that most MSS compatible cards
-       require special boot time initialization which may not be present
-       in the driver. Also, some MSS compatible cards have native support.
-       Enabling the MSS support with these cards is likely to
-       cause a conflict. So check if your card is listed in this file before
-       enabling the MSS support.
-
-Yamaha FM synthesizers (OPL2, OPL3 (not OPL3-SA) and OPL4)
-       Most sound cards have a FM synthesizer chip. The OPL2 is a 2
-       operator chip used in the original AdLib card. Currently it's used
-       only in the cheapest (8 bit mono) cards. The OPL3 is a 4 operator 
-       FM chip which provides better sound quality and/or more available 
-       voices than the OPL2. The OPL4 is a new chip that has an OPL3 and
-       a wave table synthesizer packed onto the same chip. The driver supports
-       just the OPL3 mode directly. Most cards with an OPL4 (like
-       SM Wave and AudioTrix Pro) support the OPL4 mode using MPU401
-       emulation. Writing a native OPL4 support is difficult
-       since Yamaha doesn't give information about their sample ROM chip.
-
-       Enable the generic OPL2/OPL3 FM synthesizer support if your
-       card has a FM chip made by Yamaha. Don't enable it if your card
-       has a software (TRS) based FM emulator.
-
-       ----------------------------------------------------------------
-       NOTE! OPL3-SA is different chip than the ordinary OPL3. In addition
-       to the FM synth this chip has also digital audio (WSS) and
-       MIDI (MPU401) capabilities. Support for OPL3-SA is described below.
-       ----------------------------------------------------------------
-
-Yamaha OPL3-SA1
-
-       Yamaha OPL3-SA1 (YMF701) is an audio controller chip used on some
-       (Intel) motherboards and on cheap sound cards. It should not be
-       confused with the original OPL3 chip (YMF278) which is entirely
-        different chip. OPL3-SA1 has support for MSS, MPU401 and SB Pro
-       (not used in OSS/Free) in addition to the OPL3 FM synth.
-
-       There are also chips called OPL3-SA2, OPL3-SA3, ..., OPL3SA-N. They
-       are PnP chips and will not work with the OPL3-SA1 driver. You should 
-       use the standard MSS, MPU401 and OPL3 options with these chips and to
-       activate the card using isapnptools.
-
-4Front Technologies SoftOSS
-
-       SoftOSS is a software based wave table emulation which works with
-       any 16 bit stereo sound card. Due to its nature a fast CPU is
-       required (P133 is minimum). Although SoftOSS does _not_ use MMX
-       instructions it has proven out that recent processors (which appear
-       to have MMX) perform significantly better with SoftOSS than earlier
-       ones. For example a P166MMX beats a PPro200. SoftOSS should not be used
-       on 486 or 386 machines.
-
-       The amount of CPU load caused by SoftOSS can be controlled by
-       selecting the CONFIG_SOFTOSS_RATE and CONFIG_SOFTOSS_VOICES
-       parameters properly (they will be prompted by make config). It's
-       recommended to set CONFIG_SOFTOSS_VOICES to 32. If you have a
-       P166MMX or faster (PPro200 is not faster) you can set
-       CONFIG_SOFTOSS_RATE to 44100 (kHz). However with slower systems it
-       recommended to use sampling rates around 22050 or even 16000 kHz.
-       Selecting too high values for these parameters may hang your
-       system when playing MIDI files with hight degree of polyphony
-       (number of concurrently playing notes). It's also possible to
-       decrease CONFIG_SOFTOSS_VOICES. This makes it possible to use
-       higher sampling rates. However using fewer voices decreases
-       playback quality more than decreasing the sampling rate.
-
-       SoftOSS keeps the samples loaded on the system's RAM so much RAM is
-       required. SoftOSS should never be used on machines with less than 16 MB
-       of RAM since this is potentially dangerous (you may accidentally run out
-       of memory which probably crashes the machine). 
-
-       SoftOSS implements the wave table API originally designed for GUS. For
-       this reason all applications designed for GUS should work (at least
-       after minor modifications). For example gmod/xgmod and playmidi -g are
-       known to work.
-
-       To work SoftOSS will require GUS compatible
-       patch files to be installed on the system (in /dos/ultrasnd/midi). You
-       can use the public domain MIDIA patchset available from several ftp
-       sites.
-
-        *********************************************************************
-       IMPORTANT NOTICE! The original patch set distributed with the Gravis 
-       Ultrasound card is not in public domain (even though it's available from
-       some FTP sites). You should contact Voice Crystal (www.voicecrystal.com)
-       if you like to use these patches with SoftOSS included in OSS/Free.
-        *********************************************************************
-
-PSS based cards (AD1848 + ADSP-2115 + Echo ESC614 ASIC)
-       Analog Devices and Echo Speech have together defined a sound card
-       architecture based on the above chips. The DSP chip is used
-       for emulation of SB Pro, FM and General MIDI/MT32.
-
-       There are several cards based on this architecture. The most known
-       ones are Orchid SW32 and Cardinal DSP16. 
-
-       The driver supports downloading DSP algorithms to these cards.
-
-       NOTE! You will have to use the "old" config script when configuring
-       PSS cards.
-
-MediaTrix AudioTrix Pro
-       The ATP card is built around a CS4231 codec and an OPL4 synthesizer
-       chips. The OPL4 mode is supported by a microcontroller running a
-       General MIDI emulator. There is also a SB 1.5 compatible playback mode.
-
-Ensoniq SoundScape and compatibles
-       Ensoniq has designed a sound card architecture based on the
-       OTTO synthesizer chip used in their professional MIDI synthesizers.
-       Several companies (including Ensoniq, Reveal and Spea) are selling
-       cards based on this architecture.
-
-       NOTE! The SoundScape PnP is not supported by OSS/Free. Ensoniq VIVO and
-       VIVO90 cards are not compatible with Soundscapes so the Soundscape
-        driver will not work with them. You may want to use OSS/Linux with these
-        cards.
-
-OPTi MAD16 and Mozart based cards
-       The Mozart (OAK OTI-601), MAD16 (OPTi 82C928), MAD16 Pro (OPTi 82C929),
-       OPTi 82C924/82C925 (in _non_ PnP mode) and OPTi 82C930 interface
-       chips are used in many different sound cards, including some
-       cards by Reveal miro and Turtle Beach (Tropez). The purpose of these
-       chips is to connect other audio components to the PC bus. The
-       interface chip performs address decoding for the other chips.
-       NOTE! Tropez Plus is not MAD16 but CS4232 based.
-       NOTE! MAD16 PnP cards (82C924, 82C925, 82C931) are not MAD16 compatible
-       in the PnP mode. You will have to use them in MSS mode after having
-       initialized them using isapnptools or DOS. 82C931 probably requires
-       initialization using DOS/Windows (running isapnptools is not enough).
-       It's possible to use 82C931 with OSS/Free by jumpering it to non-PnP
-       mode (provided that the card has a jumper for this). In non-PnP mode
-       82C931 is compatible with 82C930 and should work with the MAD16 driver
-       (without need to use isapnptools or DOS to initialize it). All OPTi
-       chips are supported by OSS/Linux (both in PnP and non-PnP modes).
-
-Audio Excel DSP16 
-       Support for this card was written by Riccardo Faccetti
-       (riccardo@cdc8g5.cdc.polimi.it). The AEDSP16 driver included in
-       the lowlevel/ directory. To use it you should enable the
-       "Additional low level drivers" option.
-
-Crystal CS4232 and CS4236 based cards such as AcerMagic S23, TB Tropez _Plus_ and 
-       many PC motherboards (Compaq, HP, Intel, ...)
-       CS4232 is a PnP multimedia chip which contains a CS3231A codec,
-       SB and MPU401 emulations. There is support for OPL3 too.
-       Unfortunately the MPU401 mode doesn't work (I don't know how to
-       initialize it). CS4236 is an enhanced (compatible) version of CS4232.
-       NOTE! Don't ever try to use isapnptools with CS4232 since this will just
-       freeze your machine (due to chip bugs). If you have problems in getting
-       CS4232 working you could try initializing it with DOS (CS4232C.EXE) and
-       then booting Linux using loadlin. CS4232C.EXE loads a secret firmware
-       patch which is not documented by Crystal.
-
-Turtle Beach Maui and Tropez "classic"
-       This driver version supports sample, patch and program loading commands
-       described in the Maui/Tropez User's manual. 
-       There is now full initialization support too. The audio side of
-       the Tropez is based on the MAD16 chip (see above).
-       NOTE! Tropez Plus is different card than Tropez "classic" and will not
-       work fully in Linux. You can get audio features working by configuring
-       the card as a CS4232 based card (above).
-
-
-Jumpers and software configuration
-==================================
-
-Some of the earliest sound cards were jumper configurable. You have to
-configure the driver use I/O, IRQ and DMA settings
-that match the jumpers. Just few 8 bit cards are fully jumper 
-configurable (SB 1.x/2.x, SB Pro and clones).
-Some cards made by Aztech have an EEPROM which contains the 
-config info. These cards behave much like hardware jumpered cards.
-
-Most cards have jumper for the base I/O address but other parameters
-are software configurable. Sometimes there are few other jumpers too.
-
-Latest cards are fully software configurable or they are PnP ISA
-compatible. There are no jumpers on the board.
-
-The driver handles software configurable cards automatically. Just configure
-the driver to use I/O, IRQ and DMA settings which are known to work.
-You could usually use the same values than with DOS and/or Windows.
-Using different settings is possible but not recommended since it may cause
-some trouble (for example when warm booting from an OS to another or
-when installing new hardware to the machine).
-
-Sound driver sets the soft configurable parameters of the card automatically
-during boot. Usually you don't need to run any extra initialization
-programs when booting Linux but there are some exceptions. See the
-card-specific instructions below for more info.
-
-The drawback of software configuration is that the driver needs to know
-how the card must be initialized. It cannot initialize unknown cards
-even if they are otherwise compatible with some other cards (like SB,
-MPU401 or Windows Sound System).
-
-
-What if your card was not listed above?
-=======================================
-
-The first thing to do is to look at the major IC chips on the card.
-Many of the latest sound cards are based on some standard chips. If you
-are lucky, all of them could be supported by the driver. The most common ones
-are the OPTi MAD16, Mozart, SoundScape (Ensoniq) and the PSS architectures
-listed above. Also look at the end of this file for list of unsupported
-cards and the ones which could be supported later.
-
-The last resort is to send _exact_ name and model information of the card
-to me together with a list of the major IC chips (manufactured, model) to 
-me. I could then try to check if your card looks like something familiar.
-
-There are many more cards in the world than listed above. The first thing to
-do with these cards is to check if they emulate some other card or interface
-such as SB, MSS and/or MPU401. In this case there is a chance to get the
-card to work by booting DOS before starting Linux (boot DOS, hit ctrl-alt-del
-and boot Linux without hard resetting the machine). In this method the
-DOS based driver initializes the hardware to use known I/O, IRQ and DMA
-settings. If sound driver is configured to use the same settings, everything
-should work OK.
-
-
-Configuring sound driver (with Linux)
-=====================================
-
-The sound driver is currently distributed as part of the Linux kernel. The 
-files are in /usr/src/linux/drivers/sound/. 
-
-****************************************************************************
-*      ALWAYS USE THE SOUND DRIVER VERSION WHICH IS DISTRIBUTED WITH      *
-*      THE KERNEL SOURCE PACKAGE YOU ARE USING. SOME ALPHA AND BETA TEST  *
-*      VERSIONS CAN BE INSTALLED FROM A SEPARATELY DISTRIBUTED PACKAGE    *
-*      BUT CHECK THAT THE PACKAGE IS NOT MUCH OLDER (OR NEWER) THAN THE   *
-*      KERNEL YOU ARE USING. IT'S POSSIBLE THAT THE KERNEL/DRIVER         *
-*      INTERFACE CHANGES BETWEEN KERNEL RELEASES WHICH MAY CAUSE SOME     *
-*      INCOMPATIBILITY PROBLEMS.                                          *
-*                                                                         *
-*      IN CASE YOU INSTALL A SEPARATELY DISTRIBUTED SOUND DRIVER VERSION, *
-*      BE SURE TO REMOVE OR RENAME THE OLD SOUND DRIVER DIRECTORY BEFORE  *
-*      INSTALLING THE NEW ONE. LEAVING OLD FILES TO THE SOUND DRIVER      *
-*      DIRECTORY _WILL_ CAUSE PROBLEMS WHEN THE DRIVER IS USED OR         *
-*      COMPILED.                                                          *
-****************************************************************************
-
-To configure the driver, run "make config" in the kernel source directory
-(/usr/src/linux). Answer "y" or "m" to the question about Sound card support
-(after the questions about mouse, CD-ROM, ftape, etc. support).  Questions
-about options for sound will then be asked.
-
-After configuring the kernel and sound driver and compile the kernel 
-following instructions in the kernel README.
-
-The sound driver configuration dialog
--------------------------------------
-
-Sound configuration starts by making some yes/no questions. Be careful
-when answering to these questions since answering y to a question may
-prevent some later ones from being asked. For example don't answer y to
-the first question (PAS16) if you don't really have a PAS16. Don't enable
-more cards than you really need since they just consume memory. Also
-some drivers (like MPU401) may conflict with your SCSI controller and
-prevent kernel from booting. If you card was in the list of supported
-cards (above), please look at the card specific config instructions
-(later in this file) before starting to configure. Some cards must be
-configured in way which is not obvious.
-
-So here is the beginning of the config dialog. Answer 'y' or 'n' to these
-questions. The default answer is shown so that (y/n) means 'y' by default and
-(n/y) means 'n'. To use the default value, just hit ENTER. But be careful
-since using the default _doesn't_ guarantee anything.
-
-Note also that all questions may not be asked. The configuration program
-may disable some questions depending on the earlier choices. It may also
-select some options automatically as well.
-
-  "ProAudioSpectrum 16 support",
-       - Answer 'y'_ONLY_ if you have a Pro Audio Spectrum _16_,
-         Pro Audio Studio 16 or Logitech SoundMan 16 (be sure that
-         you read the above list correctly). Don't answer 'y' if you
-         have some other card made by Media Vision or Logitech since they
-         are not PAS16 compatible.
-         NOTE! Since 3.5-beta10 you need to enable SB support (next question)
-         if you want to use the SB emulation of PAS16. It's also possible to
-         the emulation if you want to use a true SB card together with PAS16
-         (there is another question about this that is asked later).
-  "Sound Blaster support",
-       - Answer 'y' if you have an original SB card made by Creative Labs
-         or a full 100% hardware compatible clone (like Thunderboard or
-         SM Games). If your card was in the list of supported cards (above),
-         please look at the card specific instructions later in this file
-         before answering this question. For an unknown card you may answer 
-         'y' if the card claims to be SB compatible.
-        Enable this option also with PAS16 (changed since v3.5-beta9).
-
-        Don't enable SB if you have a MAD16 or Mozart compatible card.
-
-  "Generic OPL2/OPL3 FM synthesizer support",
-       - Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
-         Answering 'y' is usually a safe and recommended choice. However some
-         cards may have software (TSR) FM emulation. Enabling FM support
-         with these cards may cause trouble. However I don't currently know
-         such cards.
-  "Gravis Ultrasound support",
-       - Answer 'y' if you have GUS or GUS MAX. Answer 'n' if you don't
-         have GUS since the GUS driver consumes much memory.
-         Currently I don't have experiences with the GUS ACE so I don't
-         know what to answer with it.
-  "MPU-401 support (NOT for SB16)",
-       - Be careful with this question. The MPU401 interface is supported
-         by almost any sound card today. However some natively supported cards
-         have their own driver for MPU401. Enabling the MPU401 option with
-         these cards will cause a conflict. Also enabling MPU401 on a system
-         that doesn't really have a MPU401 could cause some trouble. If your
-         card was in the list of supported cards (above), please look at
-         the card specific instructions later in this file.
-
-         In MOST cases this MPU401 driver should only be used with "true"
-         MIDI-only MPU401 professional cards. In most other cases there
-         is another way to get the MPU401 compatible interface of a
-         sound card to work.
-         Support for the MPU401 compatible MIDI port of SB16, ESS1688
-         and MV Jazz16 cards is included in the SB driver. Use it instead
-         of this separate MPU401 driver with these cards. As well 
-         Soundscape, PSS and Maui drivers include their own MPU401
-         options.
-
-         It's safe to answer 'y' if you have a true MPU401 MIDI interface
-         card. 
-  "6850 UART Midi support",
-       - It's safe to answer 'n' to this question in all cases. The 6850
-         UART interface is so rarely used.
-  "PSS (ECHO-ADI2111) support",
-       - Answer 'y' only if you have Orchid SW32, Cardinal DSP16 or some
-         other card based on the PSS chipset (AD1848 codec + ADSP-2115
-         DSP chip + Echo ESC614 ASIC CHIP).
-  "16 bit sampling option of GUS (_NOT_ GUS MAX)",
-       - Answer 'y' if you have installed the 16 bit sampling daughtercard
-         to your GUS. Answer 'n' if you have GUS MAX. Enabling this option
-         disables GUS MAX support.
-  "GUS MAX support",
-       - Answer 'y' only if you have a GUS MAX.
-  "Microsoft Sound System support",
-       - Again think carefully before answering 'y' to this question. It's
-         safe to answer 'y' in case you have the original Windows Sound 
-         System card made by Microsoft or Aztech SG 16 Pro (or NX16 Pro).
-         Also you may answer 'y' in case your card was not listed earlier
-         in this file. For cards having native support in the driver, consult
-         the card specific instructions later in this file. Some drivers
-         have their own MSS support and enabling this option will cause a
-         conflict. 
-         Note! The MSS driver permits configuring two DMA channels. This is a
-         "nonstandard" feature and works only with very few cards (if any).
-         In most cases the second DMA channel should be disabled or set to
-         the same channel than the first one. Trying to configure two separate
-         channels with cards that don't support this feature will prevent
-         audio (at least recording) from working.
-  "Ensoniq Soundscape support",
-       - Answer 'y' if you have a sound card based on the Ensoniq SoundScape
-         chipset. Such cards are being manufactured at least by Ensoniq,
-         Spea and Reveal (note that Reveal makes other cards also).  The oldest
-         cards made by Spea don't work properly with Linux. 
-         Soundscape PnP as well as Ensoniq VIVO work only with the commercial
-         OSS/Linux version.
-  "MediaTrix AudioTrix Pro support",
-       - Answer 'y' if you have the AudioTrix Pro.
-  "Support for MAD16 and/or Mozart based cards",
-       - Answer y if your card has a Mozart (OAK OTI-601) or MAD16
-         (OPTi 82C928, 82C929, 82C924/82C925 or 82C930) audio interface chip. 
-         These chips are
-         currently quite common so it's possible that many no-name cards
-         have one of them. In addition the MAD16 chip is used in some
-         cards made by known manufacturers such as Turtle Beach (Tropez),
-         Reveal (some models) and Diamond (some recent models).
-         Note OPTi 82C924 and 82C925 are MAD16 compatible only in non PnP
-         mode (jumper selectable on many cards).
-  "Support for TB Maui"
-       - This enables TB Maui specific initialization. Works with TB Maui
-       and TB Tropez (may not work with Tropez Plus).
-
-
-Then the configuration program asks some y/n questions about the higher
-level services. It's recommended to answer 'y' to each of these questions.
-Answer 'n' only if you know you will not need the option.
-
-  "MIDI interface support",
-       - Answering 'n' disables /dev/midi## devices and access to any
-         MIDI ports using /dev/sequencer and /dev/music. This option
-         also affects any MPU401 and/or General MIDI compatible devices.
-  "FM synthesizer (YM3812/OPL-3) support",
-       - Answer 'y' here.
-  "/dev/sequencer support",
-       - Answering 'n' disables /dev/sequencer and /dev/music.
-
-Entering the I/O, IRQ and DMA config parameters
------------------------------------------------
-
-After the above questions the configuration program prompts for the
-card specific configuration information. Usually just a set of
-I/O address, IRQ and DMA numbers are asked. With some cards the program
-asks for some files to be used during initialization of the card. For example
-many cards have a DSP chip or microprocessor which must be initialized by
-downloading a program (microcode) file to the card.
-
-Instructions for answering these questions are given in the next section.
-
-
-Card specific information
-=========================
-
-This section gives additional instructions about configuring some cards.
-Please refer manual of your card for valid I/O, IRQ and DMA numbers. Using
-the same settings with DOS/Windows and Linux is recommended. Using
-different values could cause some problems when switching between
-different operating systems.
-
-Sound Blasters (the original ones by Creative)
----------------------------------------------
-
-NOTE! Check if you have a PnP Sound Blaster (cards sold after summer 1995
-      are almost certainly PnP ones). With PnP cards you should use isapnptools
-      to activate them (see above).
-
-It's possible to configure these cards to use different I/O, IRQ and
-DMA settings. Since the possible/default settings have changed between various
-models, you have to consult manual of your card for the proper ones. It's
-a good idea to use the same values than with DOS/Windows. With SB and SB Pro
-it's the only choice. SB16 has software selectable IRQ and DMA channels but
-using different values with DOS and Linux is likely to cause troubles. The
-DOS driver is not able to reset the card properly after warm boot from Linux
-if Linux has used different IRQ or DMA values.
-
-The original (steam) Sound Blaster (versions 1.x and 2.x) use always
-DMA1. There is no way to change it.
-
-The SB16 needs two DMA channels. A 8 bit one (1 or 3) is required for
-8 bit operation and a 16 bit one (5, 6 or 7) for the 16 bit mode. In theory
-it's possible to use just one (8 bit) DMA channel by answering the 8 bit
-one when the configuration program asks for the 16 bit one. This may work
-in some systems but is likely to cause terrible noise on some other systems.
-
-It's possible to use two SB16/32/64 at the same time. To do this you should
-first configure OSS/Free for one card. Then edit local.h manually and define
-SB2_BASE, SB2_IRQ, SB2_DMA and SB2_DMA2 for the second one. You can't get
-the OPL3, MIDI and EMU8000 devices of the second card to work. If you are
-going to use two PnP Sound Blasters, ensure that they are of different model
-and have different PnP IDs. There is no way to get two cards with the same
-card ID and serial number to work. The easiest way to check this is trying 
-if isapnptools can see both cards or just one.
-
-NOTE!  Don't enable the SM Games option (asked by the configuration program)
-       if you are not 101% sure that your card is a Logitech Soundman Games
-       (not a SM Wave or SM16).
-
-SB Clones
----------
-
-First of all: There are no SB16 clones. There are SB Pro clones with a
-16 bit mode which is not SB16 compatible. The most likely alternative is that
-the 16 bit mode means MSS/WSS.
-
-There are just a few fully 100% hardware SB or SB Pro compatible cards.
-I know just Thunderboard and SM Games. Other cards require some kind of
-hardware initialization before they become SB compatible. Check if your card
-was listed in the beginning of this file. In this case you should follow
-instructions for your card later in this file.
-
-For other not fully SB clones you may try initialization using DOS in
-the following way:
-
-       - Boot DOS so that the card specific driver gets run.
-       - Hit ctrl-alt-del (or use loadlin) to boot Linux. Don't
-         switch off power or press the reset button.
-       - If you use the same I/O, IRQ and DMA settings in Linux, the
-         card should work.
-
-If your card is both SB and MSS compatible, I recommend using the MSS mode.
-Most cards of this kind are not able to work in the SB and the MSS mode 
-simultaneously. Using the MSS mode provides 16 bit recording and playback.
-
-ProAudioSpectrum 16 and compatibles
------------------------------------
-
-PAS16 has a SB emulation chip which can be used together with the native
-(16 bit) mode of the card. To enable this emulation you should configure 
-the driver to have SB support too (this has been changed since version
-3.5-beta9 of this driver).
-
-With current driver versions it's also possible to use PAS16 together with 
-another SB compatible card. In this case you should configure SB support
-for the other card and to disable the SB emulation of PAS16 (there is a
-separate questions about this).
-
-With PAS16 you can use two audio device files at the same time. /dev/dsp (and
-/dev/audio) is connected to the 8/16 bit native codec and the /dev/dsp1 (and
-/dev/audio1) is connected to the SB emulation (8 bit mono only).
-
-Gravis Ultrasound
------------------
-
-There are many different revisions of the Ultrasound card (GUS). The
-earliest ones (pre 3.7) don't have a hardware mixer. With these cards
-the driver uses a software emulation for synth and pcm playbacks. It's
-also possible to switch some of the inputs (line in, mic) off by setting
-mixer volume of the channel level below 10%. For recording you have
-to select the channel as a recording source and to use volume above 10%.
-
-GUS 3.7 has a hardware mixer.
-
-GUS MAX and the 16 bit sampling daughtercard have a CS4231 codec chip which 
-also contains a mixer.
-
-Configuring GUS is simple. Just enable the GUS support and GUS MAX or
-the 16 bit daughtercard if you have them. Note that enabling the daughter
-card disables GUS MAX driver.
-
-NOTE for owners of the 16 bit daughtercard: By default the daughtercard
-uses /dev/dsp (and /dev/audio). Command "ln -sf /dev/dsp1 /dev/dsp"
-selects the daughter card as the default device.
-
-With just the standard GUS enabled the configuration program prompts
-for the I/O, IRQ and DMA numbers for the card. Use the same values than
-with DOS.
-
-With the daughter card option enabled you will be prompted for the I/O,
-IRQ and DMA numbers for the daughter card. You have to use different I/O
-and DMA values than for the standard GUS. The daughter card permits
-simultaneous recording and playback. Use /dev/dsp (the daughtercard) for
-recording and /dev/dsp1 (GUS GF1) for playback.
-
-GUS MAX uses the same I/O address and IRQ settings than the original GUS
-(GUS MAX = GUS + a CS4231 codec). In addition an extra DMA channel may be used.
-Using two DMA channels permits simultaneous playback using two devices
-(dev/dsp0 and /dev/dsp1). The second DMA channel is required for
-full duplex audio.
-To enable the second DMA channels, give a valid DMA channel when the config
-program asks for the GUS MAX DMA (entering -1 disables the second DMA).
-Using 16 bit DMA channels (5,6 or 7) is recommended.
-
-If you have problems in recording with GUS MAX, you could try to use
-just one 8 bit DMA channel. Recording will not work with one DMA
-channel if it's a 16 bit one.
-
-Microphone input of GUS MAX is connected to mixer in little bit nonstandard
-way. There is actually two microphone volume controls. Normal "mic" controls
-only recording level. Mixer control "speaker" is used to control volume of
-microphone signal connected directly to line/speaker out. So just decrease
-volume of "speaker" if you have problems with microphone feedback.
-
-GUS ACE works too but any attempt to record or to use the MIDI port
-will fail.
-
-GUS PnP (with RAM) is partially supported but it needs to be initialized using
-DOS or isapnptools before starting the driver.
-
-MPU401 and Windows Sound System
--------------------------------
-
-Again. Don't enable these options in case your card is listed
-somewhere else in this file.
-
-Configuring these cards is obvious (or it should be). With MSS
-you should probably enable the OPL3 synth also since
-most MSS compatible cards have it. However check that this is true
-before enabling OPL3.
-
-Sound driver supports more than one MPU401 compatible cards at the same time
-but the config program asks config info for just the first of them.
-Adding the second or third MPU interfaces must be done manually by
-editing sound/local.h (after running the config program). Add defines for
-MPU2_BASE & MPU2_IRQ (and MPU3_BASE & MPU3_IRQ) to the file.
-
-CAUTION!
-
-The default I/O base of Adaptec AHA-1542 SCSI controller is 0x330 which
-is also the default of the MPU401 driver. Don't configure the sound driver to
-use 0x330 as the MPU401 base if you have a AHA1542. The kernel will not boot
-if you make this mistake.
-
-PSS
----
-
-Even the PSS cards are compatible with SB, MSS and MPU401, you must not
-enable these options when configuring the driver. The configuration
-program handles these options itself. (You may use the SB, MPU and MSS options
-together with PSS if you have another card on the system).
-
-The PSS driver enables MSS and MPU401 modes of the card. SB is not enabled 
-since it doesn't work concurrently with MSS. The driver loads also a
-DSP algorithm which is used to for the general MIDI emulation. The
-algorithm file (.ld) is read by the config program and written to a
-file included when the pss.c is compiled. For this reason the config
-program asks if you want to download the file. Use the genmidi.ld file
-distributed with the DOS/Windows drivers of the card (don't use the mt32.ld).
-With some cards the file is called 'synth.ld'. You must have access to
-the file when configuring the driver. The easiest way is to mount the DOS
-partition containing the file with Linux. 
-
-It's possible to load your own DSP algorithms and run them with the card.
-Look at the directory pss_test of snd-util-3.0.tar.gz for more info.
-
-AudioTrix Pro
--------------
-
-You have to enable the OPL3 and SB (not SB Pro or SB16) drivers in addition
-to the native AudioTrix driver. Don't enable MSS or MPU drivers.
-
-Configuring ATP is little bit tricky since it uses so many I/O, IRQ and
-DMA numbers. Using the same values than with DOS/Win is a good idea. Don't
-attempt to use the same IRQ or DMA channels twice.
-
-The SB mode of ATP is implemented so the ATP driver just enables SB
-in the proper address. The SB driver handles the rest. You have to configure
-both the SB driver and the SB mode of ATP to use the same IRQ, DMA and I/O
-settings.
-
-Also the ATP has a microcontroller for the General MIDI emulation (OPL4).
-For this reason the driver asks for the name of a file containing the
-microcode (TRXPRO.HEX). This file is usually located in the directory
-where the DOS drivers were installed. You must have access to this file
-when configuring the driver. 
-
-If you have the effects daughtercard, it must be initialized by running
-the setfx program of snd-util-3.0.tar.gz package. This step is not required
-when using the (future) binary distribution version of the driver.
-
-Ensoniq SoundScape
-------------------
-
-NOTE!  The new PnP SoundScape is not supported yet. Soundscape compatible
-       cards made by Reveal don't work with Linux. They use older revision
-       of the Soundscape chipset which is not fully compatible with
-       newer cards made by Ensoniq.
-
-The SoundScape driver handles initialization of MSS and MPU supports
-itself so you don't need to enable other drivers than SoundScape
-(enable also the /dev/dsp, /dev/sequencer and MIDI supports).
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!                                                                   !!!!
-!!!!! NOTE! Before version 3.5-beta6 there WERE two sets of audio      !!!!
-!!!!!       device files (/dev/dsp0 and /dev/dsp1). The first one WAS   !!!!
-!!!!!      used only for card initialization and the second for audio  !!!!
-!!!!!      purposes. It WAS required to change /dev/dsp (a symlink) to !!!!
-!!!!!      point to /dev/dsp1.                                         !!!!
-!!!!!                                                                   !!!!
-!!!!!      This is not required with OSS versions 3.5-beta6 and later  !!!!
-!!!!!      since there is now just one audio device file. Please       !!!!
-!!!!!      change /dev/dsp to point back to /dev/dsp0 if you are       !!!!
-!!!!!      upgrading from an earlier driver version using              !!!!
-!!!!!      (cd /dev;rm dsp;ln -s dsp0 dsp).                            !!!!
-!!!!!                                                                   !!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-The configuration program asks one DMA channel and two interrupts. One IRQ
-and one DMA is used by the MSS codec. The second IRQ is required for the
-MPU401 mode (you have to use different IRQs for both purposes).
-There were earlier two DMA channels for SoundScape but the current driver
-version requires just one.
-
-The SoundScape card has a Motorola microcontroller which must initialized
-_after_ boot (the driver doesn't initialize it during boot).
-The initialization is done by running the 'ssinit' program which is
-distributed in the snd-util-3.0.tar.gz package. You have to edit two
-defines in the ssinit.c and then compile the program. You may run ssinit 
-manually (after each boot) or add it to /etc/rc.d/rc.local.
-
-The ssinit program needs the microcode file that comes with the DOS/Windows
-driver of the card. You will need to use version 1.30.00 or later
-of the microcode file (sndscape.co0 or sndscape.co1 depending on
-your card model). THE OLD sndscape.cod WILL NOT WORK. IT WILL HANG YOUR
-MACHINE. The only way to get the new microcode file is to download
-and install the DOS/Windows driver from ftp://ftp.ensoniq.com/pub.
-
-Then you have to select the proper microcode file to use: soundscape.co0
-is the right one for most cards and sndscape.co1 is for few (older) cards
-made by Reveal and/or Spea. The driver has capability to detect the card
-version during boot. Look at the boot log messages in /var/adm/messages
-and locate the sound driver initialization message for the SoundScape
-card. If the driver displays string <Ensoniq Soundscape (old)>, you have
-an old card and you will need to use sndscape.co1. For other cards use
-soundscape.co0. New Soundscape revisions such as Elite and PnP use
-code files with higher numbers (.co2, .co3, etc.).
-
-NOTE!  Ensoniq Soundscape VIVO is not compatible with other Soundscape cards.
-       Currently it's possible to use it in Linux only with OSS/Linux
-       drivers.
-
-Check /var/adm/messages after running ssinit. The driver prints
-the board version after downloading the microcode file. That version
-number must match the number in the name of the microcode file (extension).
-
-Running ssinit with a wrong version of the sndscape.co? file is not
-dangerous as long as you don't try to use a file called sndscape.cod.
-If you have initialized the card using a wrong microcode file (sounds
-are terrible), just modify ssinit.c to use another microcode file and try
-again. It's possible to use an earlier version of sndscape.co[01] but it
-may sound weird.
-
-MAD16 (Pro) and Mozart
-----------------------
-
-You need to enable just the MAD16 /Mozart support when configuring
-the driver. _Don't_ enable SB, MPU401 or MSS. However you will need the
-/dev/audio, /dev/sequencer and MIDI supports.
-
-Mozart and OPTi 82C928 (the original MAD16) chips don't support
-MPU401 mode so enter just 0 when the configuration program asks the
-MPU/MIDI I/O base. The MAD16 Pro (OPTi 82C929) and 82C930 chips have MPU401
-mode.
-
-TB Tropez is based on the 82C929 chip. It has two MIDI ports.
-The one connected to the MAD16 chip is the second one (there is a second
-MIDI connector/pins somewhere??). If you have not connected the second MIDI
-port, just disable the MIDI port of MAD16. The 'Maui' compatible synth of
-Tropez is jumper configurable and not connected to the MAD16 chip (the
-Maui driver can be used with it).
-
-Some MAD16 based cards may cause feedback, whistle or terrible noise if the
-line3 mixer channel is turned too high. This happens at least with Shuttle
-Sound System. Current driver versions set volume of line3 low enough so
-this should not be a problem.
-
-If you have a MAD16 card which have an OPL4 (FM + Wave table) synthesizer
-chip (_not_ an OPL3), you have to append a line containing #define MAD16_OPL4
-to the file linux/drivers/sound/local.h (after running make config).
-
-MAD16 cards having a CS4231 codec support full duplex mode. This mode
-can be enabled by configuring the card to use two DMA channels. Possible
-DMA channel pairs are: 0&1, 1&0 and 3&0.
-
-NOTE! Cards having an OPTi 82C924/82C925 chip work with OSS/Free only in
-non-PnP mode (usually jumper selectable). The PnP mode is supported only
-by OSS/Linux.
-
-MV Jazz (ProSonic)
-------------------
-
-The Jazz16 driver is just a hack made to the SB Pro driver. However it works
-fairly well. You have to enable SB, SB Pro (_not_ SB16) and MPU401 supports
-when configuring the driver. The configuration program asks later if you
-want support for MV Jazz16 based cards (after asking SB base address). Answer
-'y' here and the driver asks the second (16 bit) DMA channel.
-
-The Jazz16 driver uses the MPU401 driver in a way which will cause
-problems if you have another MPU401 compatible card. In this case you must
-give address of the Jazz16 based MPU401 interface when the config
-program prompts for the MPU401 information. Then look at the MPU401
-specific section for instructions about configuring more than one MPU401 cards.
-
-Logitech Soundman Wave
-----------------------
-
-Read the above MV Jazz specific instructions first.
-
-The Logitech SoundMan Wave (don't confuse this with the SM16 or SM Games) is
-a MV Jazz based card which has an additional OPL4 based wave table
-synthesizer. The OPL4 chip is handled by an on board microcontroller
-which must be initialized during boot. The config program asks if
-you have a SM Wave immediately after asking the second DMA channel of jazz16.
-If you answer 'y', the config program will ask name of the file containing
-code to be loaded to the microcontroller. The file is usually called
-MIDI0001.BIN and it's located in the DOS/Windows driver directory. The file
-may also be called as TSUNAMI.BIN or something else (older cards?).
-
-The OPL4 synth will be inaccessible without loading the microcontroller code.
-
-Also remember to enable SB MPU401 support if you want to use the OPL4 mode.
-(Don't enable the 'normal' MPU401 device as with some earlier driver
-versions (pre 3.5-alpha8)).
-
-NOTE!  Don't answer 'y' when the driver asks about SM Games support
-       (the next question after the MIDI0001.BIN name). However
-       answering 'y' doesn't cause damage your computer so don't panic. 
-
-Sound Galaxies
---------------
-
-There are many different Sound Galaxy cards made by Aztech. The 8 bit
-ones are fully SB or SB Pro compatible and there should be no problems
-with them. 
-
-The older 16 bit cards (SG Pro16, SG NX Pro16, Nova and Lyra) have
-an EEPROM chip for storing the configuration data. There is a microcontroller
-which initializes the card to match the EEPROM settings when the machine
-is powered on. These cards actually behave just like they have jumpers
-for all of the settings. Configure driver for MSS, MPU, SB/SB Pro  and OPL3 
-supports with these cards. 
-
-There are some new Sound Galaxies in the market. I have no experience with
-them so read the card's manual carefully.
-
-ESS ES1688 and ES688 'AudioDrive' based cards
----------------------------------------------
-
-Support for these two ESS chips is embedded in the SB driver.
-Configure these cards just like SB. Enable the 'SB MPU401 MIDI port'
-if you want to use MIDI features of ES1688. ES688 doesn't have MPU mode
-so you don't need to enable it (the driver uses normal SB MIDI automatically
-with ES688).
-
-NOTE! ESS cards are not compatible with MSS/WSS so don't worry if MSS support
-of OSS doesn't work with it.
-
-There are some ES1688/688 based sound cards and (particularly) motherboards
-which use software configurable I/O port relocation feature of the chip.
-This ESS proprietary feature is supported only by OSS/Linux.
-
-There are ES1688 based cards which use different interrupt pin assignment than
-recommended by ESS (5, 7, 9/2 and 10). In this case all IRQs don't work.
-At least a card called (Pearl?) Hypersound 16 supports IRQ 15 but it doesn't
-work.
-
-ES1868 is a PnP chip which is (supposed to be) compatible with ESS1688
-probably works with OSS/Free after initialization using isapnptools.
-
-Reveal cards
-------------
-
-There are several different cards made/marketed by Reveal. Some of them
-are compatible with SoundScape and some use the MAD16 chip. You may have
-to look at the card and try to identify its origin.
-
-Diamond
--------
-
-The oldest (Sierra Aria based) sound cards made by Diamond are not supported
-(they may work if the card is initialized using DOS). The recent (LX?)
-models are based on the MAD16 chip which is supported by the driver.
-
-Audio Excel DSP16
------------------
-
-Support for this card is currently not functional. A new driver for it
-should be available later this year.
-
-PCMCIA cards
-------------
-
-Sorry, can't help. Some cards may work and some don't.
-
-TI TM4000M notebooks
---------------------
-
-These computers have a built in sound support based on the Jazz chipset.
-Look at the instructions for MV Jazz (above). It's also important to note
-that there is something wrong with the mouse port and sound at least on
-some TM models. Don't enable the "C&T 82C710 mouse port support" when
-configuring Linux. Having it enabled is likely to cause mysterious problems
-and kernel failures when sound is used.
-
-miroSOUND
----------
-
-The miroSOUND PCM1-pro, PCM12 and PCM20 radio has been used
-successfully. These cards are based on the MAD16, OPL4, and CS4231A chips
-and everything said in the section about MAD16 cards applies here,
-too. The only major difference between the PCMxx and other MAD16 cards
-is that instead of the mixer in the CS4231 codec a separate mixer
-controlled by an on-board 80C32 microcontroller is used. Control of
-the mixer takes place via the ACI (miro's audio control interface)
-protocol that is implemented in a separate lowlevel driver. Make sure
-you compile this ACI driver together with the normal MAD16 support
-when you use a miroSOUND PCMxx card. The ACI mixer is controlled by
-/dev/mixer and the CS4231 mixer by /dev/mixer1 (depends on load
-time). Only in special cases you want to change something regularly on
-the CS4231 mixer.
-
-The miroSOUND PCM12 and PCM20 radio is capable of full duplex
-operation (simultaneous PCM replay and recording), which allows you to
-implement nice real-time signal processing audio effect software and
-network telephones. The ACI mixer has to be switched into the "solo"
-mode for duplex operation in order to avoid feedback caused by the
-mixer (input hears output signal). You can de-/activate this mode
-through toggling the record button for the wave controller with an
-OSS-mixer.
-
-The PCM20 contains a radio tuner, which is also controlled by
-ACI. This radio tuner is supported by the ACI driver together with the
-miropcm20.o module. Also the 7-band equalizer is integrated
-(limited by the OSS-design). Development has started and maybe
-finished for the RDS decoder on this card, too. You will be able to
-read RadioText, the Programme Service name, Programme TYpe and
-others. Even the v4l radio module benefits from it with a refined
-strength value. See aci.[ch] and miropcm20*.[ch] for more details.
-
-The following configuration parameters have worked fine for the PCM12
-in Markus Kuhn's system, many other configurations might work, too:
-CONFIG_MAD16_BASE=0x530, CONFIG_MAD16_IRQ=11, CONFIG_MAD16_DMA=3, 
-CONFIG_MAD16_DMA2=0, CONFIG_MAD16_MPU_BASE=0x330, CONFIG_MAD16_MPU_IRQ=10,
-DSP_BUFFSIZE=65536, SELECTED_SOUND_OPTIONS=0x00281000.
-
-Bas van der Linden is using his PCM1-pro with a configuration that
-differs in: CONFIG_MAD16_IRQ=7, CONFIG_MAD16_DMA=1, CONFIG_MAD16_MPU_IRQ=9
-
-Compaq Deskpro XL
------------------
-
-The builtin sound hardware of Compaq Deskpro XL is now supported. 
-You need to configure the driver with MSS and OPL3 supports enabled.
-In addition you need to manually edit linux/drivers/sound/local.h and
-to add a line containing "#define DESKPROXL" if you used 
-make menuconfig/xconfig.
-
-Others?
--------
-
-Since there are so many different sound cards, it's likely that I have 
-forgotten to mention many of them. Please inform me if you know yet another
-card which works with Linux, please inform me (or is anybody else
-willing to maintain a database of supported cards (just like in XF86)?).
-
-Cards not supported yet
-=======================
-
-Please check the version of sound driver you are using before 
-complaining that your card is not supported. It's possible you are 
-using a driver version which was released months before your card was
-introduced.
-
-First of all, there is an easy way to make most sound cards work with Linux.
-Just use the DOS based driver to initialize the card to a known state, then use
-loadlin.exe to boot Linux. If Linux is configured to use the same I/O, IRQ and
-DMA numbers as DOS, the card could work.
-(ctrl-alt-del can be used in place of loadlin.exe but it doesn't work with
-new motherboards). This method works also with all/most PnP sound cards.
-
-Don't get fooled with SB compatibility. Most cards are compatible with
-SB but that may require a TSR which is not possible with Linux. If
-the card is compatible with MSS, it's a better choice. Some cards
-don't work in the SB and MSS modes at the same time.
-
-Then there are cards which are no longer manufactured and/or which
-are relatively rarely used (such as the 8 bit ProAudioSpectrum
-models). It's extremely unlikely that such cards ever get supported.
-Adding support for a new card requires much work and increases time
-required in maintaining the driver (some changes need to be done
-to all low level drivers and be tested too, maybe with multiple
-operating systems). For this reason I have made a decision to not support
-obsolete cards. It's possible that someone else makes a separately 
-distributed driver (diffs) for the card. 
-
-Writing a driver for a new card is not possible if there are no 
-programming information available about the card. If you don't
-find your new card from this file, look from the home page 
-(http://www.opensound.com/ossfree). Then please contact
-manufacturer of the card and ask if they have (or are willing to)
-released technical details of the card. Do this before contacting me. I
-can only answer 'no' if there are no programming information available.
-
-I have made decision to not accept code based on reverse engineering
-to the driver. There are three main reasons: First I don't want to break
-relationships to sound card manufacturers. The second reason is that
-maintaining and supporting a driver without any specs will be a pain.
-The third reason is that companies have freedom to refuse selling their
-products to other than Windows users.
-
-Some companies don't give low level technical information about their
-products to public or at least their require signing a NDA. It's not
-possible to implement a freeware driver for them. However it's possible
-that support for such cards become available in the commercial version
-of this driver (see http://www.4Front-tech.com/oss.html for more info).
-
-There are some common audio chipsets that are not supported yet. For example
-Sierra Aria and IBM Mwave. It's possible that these architectures
-get some support in future but I can't make any promises. Just look
-at the home page (http://www.opensound.com/ossfree/)
-for latest info.
-
-Information about unsupported sound cards and chipsets is welcome as well
-as free copies of sound cards, SDKs and operating systems.
-
-If you have any corrections and/or comments, please contact me.
-
-Hannu Savolainen
-hannu@opensound.com
-
-home page of OSS/Free: http://www.opensound.com/ossfree
-
-home page of commercial OSS
-(Open Sound System) drivers: http://www.opensound.com/oss.html
diff --git a/Documentation/sound/oss/README.modules b/Documentation/sound/oss/README.modules
deleted file mode 100644 (file)
index cdc0394..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-Building a modular sound driver
-================================
-
-  The following information is current as of linux-2.1.85. Check the other
-readme files, especially README.OSS, for information not specific to
-making sound modular.
-
-  First, configure your kernel. This is an idea of what you should be
-setting in the sound section:
-
-<M> Sound card support 
-
-<M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support 
-
-  I have SoundBlaster. Select your card from the list.
-
-<M> Generic OPL2/OPL3 FM synthesizer support 
-<M> FM synthesizer (YM3812/OPL-3) support 
-
-  If you don't set these, you will probably find you can play .wav files
-but not .midi. As the help for them says, set them unless you know your
-card does not use one of these chips for FM support.
-
-  Once you are configured, make zlilo, modules, modules_install; reboot.
-Note that it is no longer necessary or possible to configure sound in the
-drivers/sound dir. Now one simply configures and makes one's kernel and
-modules in the usual way.
-
- Then, add to your /etc/modprobe.d/oss.conf something like:
-
-alias char-major-14-* sb
-install sb /sbin/modprobe -i sb && /sbin/modprobe adlib_card
-options sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
-options adlib_card io=0x388     # FM synthesizer
-
- Alternatively, if you have compiled in kernel level ISAPnP support:
-
-alias char-major-14 sb
-softdep sb post: adlib_card
-options adlib_card io=0x388
-
-  The effect of this is that the sound driver and all necessary bits and
-pieces autoload on demand, assuming you use kerneld (a sound choice) and
-autoclean when not in use. Also, options for the device drivers are
-set. They will not work without them. Change as appropriate for your card.
-If you are not yet using the very cool kerneld, you will have to "modprobe
--k sb" yourself to get things going. Eventually things may be fixed so
-that this kludgery is not necessary; for the time being, it seems to work
-well.
-
-  Replace 'sb' with the driver for your card, and give it the right
-options. To find the filename of the driver, look in
-/lib/modules/<kernel-version>/misc. Mine looks like:
-
-adlib_card.o # This is the generic OPLx driver
-opl3.o # The OPL3 driver
-sb.o # <<The SoundBlaster driver. Yours may differ.>>
-sound.o # The sound driver
-uart401.o # Used by sb, maybe other cards
-
- Whichever card you have, try feeding it the options that would be the
-default if you were making the driver wired, not as modules. You can
-look at function referred to by module_init() for the card to see what
-args are expected.
-
- Note that at present there is no way to configure the io, irq and other
-parameters for the modular drivers as one does for the wired drivers.. One
-needs to pass the modules the necessary parameters as arguments, either
-with /etc/modprobe.d/*.conf or with command-line args to modprobe, e.g.
-
-modprobe sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
-modprobe adlib_card io=0x388
-
- recommend using /etc/modprobe.d/*.conf.
-
-Persistent DMA Buffers:
-
-The sound modules normally allocate DMA buffers during open() and
-deallocate them during close(). Linux can often have problems allocating
-DMA buffers for ISA cards on machines with more than 16MB RAM. This is
-because ISA DMA buffers must exist below the 16MB boundary and it is quite
-possible that we can't find a large enough free block in this region after
-the machine has been running for any amount of time. The way to avoid this
-problem is to allocate the DMA buffers during module load and deallocate
-them when the module is unloaded. For this to be effective we need to load
-the sound modules right after the kernel boots, either manually or by an
-init script, and keep them around until we shut down. This is a little
-wasteful of RAM, but it guarantees that sound always works.
-
-To make the sound driver use persistent DMA buffers we need to pass the
-sound.o module a "dmabuf=1" command-line argument. This is normally done
-in /etc/modprobe.d/*.conf files like so:
-
-options sound          dmabuf=1
-
-If you have 16MB or less RAM or a PCI sound card, this is wasteful and
-unnecessary. It is possible that machine with 16MB or less RAM will find
-this option useful, but if your machine is so memory-starved that it
-cannot find a 64K block free, you will be wasting even more RAM by keeping
-the sound modules loaded and the DMA buffers allocated when they are not
-needed. The proper solution is to upgrade your RAM. But you do also have
-this improper solution as well. Use it wisely.
-
-  I'm afraid I know nothing about anything but my setup, being more of a
-text-mode guy anyway. If you have options for other cards or other helpful
-hints, send them to me, Jim Bray, jb@as220.org, http://as220.org/jb.
diff --git a/Documentation/sound/oss/README.ymfsb b/Documentation/sound/oss/README.ymfsb
deleted file mode 100644 (file)
index b6b7790..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-Legacy audio driver for YMF7xx PCI cards.
-
-
-FIRST OF ALL
-============
-
-  This code references YAMAHA's sample codes and data sheets.
-  I respect and thank for all people they made open the information
-  about YMF7xx cards.
-
-  And this codes heavily based on Jeff Garzik <jgarzik@pobox.com>'s
-  old VIA 82Cxxx driver (via82cxxx.c). I also respect him.
-
-
-DISCLIMER
-=========
-
- This driver is currently at early ALPHA stage. It may cause serious
- damage to your computer when used.
- PLEASE USE IT AT YOUR OWN RISK.
-
-
-ABOUT THIS DRIVER
-=================
-
-  This code enables you to use your YMF724[A-F], YMF740[A-C], YMF744, YMF754
- cards. When enabled, your card acts as "SoundBlaster Pro" compatible card.
- It can only play 22.05kHz / 8bit / Stereo samples, control external MIDI
- port.
- If you want to use your card as recent "16-bit" card, you should use
- Alsa or OSS/Linux driver. Of course you can write native PCI driver for
- your cards :)
-
-
-USAGE
-=====
-
- # modprobe ymfsb (options)
-
-
-OPTIONS FOR MODULE
-==================
-
-  io           : SB base address     (0x220, 0x240, 0x260, 0x280)
-  synth_io     : OPL3 base address   (0x388, 0x398, 0x3a0, 0x3a8)
-  dma          : DMA number          (0,1,3)
-  master_volume: AC'97 PCM out Vol   (0-100)
-  spdif_out    : SPDIF-out flag      (0:disable 1:enable)
-
- These options will change in future...
-
-
-FREQUENCY
-=========
-
-  When playing sounds via this driver, you will hear its pitch is slightly
- lower than original sounds. Since this driver recognizes your card acts
- with 21.739kHz sample rates rather than 22.050kHz (I think it must be
- hardware restriction). So many players become tone deafness.
- To prevent this, you should express some options to your sound player
- that specify correct sample frequency. For example, to play your MP3 file
- correctly with mpg123, specify the frequency like following:
-
-  %  mpg123 -r 21739 foo.mp3
-
-
-SPDIF OUT
-=========
-
-  With installing modules with option 'spdif_out=1', you can enjoy your
- sounds from SPDIF-out of your card (if it had).
- Its Fs is fixed to 48kHz (It never means the sample frequency become 
- up to 48kHz. All sounds via SPDIF-out also 22kHz samples). So your
- digital-in capable components has to be able to handle 48kHz Fs.
-
-
-COPYING
-=======
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-
-TODO
-====
- * support for multiple cards
-   (set the different SB_IO,MPU_IO,OPL_IO for each cards)
-
- * support for OPL (dmfm) : There will be no requirements... :-<
-
-
-AUTHOR
-======
-
- Daisuke Nagano <breeze.nagano@nifty.ne.jp>
-
diff --git a/Documentation/sound/oss/SoundPro b/Documentation/sound/oss/SoundPro
deleted file mode 100644 (file)
index 9d4db1f..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-Documentation for the SoundPro CMI8330 extensions in the WSS driver (ad1848.o)
-------------------------------------------------------------------------------
-
-( Be sure to read Documentation/sound/oss/CMI8330 too )
-
-Ion Badulescu, ionut@cs.columbia.edu
-February 24, 1999
-
-(derived from the OPL3-SA2 documentation by Scott Murray)
-
-The SoundPro CMI8330 (ISA) is a chip usually found on some Taiwanese
-motherboards.  The official name in the documentation is CMI8330, SoundPro
-is the nickname and the big inscription on the chip itself.
-
-The chip emulates a WSS as well as a SB16, but it has certain differences
-in the mixer section which require separate support. It also emulates an
-MPU401 and an OPL3 synthesizer, so you probably want to enable support
-for these, too.
-
-The chip identifies itself as an AD1848, but its mixer is significantly
-more advanced than the original AD1848 one. If your system works with
-either WSS or SB16 and you are having problems with some mixer controls
-(no CD audio, no line-in, etc), you might want to give this driver a try.
-Detection should work, but it hasn't been widely tested, so it might still
-mis-identify the chip. You can still force soundpro=1 in the modprobe
-parameters for ad1848. Please let me know if it happens to you, so I can
-adjust the detection routine.
-
-The chip is capable of doing full-duplex, but since the driver sees it as an
-AD1848, it cannot take advantage of this.  Moreover, the full-duplex mode is
-not achievable through the WSS interface, b/c it needs a dma16 line which is
-assigned only to the SB16 subdevice (with isapnp). Windows documentation
-says the user must use WSS Playback and SB16 Recording for full-duplex, so
-it might be possible to do the same thing under Linux. You can try loading
-up both ad1848 and sb then use one for playback and the other for
-recording. I don't know if this works, b/c I haven't tested it. Anyway, if
-you try it, be very careful: the SB16 mixer *mostly* works, but certain
-settings can have unexpected effects. Use the WSS mixer for best results.
-
-There is also a PCI SoundPro chip. I have not seen this chip, so I have
-no idea if the driver will work with it. I suspect it won't.
-
-As with PnP cards, some configuration is required.  There are two ways
-of doing this.  The most common is to use the isapnptools package to
-initialize the card, and use the kernel module form of the sound
-subsystem and sound drivers.  Alternatively, some BIOS's allow manual
-configuration of installed PnP devices in a BIOS menu, which should
-allow using the non-modular sound drivers, i.e. built into the kernel.
-Since in this latter case you cannot use module parameters, you will
-have to enable support for the SoundPro at compile time.
-
-The IRQ and DMA values can be any that are considered acceptable for a
-WSS.  Assuming you've got isapnp all happy, then you should be able to
-do something like the following (which *must* match the isapnp/BIOS
-configuration):
-
-modprobe ad1848 io=0x530 irq=11 dma=0 soundpro=1
--and maybe-
-modprobe sb io=0x220 irq=5 dma=1 dma16=5
-
--then-
-modprobe mpu401 io=0x330 irq=9
-modprobe opl3 io=0x388
-
-If all goes well and you see no error messages, you should be able to
-start using the sound capabilities of your system.  If you get an
-error message while trying to insert the module(s), then make
-sure that the values of the various arguments match what you specified
-in your isapnp configuration file, and that there is no conflict with
-another device for an I/O port or interrupt.  Checking the contents of
-/proc/ioports and /proc/interrupts can be useful to see if you're
-butting heads with another device.
-
-If you do not see the chipset version message, and none of the other
-messages present in the system log are helpful, try adding 'debug=1'
-to the ad1848 parameters, email me the syslog results and I'll do
-my best to help. 
-
-Lastly, if you're using modules and want to set up automatic module
-loading with kmod, the kernel module loader, here is the section I
-currently use in my conf.modules file:
-
-# Sound
-post-install sound modprobe -k ad1848; modprobe -k mpu401; modprobe -k opl3
-options ad1848 io=0x530 irq=11 dma=0
-options sb io=0x220 irq=5 dma=1 dma16=5
-options mpu401 io=0x330 irq=9
-options opl3 io=0x388
-
-The above ensures that ad1848 will be loaded whenever the sound system
-is being used.
-
-Good luck.
-
-Ion
-
-NOT REALLY TESTED:
-- recording
-- recording device selection
-- full-duplex
-
-TODO:
-- implement mixer support for surround, loud, digital CD switches.
-- come up with a scheme which allows recording volumes for each subdevice.
-This is a major OSS API change.
diff --git a/Documentation/sound/oss/Soundblaster b/Documentation/sound/oss/Soundblaster
deleted file mode 100644 (file)
index b288d46..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-modprobe sound
-insmod uart401
-insmod sb ...
-
-This loads the driver for the Sound Blaster and assorted clones. Cards that
-are covered by other drivers should not be using this driver.
-
-The Sound Blaster module takes the following arguments
-
-io             I/O address of the Sound Blaster chip (0x220,0x240,0x260,0x280)
-irq            IRQ of the Sound Blaster chip (5,7,9,10)
-dma            8-bit DMA channel for the Sound Blaster (0,1,3)
-dma16          16-bit DMA channel for SB16 and equivalent cards (5,6,7)
-mpu_io         I/O for MPU chip if present (0x300,0x330)
-
-sm_games=1     Set if you have a Logitech soundman games
-acer=1         Set this to detect cards in some ACER notebooks
-mwave_bug=1    Set if you are trying to use this driver with mwave (see on)
-type           Use this to specify a specific card type
-
-The following arguments are taken if ISAPnP support is compiled in
-
-isapnp=0       Set this to disable ISAPnP detection (use io=0xXXX etc. above)
-multiple=0     Set to disable detection of multiple Soundblaster cards.
-               Consider it a bug if this option is needed, and send in a
-               report.
-pnplegacy=1    Set this to be able to use a PnP card(s) along with a single
-               non-PnP (legacy) card.  Above options for io, irq, etc. are
-               needed, and will apply only to the legacy card.
-reverse=1      Reverses the order of the search in the PnP table.
-uart401=1      Set to enable detection of mpu devices on some clones.
-isapnpjump=n   Jumps to slot n in the driver's PnP table. Use the source,
-               Luke.
-
-You may well want to load the opl3 driver for synth music on most SB and
-clone SB devices
-
-insmod opl3 io=0x388
-
-Using Mwave
-
-To make this driver work with Mwave you must set mwave_bug. You also need
-to warm boot from DOS/Windows with the required firmware loaded under this
-OS. IBM are being difficult about documenting how to load this firmware.
-
-Avance Logic ALS007
-
-This card is supported; see the separate file ALS007 for full details.
-
-Avance Logic ALS100
-
-This card is supported; setup should be as for a standard Sound Blaster 16.
-The driver will identify the audio device as a "Sound Blaster 16 (ALS-100)".
diff --git a/Documentation/sound/oss/Tropez+ b/Documentation/sound/oss/Tropez+
deleted file mode 100644 (file)
index b93a6b7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Paul Barton-Davis <pbd@op.net>
-
-Here is the configuration I use with a Tropez+ and my modular
-driver:
-
-  alias char-major-14 wavefront
-  alias synth0 wavefront
-  alias mixer0 cs4232
-  alias audio0 cs4232
-  pre-install wavefront modprobe "-k" "cs4232"
-  post-install wavefront modprobe "-k" "opl3"
-  options wavefront io=0x200 irq=9
-  options cs4232 synthirq=9 synthio=0x200 io=0x530 irq=5 dma=1 dma2=0
-  options opl3 io=0x388
-
-Things to note: 
-
-       the wavefront options "io" and "irq" ***MUST*** match the "synthio"
-       and "synthirq" cs4232 options.
-
-       you can do without the opl3 module if you don't
-       want to use the OPL/[34] synth on the soundcard
-
-       the opl3 io parameter is conventionally not adjustable.
-
-Please see drivers/sound/README.wavefront for more details.
diff --git a/Documentation/sound/oss/VIBRA16 b/Documentation/sound/oss/VIBRA16
deleted file mode 100644 (file)
index 68a5a46..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-Sound Blaster 16X Vibra addendum
---------------------------------
-by Marius Ilioaea <mariusi@protv.ro>
-   Stefan Laudat  <stefan@asit.ro>
-
-Sat Mar 6 23:55:27 EET 1999
-
-                       Hello again,
-       
-       Playing with a SB Vibra 16x soundcard we found it very difficult
-to setup because the kernel reported a lot of DMA errors and wouldn't
-simply play any sound.
-       A good starting point is that the vibra16x chip full-duplex facility
-is neither still exploited by the sb driver found in the linux kernel 
-(tried it with a 2.2.2-ac7), nor in the commercial OSS package (it reports
-it as half-duplex soundcard). Oh, I almost forgot, the RedHat sndconfig
-failed detecting it ;)
-       So, the big problem still remains, because the sb module wants a
-8-bit and a 16-bit dma, which we could not allocate for vibra... it supports
-only two 8-bit dma channels, the second one will be passed to the module
-as a 16 bit channel, the kernel will yield about that but everything will
-be okay, trust us. 
-       The only inconvenient you may find is that you will have
-some sound playing jitters if you have HDD dma support enabled - but this
-will happen with almost all soundcards...
-
-       A fully working isapnp.conf is just here:
-
-<snip here>
-
-(READPORT 0x0203)
-(ISOLATE PRESERVE)
-(IDENTIFY *)
-(VERBOSITY 2)
-(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
-# SB 16 and OPL3 devices
-(CONFIGURE CTL00f0/-1 (LD 0
-(INT 0 (IRQ 5 (MODE +E)))
-(DMA 0 (CHANNEL 1))
-(DMA 1 (CHANNEL 3))
-(IO 0 (SIZE 16) (BASE 0x0220))
-(IO 2 (SIZE 4) (BASE 0x0388))
-(NAME "CTL00f0/-1[0]{Audio               }")
-(ACT Y)
-))
-
-# Joystick device - only if you need it :-/
-
-(CONFIGURE CTL00f0/-1 (LD 1
-(IO 0 (SIZE 1) (BASE 0x0200))
-(NAME "CTL00f0/-1[1]{Game                }")
-(ACT Y)
-))
-(WAITFORKEY)
-
-<end of snipping>
-
-       So, after a good kernel modules compilation and a 'depmod -a kernel_ver'
-you may want to:
-
-modprobe sb io=0x220 irq=5 dma=1 dma16=3
-
-       Or, take the hard way:
-
-modprobe soundcore
-modprobe sound
-modprobe uart401
-modprobe sb io=0x220 irq=5 dma=1 dma16=3
-# do you need MIDI?
-modprobe opl3=0x388
-
-       Just in case, the kernel sound support should be:
-
-CONFIG_SOUND=m
-CONFIG_SOUND_OSS=m
-CONFIG_SOUND_SB=m
-       
-       Enjoy your new noisy Linux box! ;)
-       
-
diff --git a/Documentation/sound/oss/WaveArtist b/Documentation/sound/oss/WaveArtist
deleted file mode 100644 (file)
index f4f3407..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-
- (the following is from the armlinux CVS)
-
- WaveArtist mixer and volume levels can be accessed via these commands:
-
-  nn30 read registers nn, where nn = 00 - 09 for mixer settings
-                                             0a - 13 for channel volumes
-  mm31 write the volume setting in pairs, where mm = (nn - 10) / 2
-  rr32 write the mixer settings in pairs, where rr = nn/2
-  xx33 reset all settings to default
-  0y34 select mono source, y=0 = left, y=1 = right
-
-                                           bits
- nn  15  14 13 12 11   10    9     8     7    6     5     4     3     2     1     0
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 00 | 0 | 0  0  1  1 | left line mixer gain       | left aux1 mixer gain        |lmute|
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 01 | 0 | 0  1  0  1 | left aux2 mixer gain       | right 2 left mic gain       |mmute|
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 02 | 0 | 0  1  1  1 | left mic mixer gain        | left mic  | left mixer gain |dith |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 03 | 0 | 1  0  0  1 | left mixer input select                |lrfg | left ADC gain   |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 04 | 0 | 1  0  1  1 | right line mixer gain      | right aux1 mixer gain       |rmute|
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 05 | 0 | 1  1  0  1 | right aux2 mixer gain      | left 2 right mic gain       |test |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 06 | 0 | 1  1  1  1 | right mic mixer gain       | right mic |right mixer gain |rbyps|
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 07 | 1 | 0  0  0  1 | right mixer select                     |rrfg | right ADC gain  |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 08 | 1 | 0  0  1  1 | mono mixer gain            |right ADC mux sel|left ADC mux sel |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 09 | 1 | 0  1  0  1 |loopb|left linout|loop|ADCch|TxFch|OffCD|test |loopb|loopb|osamp|
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0a | 0 | left PCM channel volume                                                     |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0b | 0 | right PCM channel volume                                                    |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0c | 0 | left FM channel volume                                                      |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0d | 0 | right FM channel volume                                                     |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0e | 0 | left wavetable channel volume                                               |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 0f | 0 | right wavetable channel volume                                              |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 10 | 0 | left PCM expansion channel volume                                           |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 11 | 0 | right PCM expansion channel volume                                          |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 12 | 0 | left FM expansion channel volume                                            |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
- 13 | 0 | right FM expansion channel volume                                           |
-----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
-
- lmute: left mute
- mmute: mono mute
- dith: dithds
- lrfg:
- rmute: right mute
- rbyps: right bypass
- rrfg:
- ADCch:
- TxFch:
- OffCD:
- osamp:
-
- And the following diagram is derived from the description in the CVS archive:
-
- MIC L (mouthpiece)
-   +------+
- -->PreAmp>-\
-   +--^---+ |
-      |     |
-    r2b4-5  |                                +--------+
-       /----*-------------------------------->5       |
-       |                                     |        |
-       | /----------------------------------->4       |
-       | |                                   |        |
-       | | /--------------------------------->3 1of5  |  +---+
-       | | |                                 |  mux   >-->AMP>--> ADC L
-       | | | /------------------------------->2       |  +-^-+
-       | | | |                               |        |    |
- Line  | | | | +----+  +------+  +---+  /---->1       |  r3b3-0
- ------------*->mute>--> Gain >-->   |  |    |        |
-  L    | | |   +----+  +------+  |   |  |  *->0       |
-       | | |                     |   |  |    +---^----+
- Aux2  | | |   +----+  +------+  |   |  |        |
- ----------*--->mute>--> Gain >--> M |  |     r8b0-2
-  L    | |     +----+  +------+  |   |  |
-       | |                       |   |  \------\
- Aux1  | |     +----+  +------+  |   |         |
- --------*----->mute>--> Gain >--> I |         |
-  L    |       +----+  +------+  |   |         |
-       |                         |   |         |
-       |       +----+  +------+  |   |  +---+  |
-       *------->mute>--> Gain >--> X >-->AMP>--*
-       |       +----+  +------+  |   |  +-^-+  |
-       |                         |   |    |    |
-       |       +----+  +------+  |   |  r2b1-3 |  
-       | /----->mute>--> Gain >--> E |         |
-       | |     +----+  +------+  |   |         |
-       | |                       |   |         |
-       | |     +----+  +------+  |   |         |
-       | | /--->mute>--> Gain >--> R |         |
-       | | |   +----+  +------+  |   |         |
-       | | |                     |   |         |   r9b8-9
-       | | |   +----+  +------+  |   |         |     |
-       | | | /->mute>--> Gain >-->   |         | +---v---+
-       | | | | +----+  +------+  +---+       /-*->0      |
- DAC   | | | |                               |   |       |
- ------------*----------------------------------->?      |  +----+
-  L    | | |                                 |   |  Mux  >-->mute>--> L output
-       | | |                                 | /->?      |  +--^-+
-       | | |                                 | | |       |     |
-       | | |                           /--------->?      |   r0b0
-       | | |                           |     | | +-------+
-       | | |                           |     | |
- Mono  | | |                           |     | | +-------+
- ----------*                           |     \--->       |  +----+
-       | | |                           |       | |  Mix  >-->mute>--> Mono output
-       | | |                           |       *->       |  +--^-+
-       | | |                           |       | +-------+     |
-       | | |                           |       |             r1b0
- DAC   | | |                           |       | +-------+
- ------------*-------------------------*--------->1      |  +----+
-  R    | | | |                                 | |  Mux  >-->mute>--> R output
-       | | | | +----+  +------+  +---+         *->0      |  +--^-+
-       | | | \->mute>--> Gain >-->   |         | +---^---+     |
-       | | |   +----+  +------+  |   |         |     |       r5b0
-       | | |                     |   |         |   r6b0
-       | | |   +----+  +------+  |   |         |
-       | | \--->mute>--> Gain >--> M |         |
-       | |     +----+  +------+  |   |         |
-       | |                       |   |         |
-       | |     +----+  +------+  |   |         |
-       | *----->mute>--> Gain >--> I |         |
-       | |     +----+  +------+  |   |         |
-       | |                       |   |         |
-       | |     +----+  +------+  |   |  +---+  |
-       \------->mute>--> Gain >--> X >-->AMP>--*
-         |     +----+  +------+  |   |  +-^-+  |
-      /--/                       |   |    |    |
- Aux1 |        +----+  +------+  |   |  r6b1-3 |
- -------*------>mute>--> Gain >--> E |         |
-  R   | |      +----+  +------+  |   |         |
-      | |                        |   |         |
- Aux2 | |      +----+  +------+  |   |  /------/
- ---------*---->mute>--> Gain >--> R |  |
-  R   | | |    +----+  +------+  |   |  |
-      | | |                      |   |  |    +--------+
- Line | | |    +----+  +------+  |   |  |  *->0       |
- -----------*-->mute>--> Gain >-->   |  |    |        |
-  R   | | | |  +----+  +------+  +---+  \---->1       |
-      | | | |                                |        |
-      | | | \-------------------------------->2       |  +---+
-      | | |                                  |  Mux   >-->AMP>--> ADC R
-      | | \---------------------------------->3       |  +-^-+
-      | |                                    |        |    |
-      | \------------------------------------>4       |  r7b3-0
-      |                                      |        |
-      \-----*-------------------------------->5       |
-            |                                +---^----+
-    r6b4-5  |                                    |
-      |     |                                  r8b3-5
-   +--v---+ |
- -->PreAmp>-/
-   +------+
- MIC R (electret mic)
diff --git a/Documentation/sound/oss/btaudio b/Documentation/sound/oss/btaudio
deleted file mode 100644 (file)
index effdb9a..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-
-Intro
-=====
-
-people start bugging me about this with questions, looks like I
-should write up some documentation for this beast.  That way I
-don't have to answer that much mails I hope.  Yes, I'm lazy...
-
-
-You might have noticed that the bt878 grabber cards have actually
-_two_ PCI functions:
-
-$ lspci
-[ ... ]
-00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
-00:0a.1 Multimedia controller: Brooktree Corporation Bt878 (rev 02)
-[ ... ]
-
-The first does video, it is backward compatible to the bt848.  The second
-does audio.  btaudio is a driver for the second function.  It's a sound
-driver which can be used for recording sound (and _only_ recording, no
-playback).  As most TV cards come with a short cable which can be plugged
-into your sound card's line-in you probably don't need this driver if all
-you want to do is just watching TV...
-
-
-Driver Status
-=============
-
-Still somewhat experimental.  The driver should work stable, i.e. it
-should'nt crash your box.  It might not work as expected, have bugs,
-not being fully OSS API compliant, ...
-
-Latest versions are available from http://bytesex.org/bttv/, the
-driver is in the bttv tarball.  Kernel patches might be available too,
-have a look at http://bytesex.org/bttv/listing.html.
-
-The chip knows two different modes.  btaudio registers two dsp
-devices, one for each mode.  They can not be used at the same time.
-
-
-Digital audio mode
-==================
-
-The chip gives you 16 bit stereo sound.  The sample rate depends on
-the external source which feeds the bt878 with digital sound via I2S
-interface.  There is a insmod option (rate) to tell the driver which
-sample rate the hardware uses (32000 is the default).
-
-One possible source for digital sound is the msp34xx audio processor
-chip which provides digital sound via I2S with 32 kHz sample rate.  My
-Hauppauge board works this way.
-
-The Osprey-200 reportly gives you digital sound with 44100 Hz sample
-rate.  It is also possible that you get no sound at all.
-
-
-analog mode (A/D)
-=================
-
-You can tell the driver to use this mode with the insmod option "analog=1".
-The chip has three analog inputs.  Consequently you'll get a mixer device
-to control these.
-
-The analog mode supports mono only.  Both 8 + 16 bit.  Both are _signed_
-int, which is uncommon for the 8 bit case.  Sample rate range is 119 kHz
-to 448 kHz.  Yes, the number of digits is correct.  The driver supports
-downsampling by powers of two, so you can ask for more usual sample rates
-like 44 kHz too.
-
-With my Hauppauge I get noisy sound on the second input (mapped to line2
-by the mixer device).  Others get a useable signal on line1.
-
-
-some examples
-=============
-
-* read audio data from btaudio (dsp2), send to es1730 (dsp,dsp1):
-  $ sox -w -r 32000 -t ossdsp /dev/dsp2 -t ossdsp /dev/dsp
-
-* read audio data from btaudio, send to esound daemon (which might be
-  running on another host):
-  $ sox -c 2 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -r 32000
-  $ sox -c 1 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -m -r 32000
-
-
-Have fun,
-
-  Gerd
-
--- 
-Gerd Knorr <kraxel@bytesex.org>
diff --git a/Documentation/sound/oss/mwave b/Documentation/sound/oss/mwave
deleted file mode 100644 (file)
index 5fbcb16..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-       How to try to survive an IBM Mwave under Linux SB drivers
-
-
-+      IBM have now released documentation of sorts and Torsten is busy
-       trying to make the Mwave work. This is not however a trivial task.
-
-----------------------------------------------------------------------------
-
-OK, first thing - the IRQ problem IS a problem, whether the test is bypassed or
-not.  It is NOT a Linux problem, but an MWAVE problem that is fixed with the
-latest MWAVE patches. So, in other words, don't bypass the test for MWAVES!
-
-I have Windows 95 on /dev/hda1, swap on /dev/hda2, and Red Hat 5 on /dev/hda3.
-
-The steps, then:
-
-    Boot to Linux. 
-    Mount Windows 95 file system (assume mount point = /dos95).
-    mkdir /dos95/linux
-    mkdir /dos95/linux/boot
-    mkdir /dos95/linux/boot/parms
-
-    Copy the kernel, any initrd image, and loadlin to /dos95/linux/boot/.
-
-    Reboot to Windows 95.
-
-    Edit C:/msdos.sys and add or change the following:
-
-        Logo=0
-        BootGUI=0
-
-    Note that msdos.sys is a text file but it needs to be made 'unhidden',
-    readable and writable before it can be edited.  This can be done with
-    DOS' "attrib" command.
-
-    Edit config.sys to have multiple config menus. I have one for windows 95 and
-    five for Linux, like this:
-------------
-[menu]
-menuitem=W95, Windows 95
-menuitem=LINTP, Linux - ThinkPad
-menuitem=LINTP3, Linux - ThinkPad Console
-menuitem=LINDOC, Linux - Docked
-menuitem=LINDOC3, Linux - Docked Console
-menuitem=LIN1, Linux - Single User Mode
-REM menudefault=W95,10
-
-[W95]
-
-[LINTP]
-
-[LINDOC]
-
-[LINTP3]
-
-[LINDOC3]
-
-[LIN1]
-
-[COMMON]
-FILES=30
-REM Please read README.TXT in C:\MWW subdirectory before changing the DOS= statement.
-DOS=HIGH,UMB
-DEVICE=C:\MWW\MANAGER\MWD50430.EXE
-SHELL=c:\command.com /e:2048
--------------------
-
-The important things are the SHELL and DEVICE statements.
-
-    Then change autoexec.bat. Basically everything in there originally should be
-    done ONLY when Windows 95 is booted. Then you add new things specifically
-    for Linux.  Mine is as follows
-
----------------
-@ECHO OFF
-if "%CONFIG%" == "W95" goto W95
-
-REM
-REM Linux stuff
-REM
-SET MWPATH=C:\MWW\DLL;C:\MWW\MWGAMES;C:\MWW\DSP
-SET BLASTER=A220 I5 D1
-SET MWROOT=C:\MWW
-SET LIBPATH=C:\MWW\DLL
-SET PATH=C:\WINDOWS;C:\MWW\DLL;
-CALL MWAVE START NOSHOW
-c:\linux\boot\loadlin.exe @c:\linux\boot\parms\%CONFIG%.par
-
-:W95
-REM
-REM Windows 95 stuff
-REM
-c:\toolkit\guard
-SET MSINPUT=C:\MSINPUT
-SET MWPATH=C:\MWW\DLL;C:\MWW\MWGAMES;C:\MWW\DSP
-REM The following is used by DOS games to recognize Sound Blaster hardware.
-REM If hardware settings are changed, please change this line as well.
-REM See the Mwave README file for instructions.
-SET BLASTER=A220 I5 D1
-SET MWROOT=C:\MWW
-SET LIBPATH=C:\MWW\DLL
-SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;E:\ORAWIN95\BIN;f:\msdev\bin;e:\v30\bin.dbg;v:\devt\v30\bin;c:\JavaSDK\Bin;C:\MWW\DLL;
-SET INCLUDE=f:\MSDEV\INCLUDE;F:\MSDEV\MFC\INCLUDE
-SET LIB=F:\MSDEV\LIB;F:\MSDEV\MFC\LIB
-win
-
-------------------------
-
-Now build a file in c:\linux\boot\parms for each Linux config that you have.
-
-For example, my LINDOC3 config is for a docked Thinkpad at runlevel 3 with no
-initrd image, and has a parameter file named LINDOC3.PAR in c:\linux\boot\parms:
-
------------------------
-#   LOADLIN @param_file image=other_image root=/dev/other
-#
-#      Linux Console in docking station
-#
-c:\linux\boot\zImage.krn        # First value must be filename of Linux kernel.
-root=/dev/hda3                  # device which gets mounted as root FS
-ro                              # Other kernel arguments go here.
-apm=off
-doc=yes
-3
------------------------
-
-The doc=yes parameter is an environment variable used by my init scripts, not
-a kernel argument.
-
-However, the apm=off parameter IS a kernel argument!  APM, at least in my setup,
-causes the kernel to crash when loaded via loadlin (but NOT when loaded via
-LILO). The APM stuff COULD be forced out of the kernel via the kernel compile
-options. Instead, I got an unofficial patch to the APM drivers that allows them
-to be dynamically deactivated via kernel arguments. Whatever you chose to
-document, APM, it seems, MUST be off for setups like mine.
-
-Now make sure C:\MWW\MWCONFIG.REF looks like this:
-
-----------------------
-[NativeDOS]
-Default=SB1.5
-SBInputSource=CD
-SYNTH=FM
-QSound=OFF
-Reverb=OFF
-Chorus=OFF
-ReverbDepth=5
-ChorusDepth=5
-SBInputVolume=5
-SBMainVolume=10
-SBWaveVolume=10
-SBSynthVolume=10
-WaveTableVolume=10
-AudioPowerDriver=ON
-
-[FastCFG]
-Show=No
-HideOption=Off
------------------------------
-
-OR the Default= line COULD be
-
-Default=SBPRO
-
-Reboot to Windows 95 and choose Linux. When booted, use sndconfig to configure
-the sound modules and voilĂ  - ThinkPad sound with Linux.
-
-Now the gotchas - you can either have CD sound OR Mixers but not both. That's a
-problem with the SB1.5 (CD sound) or SBPRO (Mixers) settings. No one knows why
-this is!
-
-For some reason MPEG3 files, when played through mpg123, sound like they
-are playing at 1/8th speed - not very useful!  If you have ANY insight
-on why this second thing might be happening, I would be grateful.
-
-===========================================================
-    _/      _/_/_/_/
-   _/_/  _/_/     _/
-  _/ _/_/ _/_/_/_/      Martin John Bartlett
- _/  _/  _/     _/      (martin@nitram.demon.co.uk)
-_/      _/_/_/_/
-       _/
-_/    _/
- _/_/
-===========================================================
diff --git a/Documentation/sound/oss/oss-parameters.txt b/Documentation/sound/oss/oss-parameters.txt
deleted file mode 100644 (file)
index cc675f2..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-                          OSS Kernel Parameters
-                          ~~~~~~~~~~~~~~~~~~~~~
-
-See Documentation/admin-guide/kernel-parameters.rst for general information on
-specifying module parameters.
-
-This document may not be entirely up to date and comprehensive. The command
-"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
-module. Loadable modules, after being loaded into the running kernel, also
-reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
-parameters may be changed at runtime by the command
-"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}".
-
-
-       ad1848=         [HW,OSS]
-                       Format: <io>,<irq>,<dma>,<dma2>,<type>
-
-       aedsp16=        [HW,OSS] Audio Excel DSP 16
-                       Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq>
-                       See also header of sound/oss/aedsp16.c.
-
-       dmasound=       [HW,OSS] Sound subsystem buffers
-
-       mpu401=         [HW,OSS]
-                       Format: <io>,<irq>
-
-       opl3=           [HW,OSS]
-                       Format: <io>
-
-       pas2=           [HW,OSS] Format:
-                       <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16>
-
-       pss=            [HW,OSS] Personal Sound System (ECHO ESC614)
-                       Format:
-                       <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
-
-       sscape=         [HW,OSS]
-                       Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq>
-
-       trix=           [HW,OSS] MediaTrix AudioTrix Pro
-                       Format:
-                       <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
-
-       uart401=        [HW,OSS]
-                       Format: <io>,<irq>
-
-       uart6850=       [HW,OSS]
-                       Format: <io>,<irq>
-
-       waveartist=     [HW,OSS]
-                       Format: <io>,<irq>,<dma>,<dma2>
diff --git a/Documentation/sound/oss/ultrasound b/Documentation/sound/oss/ultrasound
deleted file mode 100644 (file)
index eed331c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-modprobe sound
-insmod ad1848
-insmod gus io=* irq=* dma=* ...
-
-This loads the driver for the Gravis Ultrasound family of sound cards.
-
-The gus module takes the following arguments
-
-io             I/O address of the Ultrasound card (eg. io=0x220)
-irq            IRQ of the Sound Blaster card 
-dma            DMA channel for the Sound Blaster
-dma16          2nd DMA channel, only needed for full duplex operation
-type           1 for PnP card
-gus16          1 for using 16 bit sampling daughter board
-no_wave_dma    Set to disable DMA usage for wavetable (see note)
-db16           ???
-
-
-no_wave_dma option
-
-This option defaults to a value of 0, which allows the Ultrasound wavetable
-DSP to use DMA for playback and downloading samples. This is the same
-as the old behaviour. If set to 1, no DMA is needed for downloading samples,
-and allows owners of a GUS MAX to make use of simultaneous digital audio
-(/dev/dsp), MIDI, and wavetable playback.
-
-
-If you have problems in recording with GUS MAX, you could try to use
-just one 8 bit DMA channel. Recording will not work with one DMA
-channel if it's a 16 bit one.
index a76f02f64469514eda06996a86f3bc6d19a820b2..fbebd08ae42e4a498fcd56743d4a0bd5b7c4ba3c 100644 (file)
@@ -527,11 +527,6 @@ W: http://ez.analog.com/community/linux-device-drivers
 S:     Supported
 F:     drivers/input/misc/adxl34x.c
 
-AEDSP16 DRIVER
-M:     Riccardo Facchetti <fizban@tin.it>
-S:     Maintained
-F:     sound/oss/aedsp16.c
-
 AF9013 MEDIA DRIVER
 M:     Antti Palosaari <crope@iki.fi>
 L:     linux-media@vger.kernel.org
@@ -9222,12 +9217,6 @@ F:       include/linux/dt-bindings/mux/
 F:     include/linux/mux/
 F:     drivers/mux/
 
-MULTISOUND SOUND DRIVER
-M:     Andrew Veliath <andrewtv@usa.net>
-S:     Maintained
-F:     Documentation/sound/oss/MultiSound
-F:     sound/oss/msnd*
-
 MULTITECH MULTIPORT CARD (ISICOM)
 S:     Orphan
 F:     drivers/tty/isicom.c
@@ -14638,6 +14627,7 @@ F:      Documentation/devicetree/bindings/extcon/extcon-arizona.txt
 F:     Documentation/devicetree/bindings/regulator/arizona-regulator.txt
 F:     Documentation/devicetree/bindings/mfd/arizona.txt
 F:     Documentation/devicetree/bindings/mfd/wm831x.txt
+F:     Documentation/devicetree/bindings/sound/wlf,arizona.txt
 F:     arch/arm/mach-s3c64xx/mach-crag6410*
 F:     drivers/clk/clk-wm83*.c
 F:     drivers/extcon/extcon-arizona.c
index a52795d9b45852a371fed81a8f17a51d63bab120..ebca22302ebb5e4704e20b7d6301d2fd415f5b48 100644 (file)
@@ -371,6 +371,8 @@ static int acp_hw_init(void *handle)
        adev->acp.acp_cell[0].name = "acp_audio_dma";
        adev->acp.acp_cell[0].num_resources = 4;
        adev->acp.acp_cell[0].resources = &adev->acp.acp_res[0];
+       adev->acp.acp_cell[0].platform_data = &adev->asic_type;
+       adev->acp.acp_cell[0].pdata_size = sizeof(adev->asic_type);
 
        adev->acp.acp_cell[1].name = "designware-i2s";
        adev->acp.acp_cell[1].num_resources = 1;
index 70e8c20acb2fd51e63890978483857ef40c4d3b7..3a49fbd8baf88ecd4afb606dc3e8a9681cd59936 100644 (file)
 #ifndef __AMD_SHARED_H__
 #define __AMD_SHARED_H__
 
-#define AMD_MAX_USEC_TIMEOUT           200000  /* 200 ms */
+#include <drm/amd_asic_type.h>
 
-/*
- * Supported ASIC types
- */
-enum amd_asic_type {
-       CHIP_TAHITI = 0,
-       CHIP_PITCAIRN,
-       CHIP_VERDE,
-       CHIP_OLAND,
-       CHIP_HAINAN,
-       CHIP_BONAIRE,
-       CHIP_KAVERI,
-       CHIP_KABINI,
-       CHIP_HAWAII,
-       CHIP_MULLINS,
-       CHIP_TOPAZ,
-       CHIP_TONGA,
-       CHIP_FIJI,
-       CHIP_CARRIZO,
-       CHIP_STONEY,
-       CHIP_POLARIS10,
-       CHIP_POLARIS11,
-       CHIP_POLARIS12,
-       CHIP_VEGA10,
-       CHIP_RAVEN,
-       CHIP_LAST,
-};
+#define AMD_MAX_USEC_TIMEOUT           200000  /* 200 ms */
 
 /*
  * Chip flags
index 64b30fe273fd7ba17312402c0efc9e81b77e94bb..176b1a74b2b727acf39fd89963a0be070688d75c 100644 (file)
@@ -727,7 +727,7 @@ config TOUCHSCREEN_WM831X
 
 config TOUCHSCREEN_WM97XX
        tristate "Support for WM97xx AC97 touchscreen controllers"
-       depends on AC97_BUS
+       depends on AC97_BUS || AC97_BUS_NEW
        help
          Say Y here if you have a Wolfson Microelectronics WM97xx
          touchscreen connected to your system. Note that this option
index c9d1c91e1887094f2ef740d9eee3af8d16ee6f82..fd714ee881f73d897b6d9150697f355bc4dd7f6a 100644 (file)
@@ -44,6 +44,7 @@
 #include <linux/pm.h>
 #include <linux/interrupt.h>
 #include <linux/bitops.h>
+#include <linux/mfd/wm97xx.h>
 #include <linux/workqueue.h>
 #include <linux/wm97xx.h>
 #include <linux/uaccess.h>
@@ -581,27 +582,85 @@ static void wm97xx_ts_input_close(struct input_dev *idev)
                wm->codec->acc_enable(wm, 0);
 }
 
-static int wm97xx_probe(struct device *dev)
+static int wm97xx_register_touch(struct wm97xx *wm)
 {
-       struct wm97xx *wm;
-       struct wm97xx_pdata *pdata = dev_get_platdata(dev);
-       int ret = 0, id = 0;
+       struct wm97xx_pdata *pdata = dev_get_platdata(wm->dev);
+       int ret;
 
-       wm = kzalloc(sizeof(struct wm97xx), GFP_KERNEL);
-       if (!wm)
+       wm->input_dev = devm_input_allocate_device(wm->dev);
+       if (wm->input_dev == NULL)
                return -ENOMEM;
-       mutex_init(&wm->codec_mutex);
 
-       wm->dev = dev;
-       dev_set_drvdata(dev, wm);
-       wm->ac97 = to_ac97_t(dev);
+       /* set up touch configuration */
+       wm->input_dev->name = "wm97xx touchscreen";
+       wm->input_dev->phys = "wm97xx";
+       wm->input_dev->open = wm97xx_ts_input_open;
+       wm->input_dev->close = wm97xx_ts_input_close;
+
+       __set_bit(EV_ABS, wm->input_dev->evbit);
+       __set_bit(EV_KEY, wm->input_dev->evbit);
+       __set_bit(BTN_TOUCH, wm->input_dev->keybit);
+
+       input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1],
+                            abs_x[2], 0);
+       input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1],
+                            abs_y[2], 0);
+       input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1],
+                            abs_p[2], 0);
+
+       input_set_drvdata(wm->input_dev, wm);
+       wm->input_dev->dev.parent = wm->dev;
+
+       ret = input_register_device(wm->input_dev);
+       if (ret)
+               return ret;
+
+       /*
+        * register our extended touch device (for machine specific
+        * extensions)
+        */
+       wm->touch_dev = platform_device_alloc("wm97xx-touch", -1);
+       if (!wm->touch_dev) {
+               ret = -ENOMEM;
+               goto touch_err;
+       }
+       platform_set_drvdata(wm->touch_dev, wm);
+       wm->touch_dev->dev.parent = wm->dev;
+       wm->touch_dev->dev.platform_data = pdata;
+       ret = platform_device_add(wm->touch_dev);
+       if (ret < 0)
+               goto touch_reg_err;
+
+       return 0;
+touch_reg_err:
+       platform_device_put(wm->touch_dev);
+touch_err:
+       input_unregister_device(wm->input_dev);
+       wm->input_dev = NULL;
+
+       return ret;
+}
+
+static void wm97xx_unregister_touch(struct wm97xx *wm)
+{
+       platform_device_unregister(wm->touch_dev);
+       input_unregister_device(wm->input_dev);
+       wm->input_dev = NULL;
+}
+
+static int _wm97xx_probe(struct wm97xx *wm)
+{
+       int id = 0;
+
+       mutex_init(&wm->codec_mutex);
+       dev_set_drvdata(wm->dev, wm);
 
        /* check that we have a supported codec */
        id = wm97xx_reg_read(wm, AC97_VENDOR_ID1);
        if (id != WM97XX_ID1) {
-               dev_err(dev, "Device with vendor %04x is not a wm97xx\n", id);
-               ret = -ENODEV;
-               goto alloc_err;
+               dev_err(wm->dev,
+                       "Device with vendor %04x is not a wm97xx\n", id);
+               return -ENODEV;
        }
 
        wm->id = wm97xx_reg_read(wm, AC97_VENDOR_ID2);
@@ -629,8 +688,7 @@ static int wm97xx_probe(struct device *dev)
        default:
                dev_err(wm->dev, "Support for wm97%02x not compiled in.\n",
                        wm->id & 0xff);
-               ret = -ENODEV;
-               goto alloc_err;
+               return -ENODEV;
        }
 
        /* set up physical characteristics */
@@ -644,79 +702,58 @@ static int wm97xx_probe(struct device *dev)
        wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS);
        wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE);
 
-       wm->input_dev = input_allocate_device();
-       if (wm->input_dev == NULL) {
-               ret = -ENOMEM;
-               goto alloc_err;
-       }
-
-       /* set up touch configuration */
-       wm->input_dev->name = "wm97xx touchscreen";
-       wm->input_dev->phys = "wm97xx";
-       wm->input_dev->open = wm97xx_ts_input_open;
-       wm->input_dev->close = wm97xx_ts_input_close;
-
-       __set_bit(EV_ABS, wm->input_dev->evbit);
-       __set_bit(EV_KEY, wm->input_dev->evbit);
-       __set_bit(BTN_TOUCH, wm->input_dev->keybit);
-
-       input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1],
-                            abs_x[2], 0);
-       input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1],
-                            abs_y[2], 0);
-       input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1],
-                            abs_p[2], 0);
+       return wm97xx_register_touch(wm);
+}
 
-       input_set_drvdata(wm->input_dev, wm);
-       wm->input_dev->dev.parent = dev;
+static void wm97xx_remove_battery(struct wm97xx *wm)
+{
+       platform_device_unregister(wm->battery_dev);
+}
 
-       ret = input_register_device(wm->input_dev);
-       if (ret < 0)
-               goto dev_alloc_err;
+static int wm97xx_add_battery(struct wm97xx *wm,
+                             struct wm97xx_batt_pdata *pdata)
+{
+       int ret;
 
-       /* register our battery device */
        wm->battery_dev = platform_device_alloc("wm97xx-battery", -1);
-       if (!wm->battery_dev) {
-               ret = -ENOMEM;
-               goto batt_err;
-       }
+       if (!wm->battery_dev)
+               return -ENOMEM;
+
        platform_set_drvdata(wm->battery_dev, wm);
-       wm->battery_dev->dev.parent = dev;
-       wm->battery_dev->dev.platform_data = pdata ? pdata->batt_pdata : NULL;
+       wm->battery_dev->dev.parent = wm->dev;
+       wm->battery_dev->dev.platform_data = pdata;
        ret = platform_device_add(wm->battery_dev);
-       if (ret < 0)
-               goto batt_reg_err;
+       if (ret)
+               platform_device_put(wm->battery_dev);
 
-       /* register our extended touch device (for machine specific
-        * extensions) */
-       wm->touch_dev = platform_device_alloc("wm97xx-touch", -1);
-       if (!wm->touch_dev) {
-               ret = -ENOMEM;
-               goto touch_err;
-       }
-       platform_set_drvdata(wm->touch_dev, wm);
-       wm->touch_dev->dev.parent = dev;
-       wm->touch_dev->dev.platform_data = pdata;
-       ret = platform_device_add(wm->touch_dev);
+       return ret;
+}
+
+static int wm97xx_probe(struct device *dev)
+{
+       struct wm97xx *wm;
+       int ret;
+       struct wm97xx_pdata *pdata = dev_get_platdata(dev);
+
+       wm = devm_kzalloc(dev, sizeof(struct wm97xx), GFP_KERNEL);
+       if (!wm)
+               return -ENOMEM;
+
+       wm->dev = dev;
+       wm->ac97 = to_ac97_t(dev);
+
+       ret =  _wm97xx_probe(wm);
+       if (ret)
+               return ret;
+
+       ret = wm97xx_add_battery(wm, pdata ? pdata->batt_pdata : NULL);
        if (ret < 0)
-               goto touch_reg_err;
+               goto batt_err;
 
        return ret;
 
- touch_reg_err:
-       platform_device_put(wm->touch_dev);
- touch_err:
-       platform_device_del(wm->battery_dev);
- batt_reg_err:
-       platform_device_put(wm->battery_dev);
- batt_err:
-       input_unregister_device(wm->input_dev);
-       wm->input_dev = NULL;
- dev_alloc_err:
-       input_free_device(wm->input_dev);
- alloc_err:
-       kfree(wm);
-
+batt_err:
+       wm97xx_unregister_touch(wm);
        return ret;
 }
 
@@ -724,14 +761,45 @@ static int wm97xx_remove(struct device *dev)
 {
        struct wm97xx *wm = dev_get_drvdata(dev);
 
-       platform_device_unregister(wm->battery_dev);
-       platform_device_unregister(wm->touch_dev);
-       input_unregister_device(wm->input_dev);
-       kfree(wm);
+       wm97xx_remove_battery(wm);
+       wm97xx_unregister_touch(wm);
 
        return 0;
 }
 
+static int wm97xx_mfd_probe(struct platform_device *pdev)
+{
+       struct wm97xx *wm;
+       struct wm97xx_platform_data *mfd_pdata = dev_get_platdata(&pdev->dev);
+       int ret;
+
+       wm = devm_kzalloc(&pdev->dev, sizeof(struct wm97xx), GFP_KERNEL);
+       if (!wm)
+               return -ENOMEM;
+
+       wm->dev = &pdev->dev;
+       wm->ac97 = mfd_pdata->ac97;
+
+       ret =  _wm97xx_probe(wm);
+       if (ret)
+               return ret;
+
+       ret = wm97xx_add_battery(wm, mfd_pdata->batt_pdata);
+       if (ret < 0)
+               goto batt_err;
+
+       return ret;
+
+batt_err:
+       wm97xx_unregister_touch(wm);
+       return ret;
+}
+
+static int wm97xx_mfd_remove(struct platform_device *pdev)
+{
+       return wm97xx_remove(&pdev->dev);
+}
+
 static int __maybe_unused wm97xx_suspend(struct device *dev)
 {
        struct wm97xx *wm = dev_get_drvdata(dev);
@@ -828,21 +896,41 @@ EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops);
 
 static struct device_driver wm97xx_driver = {
        .name =         "wm97xx-ts",
+#ifdef CONFIG_AC97_BUS
        .bus =          &ac97_bus_type,
+#endif
        .owner =        THIS_MODULE,
        .probe =        wm97xx_probe,
        .remove =       wm97xx_remove,
        .pm =           &wm97xx_pm_ops,
 };
 
+static struct platform_driver wm97xx_mfd_driver = {
+       .driver = {
+               .name =         "wm97xx-ts",
+               .pm =           &wm97xx_pm_ops,
+       },
+       .probe =        wm97xx_mfd_probe,
+       .remove =       wm97xx_mfd_remove,
+};
+
 static int __init wm97xx_init(void)
 {
-       return driver_register(&wm97xx_driver);
+       int ret;
+
+       ret = platform_driver_register(&wm97xx_mfd_driver);
+       if (ret)
+               return ret;
+
+       if (IS_BUILTIN(CONFIG_AC97_BUS))
+               ret =  driver_register(&wm97xx_driver);
+       return ret;
 }
 
 static void __exit wm97xx_exit(void)
 {
        driver_unregister(&wm97xx_driver);
+       platform_driver_unregister(&wm97xx_mfd_driver);
 }
 
 module_init(wm97xx_init);
index fc5e4fef89d222aa587473634bf056d9dee39578..ac5ad6d0837c982de9c3f9e3520d643636eedc81 100644 (file)
@@ -1746,6 +1746,20 @@ config MFD_WM8994
          core support for the WM8994, in order to use the actual
          functionaltiy of the device other drivers must be enabled.
 
+config MFD_WM97xx
+       tristate "Wolfson Microelectronics WM97xx"
+       select MFD_CORE
+       select REGMAP_AC97
+       select AC97_BUS_COMPAT
+       depends on AC97_BUS_NEW
+       help
+         The WM9705, WM9712 and WM9713 is a highly integrated hi-fi CODEC
+         designed for smartphone applications.  As well as audio functionality
+         it has on board GPIO and a touchscreen functionality which is
+         supported via the relevant subsystems.  This driver provides core
+         support for the WM97xx, in order to use the actual functionaltiy of
+         the device other drivers must be enabled.
+
 config MFD_STW481X
        tristate "Support for ST Microelectronics STw481x"
        depends on I2C && (ARCH_NOMADIK || COMPILE_TEST)
index 8703ff17998e9119d006978dd5ee8c1aeebf5541..0235e6766bc13e070d9c07b39582159787853908 100644 (file)
@@ -74,6 +74,7 @@ obj-$(CONFIG_MFD_WM8350)      += wm8350.o
 obj-$(CONFIG_MFD_WM8350_I2C)   += wm8350-i2c.o
 wm8994-objs                    := wm8994-core.o wm8994-irq.o wm8994-regmap.o
 obj-$(CONFIG_MFD_WM8994)       += wm8994.o
+obj-$(CONFIG_MFD_WM97xx)       += wm97xx-core.o
 
 obj-$(CONFIG_TPS6105X)         += tps6105x.o
 obj-$(CONFIG_TPS65010)         += tps65010.o
index 8d46e3ad9529d46a2b2e27229668e517ef38552f..77875250abe590bb73ba2b52ba3c38c444552579 100644 (file)
@@ -797,12 +797,7 @@ EXPORT_SYMBOL_GPL(arizona_of_get_type);
 static int arizona_of_get_core_pdata(struct arizona *arizona)
 {
        struct arizona_pdata *pdata = &arizona->pdata;
-       struct property *prop;
-       const __be32 *cur;
-       u32 val;
-       u32 pdm_val[ARIZONA_MAX_PDM_SPK];
        int ret, i;
-       int count = 0;
 
        pdata->reset = of_get_named_gpio(arizona->dev->of_node, "wlf,reset", 0);
        if (pdata->reset == -EPROBE_DEFER) {
@@ -836,64 +831,6 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
                        ret);
        }
 
-       of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop,
-                                cur, val) {
-               if (count == ARRAY_SIZE(pdata->inmode))
-                       break;
-
-               pdata->inmode[count] = val;
-               count++;
-       }
-
-       count = 0;
-       of_property_for_each_u32(arizona->dev->of_node, "wlf,dmic-ref", prop,
-                                cur, val) {
-               if (count == ARRAY_SIZE(pdata->dmic_ref))
-                       break;
-
-               pdata->dmic_ref[count] = val;
-               count++;
-       }
-
-       count = 0;
-       of_property_for_each_u32(arizona->dev->of_node, "wlf,out-mono", prop,
-                                cur, val) {
-               if (count == ARRAY_SIZE(pdata->out_mono))
-                       break;
-
-               pdata->out_mono[count] = !!val;
-               count++;
-       }
-
-       count = 0;
-       of_property_for_each_u32(arizona->dev->of_node,
-                                "wlf,max-channels-clocked",
-                                prop, cur, val) {
-               if (count == ARRAY_SIZE(pdata->max_channels_clocked))
-                       break;
-
-               pdata->max_channels_clocked[count] = val;
-               count++;
-       }
-
-       ret = of_property_read_u32_array(arizona->dev->of_node,
-                                        "wlf,spk-fmt",
-                                        pdm_val,
-                                        ARRAY_SIZE(pdm_val));
-
-       if (ret >= 0)
-               for (count = 0; count < ARRAY_SIZE(pdata->spk_fmt); ++count)
-                       pdata->spk_fmt[count] = pdm_val[count];
-
-       ret = of_property_read_u32_array(arizona->dev->of_node,
-                                        "wlf,spk-mute",
-                                        pdm_val,
-                                        ARRAY_SIZE(pdm_val));
-
-       if (ret >= 0)
-               for (count = 0; count < ARRAY_SIZE(pdata->spk_mute); ++count)
-                       pdata->spk_mute[count] = pdm_val[count];
-
        return 0;
 }
 
@@ -1026,7 +963,7 @@ int arizona_dev_init(struct arizona *arizona)
        const char * const mclk_name[] = { "mclk1", "mclk2" };
        struct device *dev = arizona->dev;
        const char *type_name = NULL;
-       unsigned int reg, val, mask;
+       unsigned int reg, val;
        int (*apply_patch)(struct arizona *) = NULL;
        const struct mfd_cell *subdevs = NULL;
        int n_subdevs, ret, i;
@@ -1429,73 +1366,6 @@ int arizona_dev_init(struct arizona *arizona)
                                   ARIZONA_MICB1_RATE, val);
        }
 
-       for (i = 0; i < ARIZONA_MAX_INPUT; i++) {
-               /* Default for both is 0 so noop with defaults */
-               val = arizona->pdata.dmic_ref[i]
-                       << ARIZONA_IN1_DMIC_SUP_SHIFT;
-               if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC)
-                       val |= 1 << ARIZONA_IN1_MODE_SHIFT;
-
-               switch (arizona->type) {
-               case WM8998:
-               case WM1814:
-                       regmap_update_bits(arizona->regmap,
-                               ARIZONA_ADC_DIGITAL_VOLUME_1L + (i * 8),
-                               ARIZONA_IN1L_SRC_SE_MASK,
-                               (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
-                                       << ARIZONA_IN1L_SRC_SE_SHIFT);
-
-                       regmap_update_bits(arizona->regmap,
-                               ARIZONA_ADC_DIGITAL_VOLUME_1R + (i * 8),
-                               ARIZONA_IN1R_SRC_SE_MASK,
-                               (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
-                                       << ARIZONA_IN1R_SRC_SE_SHIFT);
-
-                       mask = ARIZONA_IN1_DMIC_SUP_MASK |
-                               ARIZONA_IN1_MODE_MASK;
-                       break;
-               default:
-                       if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE)
-                               val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT;
-
-                       mask = ARIZONA_IN1_DMIC_SUP_MASK |
-                               ARIZONA_IN1_MODE_MASK |
-                               ARIZONA_IN1_SINGLE_ENDED_MASK;
-                       break;
-               }
-
-               regmap_update_bits(arizona->regmap,
-                                  ARIZONA_IN1L_CONTROL + (i * 8),
-                                  mask, val);
-       }
-
-       for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) {
-               /* Default is 0 so noop with defaults */
-               if (arizona->pdata.out_mono[i])
-                       val = ARIZONA_OUT1_MONO;
-               else
-                       val = 0;
-
-               regmap_update_bits(arizona->regmap,
-                                  ARIZONA_OUTPUT_PATH_CONFIG_1L + (i * 8),
-                                  ARIZONA_OUT1_MONO, val);
-       }
-
-       for (i = 0; i < ARIZONA_MAX_PDM_SPK; i++) {
-               if (arizona->pdata.spk_mute[i])
-                       regmap_update_bits(arizona->regmap,
-                                          ARIZONA_PDM_SPK1_CTRL_1 + (i * 2),
-                                          ARIZONA_SPK1_MUTE_ENDIAN_MASK |
-                                          ARIZONA_SPK1_MUTE_SEQ1_MASK,
-                                          arizona->pdata.spk_mute[i]);
-
-               if (arizona->pdata.spk_fmt[i])
-                       regmap_update_bits(arizona->regmap,
-                                          ARIZONA_PDM_SPK1_CTRL_2 + (i * 2),
-                                          ARIZONA_SPK1_FMT_MASK,
-                                          arizona->pdata.spk_fmt[i]);
-       }
-
        pm_runtime_set_active(arizona->dev);
        pm_runtime_enable(arizona->dev);
 
diff --git a/drivers/mfd/wm97xx-core.c b/drivers/mfd/wm97xx-core.c
new file mode 100644 (file)
index 0000000..4141ee5
--- /dev/null
@@ -0,0 +1,366 @@
+/*
+ * Wolfson WM97xx -- Core device
+ *
+ * Copyright (C) 2017 Robert Jarzmik
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Features:
+ *  - an AC97 audio codec
+ *  - a touchscreen driver
+ *  - a GPIO block
+ */
+
+#include <linux/device.h>
+#include <linux/mfd/core.h>
+#include <linux/mfd/wm97xx.h>
+#include <linux/module.h>
+#include <linux/regmap.h>
+#include <linux/slab.h>
+#include <linux/wm97xx.h>
+#include <sound/ac97/codec.h>
+#include <sound/ac97/compat.h>
+
+#define WM9705_VENDOR_ID 0x574d4c05
+#define WM9712_VENDOR_ID 0x574d4c12
+#define WM9713_VENDOR_ID 0x574d4c13
+#define WM97xx_VENDOR_ID_MASK 0xffffffff
+
+struct wm97xx_priv {
+       struct regmap *regmap;
+       struct snd_ac97 *ac97;
+       struct device *dev;
+       struct wm97xx_platform_data codec_pdata;
+};
+
+static bool wm97xx_readable_reg(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case AC97_RESET ... AC97_PCM_SURR_DAC_RATE:
+       case AC97_PCM_LR_ADC_RATE:
+       case AC97_CENTER_LFE_MASTER:
+       case AC97_SPDIF ... AC97_LINE1_LEVEL:
+       case AC97_GPIO_CFG ... 0x5c:
+       case AC97_CODEC_CLASS_REV ... AC97_PCI_SID:
+       case 0x74 ... AC97_VENDOR_ID2:
+               return true;
+       default:
+               return false;
+       }
+}
+
+static bool wm97xx_writeable_reg(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case AC97_VENDOR_ID1:
+       case AC97_VENDOR_ID2:
+               return false;
+       default:
+               return wm97xx_readable_reg(dev, reg);
+       }
+}
+
+static const struct reg_default wm9705_reg_defaults[] = {
+       { 0x02, 0x8000 },
+       { 0x04, 0x8000 },
+       { 0x06, 0x8000 },
+       { 0x0a, 0x8000 },
+       { 0x0c, 0x8008 },
+       { 0x0e, 0x8008 },
+       { 0x10, 0x8808 },
+       { 0x12, 0x8808 },
+       { 0x14, 0x8808 },
+       { 0x16, 0x8808 },
+       { 0x18, 0x8808 },
+       { 0x1a, 0x0000 },
+       { 0x1c, 0x8000 },
+       { 0x20, 0x0000 },
+       { 0x22, 0x0000 },
+       { 0x26, 0x000f },
+       { 0x28, 0x0605 },
+       { 0x2a, 0x0000 },
+       { 0x2c, 0xbb80 },
+       { 0x32, 0xbb80 },
+       { 0x34, 0x2000 },
+       { 0x5a, 0x0000 },
+       { 0x5c, 0x0000 },
+       { 0x72, 0x0808 },
+       { 0x74, 0x0000 },
+       { 0x76, 0x0006 },
+       { 0x78, 0x0000 },
+       { 0x7a, 0x0000 },
+};
+
+static const struct regmap_config wm9705_regmap_config = {
+       .reg_bits = 16,
+       .reg_stride = 2,
+       .val_bits = 16,
+       .max_register = 0x7e,
+       .cache_type = REGCACHE_RBTREE,
+
+       .reg_defaults = wm9705_reg_defaults,
+       .num_reg_defaults = ARRAY_SIZE(wm9705_reg_defaults),
+       .volatile_reg = regmap_ac97_default_volatile,
+       .readable_reg = wm97xx_readable_reg,
+       .writeable_reg = wm97xx_writeable_reg,
+};
+
+static struct mfd_cell wm9705_cells[] = {
+       { .name = "wm9705-codec", },
+       { .name = "wm97xx-ts", },
+};
+
+static bool wm9712_volatile_reg(struct device *dev, unsigned int reg)
+{
+       switch (reg) {
+       case AC97_REC_GAIN:
+               return true;
+       default:
+               return regmap_ac97_default_volatile(dev, reg);
+       }
+}
+
+static const struct reg_default wm9712_reg_defaults[] = {
+       { 0x02, 0x8000 },
+       { 0x04, 0x8000 },
+       { 0x06, 0x8000 },
+       { 0x08, 0x0f0f },
+       { 0x0a, 0xaaa0 },
+       { 0x0c, 0xc008 },
+       { 0x0e, 0x6808 },
+       { 0x10, 0xe808 },
+       { 0x12, 0xaaa0 },
+       { 0x14, 0xad00 },
+       { 0x16, 0x8000 },
+       { 0x18, 0xe808 },
+       { 0x1a, 0x3000 },
+       { 0x1c, 0x8000 },
+       { 0x20, 0x0000 },
+       { 0x22, 0x0000 },
+       { 0x26, 0x000f },
+       { 0x28, 0x0605 },
+       { 0x2a, 0x0410 },
+       { 0x2c, 0xbb80 },
+       { 0x2e, 0xbb80 },
+       { 0x32, 0xbb80 },
+       { 0x34, 0x2000 },
+       { 0x4c, 0xf83e },
+       { 0x4e, 0xffff },
+       { 0x50, 0x0000 },
+       { 0x52, 0x0000 },
+       { 0x56, 0xf83e },
+       { 0x58, 0x0008 },
+       { 0x5c, 0x0000 },
+       { 0x60, 0xb032 },
+       { 0x62, 0x3e00 },
+       { 0x64, 0x0000 },
+       { 0x76, 0x0006 },
+       { 0x78, 0x0001 },
+       { 0x7a, 0x0000 },
+};
+
+static const struct regmap_config wm9712_regmap_config = {
+       .reg_bits = 16,
+       .reg_stride = 2,
+       .val_bits = 16,
+       .max_register = 0x7e,
+       .cache_type = REGCACHE_RBTREE,
+
+       .reg_defaults = wm9712_reg_defaults,
+       .num_reg_defaults = ARRAY_SIZE(wm9712_reg_defaults),
+       .volatile_reg = wm9712_volatile_reg,
+       .readable_reg = wm97xx_readable_reg,
+       .writeable_reg = wm97xx_writeable_reg,
+};
+
+static struct mfd_cell wm9712_cells[] = {
+       { .name = "wm9712-codec", },
+       { .name = "wm97xx-ts", },
+};
+
+static const struct reg_default wm9713_reg_defaults[] = {
+       { 0x02, 0x8080 },       /* Speaker Output Volume */
+       { 0x04, 0x8080 },       /* Headphone Output Volume */
+       { 0x06, 0x8080 },       /* Out3/OUT4 Volume */
+       { 0x08, 0xc880 },       /* Mono Volume */
+       { 0x0a, 0xe808 },       /* LINEIN Volume */
+       { 0x0c, 0xe808 },       /* DAC PGA Volume */
+       { 0x0e, 0x0808 },       /* MIC PGA Volume */
+       { 0x10, 0x00da },       /* MIC Routing Control */
+       { 0x12, 0x8000 },       /* Record PGA Volume */
+       { 0x14, 0xd600 },       /* Record Routing */
+       { 0x16, 0xaaa0 },       /* PCBEEP Volume */
+       { 0x18, 0xaaa0 },       /* VxDAC Volume */
+       { 0x1a, 0xaaa0 },       /* AUXDAC Volume */
+       { 0x1c, 0x0000 },       /* Output PGA Mux */
+       { 0x1e, 0x0000 },       /* DAC 3D control */
+       { 0x20, 0x0f0f },       /* DAC Tone Control*/
+       { 0x22, 0x0040 },       /* MIC Input Select & Bias */
+       { 0x24, 0x0000 },       /* Output Volume Mapping & Jack */
+       { 0x26, 0x7f00 },       /* Powerdown Ctrl/Stat*/
+       { 0x28, 0x0405 },       /* Extended Audio ID */
+       { 0x2a, 0x0410 },       /* Extended Audio Start/Ctrl */
+       { 0x2c, 0xbb80 },       /* Audio DACs Sample Rate */
+       { 0x2e, 0xbb80 },       /* AUXDAC Sample Rate */
+       { 0x32, 0xbb80 },       /* Audio ADCs Sample Rate */
+       { 0x36, 0x4523 },       /* PCM codec control */
+       { 0x3a, 0x2000 },       /* SPDIF control */
+       { 0x3c, 0xfdff },       /* Powerdown 1 */
+       { 0x3e, 0xffff },       /* Powerdown 2 */
+       { 0x40, 0x0000 },       /* General Purpose */
+       { 0x42, 0x0000 },       /* Fast Power-Up Control */
+       { 0x44, 0x0080 },       /* MCLK/PLL Control */
+       { 0x46, 0x0000 },       /* MCLK/PLL Control */
+
+       { 0x4c, 0xfffe },       /* GPIO Pin Configuration */
+       { 0x4e, 0xffff },       /* GPIO Pin Polarity / Type */
+       { 0x50, 0x0000 },       /* GPIO Pin Sticky */
+       { 0x52, 0x0000 },       /* GPIO Pin Wake-Up */
+                               /* GPIO Pin Status */
+       { 0x56, 0xfffe },       /* GPIO Pin Sharing */
+       { 0x58, 0x4000 },       /* GPIO PullUp/PullDown */
+       { 0x5a, 0x0000 },       /* Additional Functions 1 */
+       { 0x5c, 0x0000 },       /* Additional Functions 2 */
+       { 0x60, 0xb032 },       /* ALC Control */
+       { 0x62, 0x3e00 },       /* ALC / Noise Gate Control */
+       { 0x64, 0x0000 },       /* AUXDAC input control */
+       { 0x74, 0x0000 },       /* Digitiser Reg 1 */
+       { 0x76, 0x0006 },       /* Digitiser Reg 2 */
+       { 0x78, 0x0001 },       /* Digitiser Reg 3 */
+       { 0x7a, 0x0000 },       /* Digitiser Read Back */
+};
+
+static const struct regmap_config wm9713_regmap_config = {
+       .reg_bits = 16,
+       .reg_stride = 2,
+       .val_bits = 16,
+       .max_register = 0x7e,
+       .cache_type = REGCACHE_RBTREE,
+
+       .reg_defaults = wm9713_reg_defaults,
+       .num_reg_defaults = ARRAY_SIZE(wm9713_reg_defaults),
+       .volatile_reg = regmap_ac97_default_volatile,
+       .readable_reg = wm97xx_readable_reg,
+       .writeable_reg = wm97xx_writeable_reg,
+};
+
+static struct mfd_cell wm9713_cells[] = {
+       { .name = "wm9713-codec", },
+       { .name = "wm97xx-ts", },
+};
+
+static int wm97xx_ac97_probe(struct ac97_codec_device *adev)
+{
+       struct wm97xx_priv *wm97xx;
+       const struct regmap_config *config;
+       struct wm97xx_platform_data *codec_pdata;
+       struct mfd_cell *cells;
+       int ret = -ENODEV, nb_cells, i;
+       struct wm97xx_pdata *pdata = snd_ac97_codec_get_platdata(adev);
+
+       wm97xx = devm_kzalloc(ac97_codec_dev2dev(adev),
+                             sizeof(*wm97xx), GFP_KERNEL);
+       if (!wm97xx)
+               return -ENOMEM;
+
+       wm97xx->dev = ac97_codec_dev2dev(adev);
+       wm97xx->ac97 = snd_ac97_compat_alloc(adev);
+       if (IS_ERR(wm97xx->ac97))
+               return PTR_ERR(wm97xx->ac97);
+
+
+       ac97_set_drvdata(adev, wm97xx);
+       dev_info(wm97xx->dev, "wm97xx core found, id=0x%x\n",
+                adev->vendor_id);
+
+       codec_pdata = &wm97xx->codec_pdata;
+       codec_pdata->ac97 = wm97xx->ac97;
+       codec_pdata->batt_pdata = pdata->batt_pdata;
+
+       switch (adev->vendor_id) {
+       case WM9705_VENDOR_ID:
+               config = &wm9705_regmap_config;
+               cells = wm9705_cells;
+               nb_cells = ARRAY_SIZE(wm9705_cells);
+               break;
+       case WM9712_VENDOR_ID:
+               config = &wm9712_regmap_config;
+               cells = wm9712_cells;
+               nb_cells = ARRAY_SIZE(wm9712_cells);
+               break;
+       case WM9713_VENDOR_ID:
+               config = &wm9713_regmap_config;
+               cells