From c7fc24dc4420057f103afe8fc64524ebc25c5d37 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Tue, 25 Aug 1998 09:12:35 +0000 Subject: o Merge with Linux 2.1.116. o New Newport console code. o New G364 console code. --- drivers/sound/lowlevel/Config.in | 56 +++++++++++++++++++++++++++ drivers/sound/lowlevel/Config.tmpl | 57 --------------------------- drivers/sound/lowlevel/Makefile | 79 +++++++++----------------------------- drivers/sound/lowlevel/README.awe | 30 +++++++-------- drivers/sound/lowlevel/aci.c | 7 ++-- drivers/sound/lowlevel/awe_wave.c | 2 +- drivers/sound/lowlevel/init.c | 64 ------------------------------ drivers/sound/lowlevel/soundlow.c | 66 +++++++++++++++++++++++++++++++ 8 files changed, 160 insertions(+), 201 deletions(-) create mode 100644 drivers/sound/lowlevel/Config.in delete mode 100644 drivers/sound/lowlevel/Config.tmpl delete mode 100644 drivers/sound/lowlevel/init.c create mode 100644 drivers/sound/lowlevel/soundlow.c (limited to 'drivers/sound/lowlevel') diff --git a/drivers/sound/lowlevel/Config.in b/drivers/sound/lowlevel/Config.in new file mode 100644 index 000000000..36928af08 --- /dev/null +++ b/drivers/sound/lowlevel/Config.in @@ -0,0 +1,56 @@ +dep_tristate 'ACI mixer (miroPCM12)' CONFIG_ACI_MIXER $CONFIG_SOUND_OSS + +dep_tristate 'AWE32 synth' CONFIG_AWE32_SYNTH $CONFIG_SOUND_OSS + +if [ "$CONFIG_SOUND_OSS" = "y" -o "$CONFIG_SOUND" = "m" ]; then + dep_tristate 'Gallant Audio Cards (SC-6000 and SC-6600 based)' CONFIG_AEDSP16 $CONFIG_SOUND_OSS + if [ "$CONFIG_AEDSP16" = "y" -o "$CONFIG_AEDSP16" = "m" ]; then + hex ' I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220 + fi + + if [ "$CONFIG_AEDSP16" = "y" -o "$CONFIG_AEDSP16" = "m" ]; then + comment 'SC-6600 Audio Cards have no jumper switches at all' + bool 'SC-6600 based audio cards (new Audio Excel DSP 16)' CONFIG_SC6600 + if [ "$CONFIG_SC6600" = "y" ]; then + comment 'SC-6600 specific configuration' + bool 'Activate SC-6600 Joystick Interface' CONFIG_SC6600_JOY + int 'SC-6600 CDROM Interface (4=None, 3=IDE, 1=Panasonic, 0=?Sony?)' CONFIG_SC6600_CDROM 4 + hex 'SC-6600 CDROM Interface I/O Address' CONFIG_SC6600_CDROMBASE 0 + fi + + if [ "$CONFIG_SOUND_SB" = "y" -o "$CONFIG_SOUND_SB" = "m" ]; then + if [ "$CONFIG_AEDSP16_MSS" != "y" ]; then + bool 'Audio Excel DSP 16 (SBPro emulation)' CONFIG_AEDSP16_SBPRO + if [ "$CONFIG_AEDSP16_SBPRO" = "y" ]; then + comment 'Audio Excel DSP 16 [Sound Blaster Pro]' + hex 'I/O base for Audio Excel DSP 16 220, 240' CONFIG_AEDSP16_BASE $CONFIG_SB_BASE + int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' CONFIG_AEDSP16_SB_IRQ $CONFIG_SB_IRQ + int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_SB_DMA $CONFIG_SB_DMA + fi + fi + fi + + if [ "$CONFIG_SOUND_MSS" = "y" -o "$CONFIG_SOUND_MSS" = "m" ]; then + if [ "$CONFIG_AEDSP16_SBPRO" != "y" ]; then + bool 'Audio Excel DSP 16 (MSS emulation)' CONFIG_AEDSP16_MSS + if [ "$CONFIG_AEDSP16_MSS" = "y" ]; then + comment 'Audio Excel DSP 16 [Microsoft Sound System]' + hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220 + int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' CONFIG_AEDSP16_MSS_IRQ $CONFIG_MSS_IRQ + int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_MSS_DMA $CONFIG_MSS_DMA + fi + fi + fi + + if [ "$CONFIG_SOUND_MPU401" = "y" -o "$CONFIG_SOUND_MPU401" = "m" ]; then + bool 'Audio Excel DSP 16 (MPU401 emulation)' CONFIG_AEDSP16_MPU401 + if [ "$CONFIG_AEDSP16_MPU401" = "y" ]; then + comment 'Audio Excel DSP 16 [MPU-401]' + if [ "$CONFIG_AEDSP16_SBPRO" != "y" -a "$CONFIG_AEDSP16_MSS" != "y" ]; then + hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220 + fi + int 'MPU401 IRQ for Audio Excel DSP 16 5, 7, 9, 10 or 0 (disable)' CONFIG_AEDSP16_MPU_IRQ $CONFIG_MPU_IRQ + fi + fi + fi +fi diff --git a/drivers/sound/lowlevel/Config.tmpl b/drivers/sound/lowlevel/Config.tmpl deleted file mode 100644 index e3ad81dbb..000000000 --- a/drivers/sound/lowlevel/Config.tmpl +++ /dev/null @@ -1,57 +0,0 @@ -bool 'Additional low level drivers' CONFIG_LOWLEVEL_SOUND - -if [ "$CONFIG_LOWLEVEL_SOUND" = "y" ]; then - bool 'ACI mixer (miroPCM12)' CONFIG_ACI_MIXER - bool 'AWE32 synth' CONFIG_AWE32_SYNTH - bool 'Gallant Audio Cards (SC-6000 and SC-6600 based)' CONFIG_AEDSP16 - - if [ "$CONFIG_AEDSP16" = "y" ]; then - comment 'SC-6600 Audio Cards have no jumper switches at all' - bool 'SC-6600 based audio cards (new Audio Excel DSP 16)' CONFIG_SC6600 - - if [ "$CONFIG_SB" = "y" -a "$CONFIG_AEDSP16_MSS" != "y" ]; then - bool 'Audio Excel DSP 16 (SBPro emulation)' CONFIG_AEDSP16_SBPRO - if [ "$CONFIG_AEDSP16_SBPRO" = "y" ]; then - comment 'Audio Excel DSP 16 [Sound Blaster Pro]' - hex 'I/O base for Audio Excel DSP 16 220 or 240' \ - CONFIG_AEDSP16_BASE $CONFIG_SB_BASE - int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' \ - CONFIG_AEDSP16_SB_IRQ $CONFIG_SB_IRQ - int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_SB_DMA $CONFIG_SB_DMA - fi - fi - - if [ "$CONFIG_MSS" = "y" -a "$CONFIG_AEDSP16_SBPRO" != "y" ]; then - bool 'Audio Excel DSP 16 (MSS emulation)' CONFIG_AEDSP16_MSS - if [ "$CONFIG_AEDSP16_MSS" = "y" ]; then - comment 'Audio Excel DSP 16 [Microsoft Sound System]' - hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220 - int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' \ - CONFIG_AEDSP16_MSS_IRQ $CONFIG_MSS_IRQ - int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_MSS_DMA $CONFIG_MSS_DMA - fi - fi - - if [ "$CONFIG_MPU401" = "y" ]; then - bool 'Audio Excel DSP 16 (MPU401 emulation)' CONFIG_AEDSP16_MPU401 - if [ "$CONFIG_AEDSP16_MPU401" = "y" ]; then - comment 'Audio Excel DSP 16 [MPU-401]' - if [ "$CONFIG_AEDSP16_SBPRO" != "y" \ - -a "$CONFIG_AEDSP16_MSS" != "y" ]; then - hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220 - fi - int 'MPU401 IRQ for Audio Excel DSP 16 5, 7, 9, 10 or 0 (disable)' \ - CONFIG_AEDSP16_MPU_IRQ $CONFIG_MPU_IRQ - fi - fi - - if [ "$CONFIG_SC6600" = "y" ]; then - comment 'SC-6600 specific configuration' - bool 'Activate SC-6600 Joystick Interface' CONFIG_SC6600_JOY - int 'SC-6600 CDROM Interface (4=None, 3=IDE, 1=Panasonic, 0=?Sony?)' \ - CONFIG_SC6600_CDROM 4 - hex 'SC-6600 CDROM Interface I/O Address' CONFIG_SC6600_CDROMBASE 0 - fi - - fi -fi diff --git a/drivers/sound/lowlevel/Makefile b/drivers/sound/lowlevel/Makefile index 0340b37b9..921f10362 100644 --- a/drivers/sound/lowlevel/Makefile +++ b/drivers/sound/lowlevel/Makefile @@ -1,67 +1,24 @@ -all: lowlevel.o - -ALLOBJS = init.o aci.o awe_wave.o aedsp16.o -OBJS = init.o - -ifeq ($(CONFIG_LOWLEVEL_SOUND),y) -ifeq ($(CONFIG_ACI_MIXER),y) - OBJS := $(OBJS) aci.o -endif -ifeq ($(CONFIG_AWE32_SYNTH),y) -OBJS := $(OBJS) awe_wave.o -else - ifeq ($(CONFIG_AWE32_SYNTH),m) - MX_OBJS := $(MX_OBJS) awe_wave.o - endif -endif -ifeq ($(CONFIG_AEDSP16),y) - OBJS := $(OBJS) aedsp16.o -else - ifeq ($(CONFIG_AEDSP16),m) - MX_OBJS := $(MX_OBJS) aedsp16.o - endif -endif -endif - -ifndef TOPDIR -TOPDIR=/usr/src/linux -endif - -lowlevel.o: $(OBJS) - $(LD) -r -o lowlevel.o $(OBJS) +# Makefile for the Linux low-level sound card drivers. +# +# 11 Feb 1998, Michael Elizabeth Chastain, +# Rewritten to use lists instead of if statements. -module: manual_config.h - rm -f lowlevel.o - make CFLAGS="$(CFLAGS) -DLOWLEVEL_MODULE" $(ALLOBJS) - $(LD) -r -o lowlevel.o $(ALLOBJS) - touch module +export-objs := soundlow.o -manual_config.h: - @echo You should create `pwd`/manual_config.h. - @echo See `pwd`/README for more info. - @exit 1 +list-y := +list-m := +list-n := +list- := -clean: - rm -f core x y z *~ *.o module .depend +obj-$(CONFIG_SOUND_OSS) += soundlow.o +obj-$(CONFIG_ACI_MIXER) += aci.o +obj-$(CONFIG_AEDSP16) += aedsp16.o +obj-$(CONFIG_AWE32_SYNTH) += awe_wave.o -dep: - $(CPP) -M $(CFLAGS) -I. *.c > .depend +O_TARGET := lowlevel.o +O_OBJS := $(sort $(filter-out $(export-objs), $(obj-y))) +OX_OBJS := $(sort $(filter $(export-objs), $(obj-y))) +M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m))) +MX_OBJS := $(sort $(filter $(export-objs), $(obj-m))) -ifndef HOSTCC -# -# Running outside the kernel build. -# -CC = gcc -HOSTCC = gcc -CFLAGS = -O2 -D__KERNEL__ -DMODULE -I/usr/src/linux/include -Wall -Wstrict-prototypes -fomit-frame-pointer -pipe -m486 -USE_DEPEND=y -else include $(TOPDIR)/Rules.make -endif - -ifdef USE_DEPEND -# include a dependency file if one exists -ifeq (.depend,$(wildcard .depend)) -include .depend -endif -endif diff --git a/drivers/sound/lowlevel/README.awe b/drivers/sound/lowlevel/README.awe index a0281710a..1765d4b15 100644 --- a/drivers/sound/lowlevel/README.awe +++ b/drivers/sound/lowlevel/README.awe @@ -1,12 +1,12 @@ ================================================================ - AWE32 Sound Driver for Linux / FreeBSD + AWE32 Sound Driver for Linux and FreeBSD version 0.4.2c; Oct. 7, 1997 ================================================================ * GENERAL NOTES -This is a sound driver extension for SoundBlaster AWE32 and other -compatible cards (AWE32-PnP, SB32, SB32-PnP, AWE64 & etc) to enable +This is a sound driver extension for the Sound Blaster AWE32 and other +compatible cards (AWE32-PnP, SB32, SB32-PnP, AWE64, etc.) to enable the wave synth operations. The driver is provided for both Linux 1.2.x and 2.[01].x kernels, and also FreeBSD on Intel x86 and DEC Alpha systems. See INSTALL.awe (or INSTALL.fbsd) document for @@ -120,8 +120,8 @@ Define them only when the driver couldn't detect the card properly. [Sample Table Size] From ver.0.4.0, sample tables are allocated dynamically (except Linux-1.2.x system), so you need NOT to touch these parameters. -Linux-1.2.x users may need to increase these values to apropriate size -if larger DRAM is equipped with the soundcard. +Linux-1.2.x users may need to increase these values for sound +cards equipped with more DRAM. - AWE_MAX_SF_LISTS, AWE_MAX_SAMPLES, AWE_MAX_INFOS @@ -135,7 +135,7 @@ if larger DRAM is equipped with the soundcard. passthrough channels. - AWE_DEBUG_ON (default: defined) - turns on debuggin messages if defined. + turns on debugging messages if defined. - AWE_HAS_GUS_COMPATIBILITY (default: defined) Enables GUS compatibility mode if defined, reading GUS patches and @@ -166,26 +166,26 @@ if larger DRAM is equipped with the soundcard. * ACKNOWLEDGMENTS -Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for many advices -to programming of AWE32. Many codes are brought from his AWE32-native +Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for much advice +on programming of AWE32. Much code is brought from his AWE32-native MOD player, ALMP. -The port of awedrv to FreeBSD is done by Randall Hopper +The port of awedrv to FreeBSD was done by Randall Hopper (rhh@ct.picker.com). I also thank linux-awe-ml members for their efforts -to reboot their system many times :-) +to reboot their systems many times. :-) * BUGS & TODO'S -- Can't detect DRAM size on some card -- More smart patch management -- More smart DRAM memory control -- etc, etc, etc. +- can't detect DRAM size on some cards +- smarter patch management +- smarter DRAM memory control +- etc., etc., etc. * COPYRIGHT -Copyright (C) 1996,1997 Takashi Iwai +Copyright (C) 1996, 1997 Takashi Iwai 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 diff --git a/drivers/sound/lowlevel/aci.c b/drivers/sound/lowlevel/aci.c index 84d5c73c2..d46088b8e 100644 --- a/drivers/sound/lowlevel/aci.c +++ b/drivers/sound/lowlevel/aci.c @@ -13,7 +13,7 @@ * software. * * This Voxware ACI driver currently only supports the ACI functions - * on the miroSOUND PCM12 card. Support for miro soundcards with + * on the miroSOUND PCM12 card. Support for miro sound cards with * additional ACI functions can easily be added later. * * Revision history: @@ -76,6 +76,7 @@ static int aci_present = 0; #ifdef MODULE /* Whether the aci mixer is to be reset. */ int aci_reset = 0; /* Default: don't reset if the driver is a */ +MODULE_PARM(aci_reset,"i"); #else /* module; use "insmod sound.o aci_reset=1" */ int aci_reset = 1; /* to override. */ #endif @@ -88,7 +89,7 @@ int aci_reset = 1; /* to override. */ /* * Wait until the ACI microcontroller has set the READYFLAG in the * Busy/IRQ Source Register to 0. This is required to avoid - * overrunning the soundcard microcontroller. We do a busy wait here, + * overrunning the sound card microcontroller. We do a busy wait here, * because the microcontroller is not supposed to signal a busy * condition for more than a few clock cycles. In case of a time-out, * this function returns -1. @@ -491,7 +492,7 @@ int attach_aci(void) } if (aci_idcode[0] == 0x6d) { - /* it looks like a miro soundcard */ + /* It looks like a miro sound card. */ switch (aci_idcode[1]) { case 0x41: boardname = "PCM1 pro / early PCM12"; diff --git a/drivers/sound/lowlevel/awe_wave.c b/drivers/sound/lowlevel/awe_wave.c index a9ac8850e..111b0c5be 100644 --- a/drivers/sound/lowlevel/awe_wave.c +++ b/drivers/sound/lowlevel/awe_wave.c @@ -48,7 +48,7 @@ #endif #ifdef AWE_HAS_GUS_COMPATIBILITY -/* include finetune table */ +/* include fine tuning table */ #ifdef AWE_OBSOLETE_VOXWARE # ifdef __FreeBSD__ # define SEQUENCER_C diff --git a/drivers/sound/lowlevel/init.c b/drivers/sound/lowlevel/init.c deleted file mode 100644 index d2e9242e4..000000000 --- a/drivers/sound/lowlevel/init.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * lowlevel/init.c - Calls initialization code for configured drivers. - */ - -#include "lowlevel.h" -#include -#include "../soundvers.h" - -#ifdef CONFIG_LOWLEVEL_SOUND - -#ifdef LOWLEVEL_MODULE -char *lowlevel_version = SOUND_VERSION_STRING; -#endif - -extern int attach_aci(void); -extern void unload_aci(void); -extern int attach_awe(void); -extern void unload_awe(void); -extern int init_aedsp16(void); -extern void uninit_aedsp16(void); - -/* - * There are two places where you can insert initialization calls of - * low level drivers. sound_init_lowlevel_drivers() is called after - * the sound driver has been initialized (the normal case) - * while sound_preinit_lowlevel_drivers() is called before that. - */ -void -sound_preinit_lowlevel_drivers(void) -{ -#if defined(CONFIG_AEDSP16) && !defined(MODULE) - init_aedsp16(); -#endif -} - -void -sound_init_lowlevel_drivers(void) -{ -#ifdef CONFIG_ACI_MIXER - attach_aci(); -#endif - -#ifdef CONFIG_AWE32_SYNTH - attach_awe(); -#endif -} - -void -sound_unload_lowlevel_drivers(void) -{ -#ifdef CONFIG_ACI_MIXER - unload_aci(); -#endif - -#ifdef CONFIG_AWE32_SYNTH - unload_awe(); -#endif - -#ifdef CONFIG_AEDSP16 - uninit_aedsp16(); -#endif - -} -#endif diff --git a/drivers/sound/lowlevel/soundlow.c b/drivers/sound/lowlevel/soundlow.c new file mode 100644 index 000000000..64ac00ccd --- /dev/null +++ b/drivers/sound/lowlevel/soundlow.c @@ -0,0 +1,66 @@ +/* + * lowlevel/init.c - Calls initialization code for configured drivers. + */ + +#include "lowlevel.h" +#include +#include +#include "../soundvers.h" + +#ifdef LOWLEVEL_MODULE +char *lowlevel_version = SOUND_VERSION_STRING; +#endif + +extern int attach_aci(void); +extern void unload_aci(void); +extern int attach_awe(void); +extern void unload_awe(void); +extern int init_aedsp16(void); +extern void uninit_aedsp16(void); + +/* + * There are two places where you can insert initialization calls of + * low level drivers. sound_init_lowlevel_drivers() is called after + * the sound driver has been initialized (the normal case) + * while sound_preinit_lowlevel_drivers() is called before that. + */ +void +sound_preinit_lowlevel_drivers(void) +{ +#if defined(CONFIG_AEDSP16) && !defined(MODULE) + init_aedsp16(); +#endif +} + +void +sound_init_lowlevel_drivers(void) +{ +#ifdef CONFIG_ACI_MIXER + attach_aci(); +#endif + +#ifdef CONFIG_AWE32_SYNTH + attach_awe(); +#endif +} + +void +sound_unload_lowlevel_drivers(void) +{ +#ifdef CONFIG_ACI_MIXER + unload_aci(); +#endif + +#ifdef CONFIG_AWE32_SYNTH + unload_awe(); +#endif + +#ifdef CONFIG_AEDSP16 + uninit_aedsp16(); +#endif + +} + +EXPORT_SYMBOL(sound_init_lowlevel_drivers); +EXPORT_SYMBOL(sound_unload_lowlevel_drivers); +EXPORT_SYMBOL(sound_preinit_lowlevel_drivers); -- cgit v1.2.3