diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1995-11-14 08:00:00 +0000 |
---|---|---|
committer | <ralf@linux-mips.org> | 1995-11-14 08:00:00 +0000 |
commit | e7c2a72e2680827d6a733931273a93461c0d8d1b (patch) | |
tree | c9abeda78ef7504062bb2e816bcf3e3c9d680112 /drivers/sound | |
parent | ec6044459060a8c9ce7f64405c465d141898548c (diff) |
Import of Linux/MIPS 1.3.0
Diffstat (limited to 'drivers/sound')
-rw-r--r-- | drivers/sound/.blurb | 27 | ||||
-rw-r--r-- | drivers/sound/.blurb.orig | 27 | ||||
-rw-r--r-- | drivers/sound/CHANGELOG | 2 | ||||
-rw-r--r-- | drivers/sound/Makefile | 2 | ||||
-rw-r--r-- | drivers/sound/Readme | 12 | ||||
-rw-r--r-- | drivers/sound/Readme.v30 | 2 | ||||
-rw-r--r-- | drivers/sound/ad1848.c | 5 | ||||
-rw-r--r-- | drivers/sound/configure.c | 2 | ||||
-rw-r--r-- | drivers/sound/dma.h | 266 | ||||
-rw-r--r-- | drivers/sound/dmabuf.c | 4 | ||||
-rw-r--r-- | drivers/sound/experimental.txt | 2 | ||||
-rw-r--r-- | drivers/sound/gus_card.c | 6 | ||||
-rw-r--r-- | drivers/sound/gus_wave.c | 5 | ||||
-rw-r--r-- | drivers/sound/mpu401.c | 4 | ||||
-rw-r--r-- | drivers/sound/pas2_card.c | 2 | ||||
-rw-r--r-- | drivers/sound/pss.c | 2 | ||||
-rw-r--r-- | drivers/sound/sb_dsp.c | 4 | ||||
-rw-r--r-- | drivers/sound/sound_calls.h | 6 | ||||
-rw-r--r-- | drivers/sound/soundcard.c | 3 | ||||
-rw-r--r-- | drivers/sound/uart6850.c | 2 |
20 files changed, 36 insertions, 349 deletions
diff --git a/drivers/sound/.blurb b/drivers/sound/.blurb index aac91a8d5..acc3c1de2 100644 --- a/drivers/sound/.blurb +++ b/drivers/sound/.blurb @@ -1,28 +1,3 @@ -NOTE! - - This is an ALPHA TEST VERSION (pre 3.0). The latest - released version of this driver is now part of - Linux kernel distribution. For other operating systems - use the snd-driv-2.5.tar.gz package. - - This particular version contains lots of new features - BUT THERE ARE NO APPLICATIONS WHICH USE THEM. So there - is no need to install this version as long as you are - not developing the driver or applications which use it. - All new features are in the /dev/sequencer and /dev/midi - parts of the driver. - - - This version is little bit incomplete. Some features have - not been implemented for each soundcards yet. All features - of v2.4 should work OK. - -CAUTION! - This version of driver works with applications written and - compiled for v2.*. The problem is that APPLICATIONS COMPILED - WITH soundcard.h OF THIS VERSION WILL NOT WORK WITH OLDER DRIVER. - Be careful when distributing applications compiled with this - version (just the apps using /dev/sequencer are incompatible). ********************************************************* * IF YOU HAVE ANY PROBLEMS WITH THE SOUND DRIVER, * @@ -30,5 +5,3 @@ CAUTION! * NEAREST LINUX FTP SITE AND CONTAINS ANSWER TO YOUR * * PROBLEM. * ********************************************************* - -Hannu diff --git a/drivers/sound/.blurb.orig b/drivers/sound/.blurb.orig deleted file mode 100644 index 165e01ac8..000000000 --- a/drivers/sound/.blurb.orig +++ /dev/null @@ -1,27 +0,0 @@ -NOTE! - - This is an ALPHA TEST VERSION (pre 3.0). The latest - released version of this driver is now part of - Linux kernel distribution. For other operating systems - use the snd-driv-2.5.tar.gz package. - - This particular version contains lots of new features - BUT THERE ARE NO APPLICATIONS WHICH USE THEM. So there - is no need to install this version as long as you are - not developing the driver or applications which use it. - All new features are in the /dev/sequencer and /dev/midi - parts of the driver. - - - This version is little bit incomplete. Some features have - not been implemented for each soundcards yet. All features - of v2.4 should work OK. - -CAUTION! - This version of driver works with applications written and - compiled for v2.*. The problem is that APPLICATIONS COMPILED - WITH soundcard.h OF THIS VERSION WILL NOT WORK WITH OLDER DRIVER. - Be carefull when distributing applications compiled with this - version (just the apps using /dev/sequencer are incompatible). - -Hannu diff --git a/drivers/sound/CHANGELOG b/drivers/sound/CHANGELOG index b04d7a8d6..8cacac458 100644 --- a/drivers/sound/CHANGELOG +++ b/drivers/sound/CHANGELOG @@ -91,7 +91,7 @@ Since 2.2 Since 2.1 - Preliminary support for SB16. - - The SB16 mixer is supported in it's native mode. + - The SB16 mixer is supported in its native mode. - Digitized voice capability up to 44.1 kHz/8 bit/mono (16 bit and stereo support coming in the next release). - Fixed some bugs in the digitized voice driver for PAS16. diff --git a/drivers/sound/Makefile b/drivers/sound/Makefile index 128075ffe..2575118c1 100644 --- a/drivers/sound/Makefile +++ b/drivers/sound/Makefile @@ -71,6 +71,8 @@ dep: $(MAKE) /usr/include/sys/soundcard.h $(CPP) -M *.c > .depend +modules: + # # include a dependency file if one exists # diff --git a/drivers/sound/Readme b/drivers/sound/Readme index 60d18cbe8..1c31ac66c 100644 --- a/drivers/sound/Readme +++ b/drivers/sound/Readme @@ -74,7 +74,13 @@ Hannu Savolainen hannu@voxware.pp.fi Snail mail: Hannu Savolainen - Pallaksentie 4 A 2 - 00970 Helsinki + Hiekkalaiturintie 3 A 8 + 00980 Helsinki Finland -FAX: +358 0 395 1968 (usually not connected) +FAX: +358 0 341 6272 (answers if I have my machine (mgetty) on). + +NOTE! I probably don't answer to Snail mail or FAX messages. Sending answer + to each of them is simply too expensive and time consuming. However I + try to reply every email message I get (within a week). If you don't + get response, please check how your address is written in the message + header. I can't answer if I don't have a valid reply address. diff --git a/drivers/sound/Readme.v30 b/drivers/sound/Readme.v30 index cade461d2..da09c7fbc 100644 --- a/drivers/sound/Readme.v30 +++ b/drivers/sound/Readme.v30 @@ -138,7 +138,7 @@ distribute binaries compiled with soundcard.h of v3.X. - The basic API usage is similar to the current one. There are some new macros but the older ones should work as earlier. The most important incompatibility is that the /dev/sequencer2 driver allocates voices itself. -The other one is that the application must send SEQ_START_TIMER() as it's +The other one is that the application must send SEQ_START_TIMER() as its first event. Otherwise the timer is not started and the application waits infinitely. diff --git a/drivers/sound/ad1848.c b/drivers/sound/ad1848.c index f5603357d..57117f680 100644 --- a/drivers/sound/ad1848.c +++ b/drivers/sound/ad1848.c @@ -93,7 +93,6 @@ static void ad1848_start_input (int dev, unsigned long buf, int count, int i static int ad1848_prepare_for_IO (int dev, int bsize, int bcount); static void ad1848_reset (int dev); static void ad1848_halt (int dev); -void ad1848_interrupt (int dev); static int ad_read (ad1848_info * devc, int reg) @@ -684,7 +683,7 @@ ad1848_detect (int io_base) * Check that the I/O address is in use. * * The bit 0x80 of the base I/O port is known to be 0 after the - * chip has performed it's power on initialization. Just assume + * chip has performed its power on initialization. Just assume * this has happened before the OS is starting. * * If the I/O address is unused, it typically returns 0xff. @@ -866,7 +865,7 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture } void -ad1848_interrupt (int irq) +ad1848_interrupt (int irq, struct pt_regs * regs) { unsigned char status; ad1848_info *devc; diff --git a/drivers/sound/configure.c b/drivers/sound/configure.c index a2e8c4b26..b1defaeb9 100644 --- a/drivers/sound/configure.c +++ b/drivers/sound/configure.c @@ -135,7 +135,7 @@ char *questions[] = "SoundBlaster Pro support", "SoundBlaster 16 support", - "digitized voice support", + "/dev/dsp and /dev/audio support (_recommended_)", "This should not be asked", "MIDI interface support", "This should not be asked", diff --git a/drivers/sound/dma.h b/drivers/sound/dma.h deleted file mode 100644 index 1196fdff1..000000000 --- a/drivers/sound/dma.h +++ /dev/null @@ -1,266 +0,0 @@ -/* $Id: dma.h,v 1.7 1992/12/14 00:29:34 root Exp root $ - * linux/include/asm/dma.h: Defines for using and allocating dma channels. - * Written by Hennus Bergman, 1992. - * High DMA channel support & info by Hannu Savolainen - * and John Boyd, Nov. 1992. - */ - -#ifndef _ASM_DMA_H -#define _ASM_DMA_H - -#include <asm/io.h> /* need byte IO */ - -#define deb_outb(x,y) {printk("out %02x, %02x\n", x, y);outb(x,y);} - - -#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER -#define outb outb_p -#endif - -/* - * NOTES about DMA transfers: - * - * controller 1: channels 0-3, byte operations, ports 00-1F - * controller 2: channels 4-7, word operations, ports C0-DF - * - * - ALL registers are 8 bits only, regardless of transfer size - * - channel 4 is not used - cascades 1 into 2. - * - channels 0-3 are byte - addresses/counts are for physical bytes - * - channels 5-7 are word - addresses/counts are for physical words - * - transfers must not cross physical 64K (0-3) or 128K (5-7) boundaries - * - transfer count loaded to registers is 1 less than actual count - * - controller 2 offsets are all even (2x offsets for controller 1) - * - page registers for 5-7 don't use data bit 0, represent 128K pages - * - page registers for 0-3 use bit 0, represent 64K pages - * - * DMA transfers are limited to the lower 16MB of _physical_ memory. - * Note that addresses loaded into registers must be _physical_ addresses, - * not logical addresses (which may differ if paging is active). - * - * Address mapping for channels 0-3: - * - * A23 ... A16 A15 ... A8 A7 ... A0 (Physical addresses) - * | ... | | ... | | ... | - * | ... | | ... | | ... | - * | ... | | ... | | ... | - * P7 ... P0 A7 ... A0 A7 ... A0 - * | Page | Addr MSB | Addr LSB | (DMA registers) - * - * Address mapping for channels 5-7: - * - * A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0 (Physical addresses) - * | ... | \ \ ... \ \ \ ... \ \ - * | ... | \ \ ... \ \ \ ... \ (not used) - * | ... | \ \ ... \ \ \ ... \ - * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0 - * | Page | Addr MSB | Addr LSB | (DMA registers) - * - * Again, channels 5-7 transfer _physical_ words (16 bits), so addresses - * and counts _must_ be word-aligned (the lowest address bit is _ignored_ at - * the hardware level, so odd-byte transfers aren't possible). - * - * Transfer count (_not # bytes_) is limited to 64K, represented as actual - * count - 1 : 64K => 0xFFFF, 1 => 0x0000. Thus, count is always 1 or more, - * and up to 128K bytes may be transferred on channels 5-7 in one operation. - * - */ - -#define MAX_DMA_CHANNELS 8 - -/* 8237 DMA controllers */ -#define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */ -#define IO_DMA2_BASE 0xC0 /* 16 bit master DMA, ch 4(=slave input)..7 */ - -/* DMA controller registers */ -#define DMA1_CMD_REG 0x08 /* command register (w) */ -#define DMA1_STAT_REG 0x08 /* status register (r) */ -#define DMA1_REQ_REG 0x09 /* request register (w) */ -#define DMA1_MASK_REG 0x0A /* single-channel mask (w) */ -#define DMA1_MODE_REG 0x0B /* mode register (w) */ -#define DMA1_CLEAR_FF_REG 0x0C /* clear pointer flip-flop (w) */ -#define DMA1_TEMP_REG 0x0D /* Temporary Register (r) */ -#define DMA1_RESET_REG 0x0D /* Master Clear (w) */ -#define DMA1_CLR_MASK_REG 0x0E /* Clear Mask */ -#define DMA1_MASK_ALL_REG 0x0F /* all-channels mask (w) */ - -#define DMA2_CMD_REG 0xD0 /* command register (w) */ -#define DMA2_STAT_REG 0xD0 /* status register (r) */ -#define DMA2_REQ_REG 0xD2 /* request register (w) */ -#define DMA2_MASK_REG 0xD4 /* single-channel mask (w) */ -#define DMA2_MODE_REG 0xD6 /* mode register (w) */ -#define DMA2_CLEAR_FF_REG 0xD8 /* clear pointer flip-flop (w) */ -#define DMA2_TEMP_REG 0xDA /* Temporary Register (r) */ -#define DMA2_RESET_REG 0xDA /* Master Clear (w) */ -#define DMA2_CLR_MASK_REG 0xDC /* Clear Mask */ -#define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ - -#define DMA_ADDR_0 0x00 /* DMA address registers */ -#define DMA_ADDR_1 0x02 -#define DMA_ADDR_2 0x04 -#define DMA_ADDR_3 0x06 -#define DMA_ADDR_4 0xC0 -#define DMA_ADDR_5 0xC4 -#define DMA_ADDR_6 0xC8 -#define DMA_ADDR_7 0xCC - -#define DMA_CNT_0 0x01 /* DMA count registers */ -#define DMA_CNT_1 0x03 -#define DMA_CNT_2 0x05 -#define DMA_CNT_3 0x07 -#define DMA_CNT_4 0xC2 -#define DMA_CNT_5 0xC6 -#define DMA_CNT_6 0xCA -#define DMA_CNT_7 0xCE - -#define DMA_PAGE_0 0x87 /* DMA page registers */ -#define DMA_PAGE_1 0x83 -#define DMA_PAGE_2 0x81 -#define DMA_PAGE_3 0x82 -#define DMA_PAGE_5 0x8B -#define DMA_PAGE_6 0x89 -#define DMA_PAGE_7 0x8A - -#define DMA_MODE_READ 0x44 /* I/O to memory, no autoinit, increment, single mode */ -#define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */ -#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */ - -/* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) -{ - if (dmanr<=3) - deb_outb(dmanr, DMA1_MASK_REG) - else - deb_outb(dmanr & 3, DMA2_MASK_REG); -} - -static __inline__ void disable_dma(unsigned int dmanr) -{ - if (dmanr<=3) - deb_outb(dmanr | 4, DMA1_MASK_REG) - else - deb_outb((dmanr & 3) | 4, DMA2_MASK_REG); -} - -/* Clear the 'DMA Pointer Flip Flop'. - * Write 0 for LSB/MSB, 1 for MSB/LSB access. - * Use this once to initialize the FF to a known state. - * After that, keep track of it. :-) - * --- In order to do that, the DMA routines below should --- - * --- only be used while interrupts are disabled! --- - */ -static __inline__ void clear_dma_ff(unsigned int dmanr) -{ - if (dmanr<=3) - deb_outb(0, DMA1_CLEAR_FF_REG) - else - deb_outb(0, DMA2_CLEAR_FF_REG); -} - -/* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) -{ - if (dmanr<=3) - deb_outb(mode | dmanr, DMA1_MODE_REG) - else - deb_outb(mode | (dmanr&3), DMA2_MODE_REG); -} - -/* Set only the page register bits of the transfer address. - * This is used for successive transfers when we know the contents of - * the lower 16 bits of the DMA current address register, but a 64k boundary - * may have been crossed. - */ -static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) -{ - switch(dmanr) { - case 0: - deb_outb(pagenr, DMA_PAGE_0); - break; - case 1: - deb_outb(pagenr, DMA_PAGE_1); - break; - case 2: - deb_outb(pagenr, DMA_PAGE_2); - break; - case 3: - deb_outb(pagenr, DMA_PAGE_3); - break; - case 5: - deb_outb(pagenr & 0xfe, DMA_PAGE_5); - break; - case 6: - deb_outb(pagenr & 0xfe, DMA_PAGE_6); - break; - case 7: - deb_outb(pagenr & 0xfe, DMA_PAGE_7); - break; - } -} - - -/* Set transfer address & page bits for specific DMA channel. - * Assumes dma flipflop is clear. - */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) -{ - set_dma_page(dmanr, a>>16); - if (dmanr <= 3) { - deb_outb( a & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); - deb_outb( (a>>8) & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ) - } else { - deb_outb( (a>>1) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); - deb_outb( (a>>9) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); - } -} - - -/* Set transfer size (max 64k for DMA1..3, 128k for DMA5..7) for - * a specific DMA channel. - * You must ensure the parameters are valid. - * NOTE: from a manual: "the number of transfers is one more - * than the initial word count"! This is taken into account. - * Assumes dma flip-flop is clear. - * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7. - */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) -{ - count--; - if (dmanr <= 3) { - deb_outb( count & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); - deb_outb( (count>>8) & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); - } else { - deb_outb( (count>>1) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); - deb_outb( (count>>9) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); - } -} - - -/* Get DMA residue count. After a DMA transfer, this - * should return zero. Reading this while a DMA transfer is - * still in progress will return unpredictable results. - * If called before the channel has been used, it may return 1. - * Otherwise, it returns the number of _bytes_ left to transfer. - * - * Assumes DMA flip-flop is clear. - */ -static __inline__ int get_dma_residue(unsigned int dmanr) -{ - unsigned int io_port = (dmanr<=3)? ((dmanr&3)<<1) + 1 + IO_DMA1_BASE - : ((dmanr&3)<<2) + 2 + IO_DMA2_BASE; - - /* using short to get 16-bit wrap around */ - unsigned short count; - - count = 1 + inb(io_port); - count += inb(io_port) << 8; - - return (dmanr<=3)? count : (count<<1); -} - - -/* These are in kernel/dma.c: */ -extern int request_dma(unsigned int dmanr,char * deviceID); /* reserve a DMA channel */ -extern void free_dma(unsigned int dmanr); /* release it again */ - - -#endif /* _ASM_DMA_H */ diff --git a/drivers/sound/dmabuf.c b/drivers/sound/dmabuf.c index 6f0794824..a7c396f2f 100644 --- a/drivers/sound/dmabuf.c +++ b/drivers/sound/dmabuf.c @@ -38,7 +38,7 @@ DEFINE_WAIT_QUEUES (dev_sleeper[MAX_AUDIO_DEV], dev_sleep_flag[MAX_AUDIO_DEV]); static struct dma_buffparms dmaps[MAX_AUDIO_DEV] = -{0}; /* +{{0}}; /* * Primitive way to allocate * such a large array. * Needs dynamic run-time allocation. @@ -740,7 +740,7 @@ DMAbuf_outputintr (int dev, int event_type) * buffer. * 1 = DMA transfer done. Device doesn't have local buffer or it's * empty now. - * 2 = No DMA transfer but the device has now more space in it's local + * 2 = No DMA transfer but the device has now more space in its local * buffer. */ diff --git a/drivers/sound/experimental.txt b/drivers/sound/experimental.txt index 180c86836..8323daf7b 100644 --- a/drivers/sound/experimental.txt +++ b/drivers/sound/experimental.txt @@ -127,7 +127,7 @@ less, depending on how much it needs time to do other things. The maximum delay between writing a byte and the time when it finally plays is at most 3 times the 'fragment_time'. -The delay depends on how much time the program needs to do it's +The delay depends on how much time the program needs to do its computations for the next sample (updating screen etc). If it's about 80% of the 'fragment_time' the game will run almost without delays. If it uses more time, there is a risk that the audio buffer gets empty. diff --git a/drivers/sound/gus_card.c b/drivers/sound/gus_card.c index 614532c7d..9560babb7 100644 --- a/drivers/sound/gus_card.c +++ b/drivers/sound/gus_card.c @@ -33,7 +33,7 @@ #include "gus_hw.h" -void gusintr (int); +void gusintr (int, struct pt_regs * regs); int gus_base, gus_irq, gus_dma; extern int gus_wave_volume; @@ -118,7 +118,7 @@ probe_gus (struct address_info *hw_config) } void -gusintr (int irq) +gusintr (int irq, struct pt_regs * regs) { unsigned char src; @@ -128,7 +128,7 @@ gusintr (int irq) #ifndef EXCLUDE_GUSMAX if (have_gus_max) - ad1848_interrupt (irq); + ad1848_interrupt (irq, regs); #endif while (1) diff --git a/drivers/sound/gus_wave.c b/drivers/sound/gus_wave.c index 1b95c0593..3182bb608 100644 --- a/drivers/sound/gus_wave.c +++ b/drivers/sound/gus_wave.c @@ -781,7 +781,7 @@ gus_initialize (void) gus_select_voice (0); /* This disables writes to IRQ/DMA reg */ - gusintr (0); /* Serve pending interrupts */ + gusintr (0,NULL); /* Serve pending interrupts */ RESTORE_INTR (flags); } @@ -3052,7 +3052,6 @@ do_loop_irq (int voice) pcm_active = 0; /* Signal to the play_next_pcm_block routine */ case LMODE_PCM: { - int orig_qlen = pcm_qlen; int flag; /* 0 or 2 */ pcm_qlen--; @@ -3068,7 +3067,7 @@ do_loop_irq (int voice) pcm_active = 0; } - /* +/* * If the queue was full before this interrupt, the DMA transfer was * suspended. Let it continue now. */ diff --git a/drivers/sound/mpu401.c b/drivers/sound/mpu401.c index 40be06638..9a9fc3daa 100644 --- a/drivers/sound/mpu401.c +++ b/drivers/sound/mpu401.c @@ -479,7 +479,7 @@ mpu401_input_loop (struct mpu_config *devc) } void -mpuintr (int irq) +mpuintr (int irq, struct pt_regs * regs) { struct mpu_config *devc; int dev; @@ -1209,7 +1209,7 @@ clocks2ticks (unsigned long clocks) /* * The MPU-401 supports just a limited set of possible timebase values. * Since the applications require more choices, the driver has to - * program the HW to do it's best and to convert between the HW and + * program the HW to do its best and to convert between the HW and * actual timebases. */ diff --git a/drivers/sound/pas2_card.c b/drivers/sound/pas2_card.c index 1bfd73fcc..524cc38b2 100644 --- a/drivers/sound/pas2_card.c +++ b/drivers/sound/pas2_card.c @@ -79,7 +79,7 @@ pas2_msg (char *foo) /******************* Begin of the Interrupt Handler ********************/ void -pasintr (int unused) +pasintr (int unused, struct pt_regs * regs) { int status; diff --git a/drivers/sound/pss.c b/drivers/sound/pss.c index 6e35d1b7f..978231e88 100644 --- a/drivers/sound/pss.c +++ b/drivers/sound/pss.c @@ -159,7 +159,7 @@ pss_setaddr (int addr, int configAddr) /*_____ pss_checkint This function tests an interrupt number to see if it is available. It takes the interrupt button - as it's argument and returns TRUE if the interrupt + as its argument and returns TRUE if the interrupt is ok. */ static int diff --git a/drivers/sound/sb_dsp.c b/drivers/sound/sb_dsp.c index cb491b5cc..02a679335 100644 --- a/drivers/sound/sb_dsp.c +++ b/drivers/sound/sb_dsp.c @@ -131,7 +131,7 @@ sb_dsp_command (unsigned char val) } void -sbintr (int unit) +sbintr (int unit, struct pt_regs *regs) { int status; @@ -803,7 +803,7 @@ sb_dsp_init (long mem_start, struct address_info *hw_config) if (sbc_major >= 3) { -#ifndef SCO +#if !defined(SCO) && !defined(EXCLUDE_AUDIO) # ifdef __SGNXPRO__ if (mixer_type == 2) { diff --git a/drivers/sound/sound_calls.h b/drivers/sound/sound_calls.h index eccd9b673..4d8fdf76f 100644 --- a/drivers/sound/sound_calls.h +++ b/drivers/sound/sound_calls.h @@ -100,7 +100,7 @@ void tenmicrosec(void); void request_sound_timer (int count); void sound_stop_timer(void); int snd_ioctl_return(int *addr, int value); -int snd_set_irq_handler (int interrupt_level, void(*hndlr)(int)); +int snd_set_irq_handler (int interrupt_level, void(*hndlr)(int, struct pt_regs *)); void snd_release_irq(int vect); void sound_dma_malloc(int dev); void sound_dma_free(int dev); @@ -177,7 +177,7 @@ void pas_midi_interrupt(void); long attach_gus_card(long mem_start, struct address_info * hw_config); int probe_gus(struct address_info *hw_config); int gus_set_midi_irq(int num); -void gusintr(int); +void gusintr(int, struct pt_regs * regs); long attach_gus_db16(long mem_start, struct address_info * hw_config); int probe_gus_db16(struct address_info *hw_config); @@ -225,7 +225,7 @@ void sound_timer_interrupt(void); /* From ad1848.c */ void ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture); int ad1848_detect (int io_base); -void ad1848_interrupt (int dev); +void ad1848_interrupt (int dev, struct pt_regs *regs); long attach_ms_sound(long mem_start, struct address_info * hw_config); int probe_ms_sound(struct address_info *hw_config); diff --git a/drivers/sound/soundcard.c b/drivers/sound/soundcard.c index 425378ca2..ab90bf5da 100644 --- a/drivers/sound/soundcard.c +++ b/drivers/sound/soundcard.c @@ -32,6 +32,7 @@ #ifdef CONFIGURE_SOUNDCARD #include <linux/major.h> +#include <linux/mm.h> static int soundcards_installed = 0; /* Number of installed @@ -221,7 +222,7 @@ tenmicrosec (void) } int -snd_set_irq_handler (int interrupt_level, void (*hndlr) (int)) +snd_set_irq_handler (int interrupt_level, void (*hndlr) (int, struct pt_regs *)) { int retcode; diff --git a/drivers/sound/uart6850.c b/drivers/sound/uart6850.c index ca6313521..338f6507f 100644 --- a/drivers/sound/uart6850.c +++ b/drivers/sound/uart6850.c @@ -93,7 +93,7 @@ uart6850_input_loop (void) } void -m6850intr (int unit) +m6850intr (int unit, struct pt_regs * regs) { printk ("M"); if (input_avail ()) |