Commit 5b4e9400 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.0.3

parent b6a823e7
...@@ -1182,6 +1182,16 @@ S: 14355 SW Allen Blvd., Suite #140 ...@@ -1182,6 +1182,16 @@ S: 14355 SW Allen Blvd., Suite #140
S: Beaverton, OR 97008 S: Beaverton, OR 97008
S: USA S: USA
N: Mike Shaver
E: shaver@ingenia.com
W: http://neon.ingenia.com/~shaver/
D: Network hacking, /proc/sys/net
S: c/o Ingenia Communications Corporation
S: Suite 4200, CTTC Building
S: 1125 Colonel By Drive
S: Ottawa, Ontario, Canada
S: K1S 5R1
N: John Shifflett N: John Shifflett
E: john@geolog.com E: john@geolog.com
E: jshiffle@netcom.com E: jshiffle@netcom.com
......
This diff is collapsed.
...@@ -1433,6 +1433,81 @@ CONFIG_SCSI_NCR53C7xx_DISCONNECT ...@@ -1433,6 +1433,81 @@ CONFIG_SCSI_NCR53C7xx_DISCONNECT
will cause your SCSI system to hang, which might cause a system crash. will cause your SCSI system to hang, which might cause a system crash.
The safe answer therefore is to say N. The safe answer therefore is to say N.
NCR53C8XX SCSI support
CONFIG_SCSI_NCR53C8XX
This is the BSD ncr driver adapted to linux for NCR53C8XX family of PCI-SCSI
controllers. This driver supports parity checking, tagged command queueing,
fast scsi II transfer up to 10 MB/s with narrow scsi devices and 20 MB/s
with wide scsi devices.
This driver has been tested ok with linux/i386 and is currently untested
under linux/Alpha. If you intend to use this driver under linux/Alpha, just
try it first with read-only or mounted read-only devices.
force normal IO
CONFIG_SCSI_NCR53C8XX_IOMAPPED
This option allow to force the driver to use normal IO.
Memory mapped IO have less latency than normal IO.
During initialisation phase, the driver first tries to use memory mapped io.
If nothing seems wrong, it will use memory mapped io.
If a flaw is detected, it will use normal io.
However, it's possible that memory mapped does not work properly for you and
the driver has not detected the problem.
The normal answer therefore is N.
not allow targets to disconnect
CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
This option is only provided for safe if you suspect some scsi device
of yours to not support properly this feature.
To not allow targets to disconnect is not reasonnable if there is more
than 1 device on a scsi bus.
The normal answer therefore is N.
enable tagged command queueing
CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
This option allow to enable tagged command queuing support at linux start-up.
Some scsi devices do not support properly this feature.
The suggested method may be to not validate this option in the configuration
but to use the "settags" control command after boot-up to enable this feature.
echo "settags 2 4" >/proc/scsi/ncr53c8xx/0
Ask the driver to use up to 4 concurrent tagged commands for target 2 of
controller 0.
See the README.ncr53c8xx file for more information.
WARNING! tagged queue support requires to allow targets to disconnect.
The safe answer therefore is N.
The normal answer therefore is Y.
force asynchronous transfer mode
CONFIG_SCSI_NCR53C8XX_FORCE_ASYNCHRONOUS
This option allow to force asynchronous transfer mode for all devices at
linux startup. You can enable synchronous negotiation with the "setsync"
control command after boot-up, for example:
echo "setsync 2 25" >/proc/scsi/ncr53c8xx/0
Ask the driver to set the period to 25 ns (10MB/sec) for target 2 of
controller 0.
The safe answer therefore is Y.
The normal answer therefore is N.
force synchronous negotiation
CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
Some scsi-2 devices support synchronous negotiations but do not report
this feature in byte 7 of inquiry data.
Answer Y only if you suspect some device to be so humble.
The normal answer therefore is N.
disable master parity checking
CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
Some hardware may have problems with parity during master cycles on PCI bus.
Only seen once. Answer Y if you suspect such problem.
The normal answer therefore is N.
disable scsi parity checking
CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
Parity on scsi bus is a system option. If one device checks parity, then
all devices on the scsi bus must generate parity.
However, the parity can be ignored by the scsi devices.
Answer Y only if you know what you are doing.
The normal answer therefore is N.
Always IN2000 SCSI support Always IN2000 SCSI support
CONFIG_SCSI_IN2000 CONFIG_SCSI_IN2000
This is support for an ISA bus SCSI host adaptor. You'll find This is support for an ISA bus SCSI host adaptor. You'll find
......
VERSION = 2 VERSION = 2
PATCHLEVEL = 0 PATCHLEVEL = 0
SUBLEVEL = 2 SUBLEVEL = 3
ARCH = i386 ARCH = i386
......
...@@ -461,8 +461,8 @@ static void mark_timeout_data(u_long); ...@@ -461,8 +461,8 @@ static void mark_timeout_data(u_long);
#if 0 #if 0
static void mark_timeout_audio(u_long); static void mark_timeout_audio(u_long);
#endif #endif
static void sbp_read_cmd(void); static void sbp_read_cmd(struct request *req);
static int sbp_data(void); static int sbp_data(struct request *req);
static int cmd_out(void); static int cmd_out(void);
static int DiskInfo(void); static int DiskInfo(void);
static int sbpcd_chk_disk_change(kdev_t); static int sbpcd_chk_disk_change(kdev_t);
...@@ -4428,22 +4428,54 @@ static int sbpcd_ioctl(struct inode *inode, struct file *file, u_int cmd, ...@@ -4428,22 +4428,54 @@ static int sbpcd_ioctl(struct inode *inode, struct file *file, u_int cmd,
/* /*
* Take care of the different block sizes between cdrom and Linux. * Take care of the different block sizes between cdrom and Linux.
*/ */
static void sbp_transfer(void) static void sbp_transfer(struct request *req)
{ {
long offs; long offs;
while ( (CURRENT->nr_sectors > 0) && while ( (req->nr_sectors > 0) &&
(CURRENT->sector/4 >= D_S[d].sbp_first_frame) && (req->sector/4 >= D_S[d].sbp_first_frame) &&
(CURRENT->sector/4 <= D_S[d].sbp_last_frame) ) (req->sector/4 <= D_S[d].sbp_last_frame) )
{ {
offs = (CURRENT->sector - D_S[d].sbp_first_frame * 4) * 512; offs = (req->sector - D_S[d].sbp_first_frame * 4) * 512;
memcpy(CURRENT->buffer, D_S[d].sbp_buf + offs, 512); memcpy(req->buffer, D_S[d].sbp_buf + offs, 512);
CURRENT->nr_sectors--; req->nr_sectors--;
CURRENT->sector++; req->sector++;
CURRENT->buffer += 512; req->buffer += 512;
} }
} }
/*==========================================================================*/ /*==========================================================================*/
/*
* special end_request for sbpcd to solve CURRENT==NULL bug. (GTL)
*
* This is a kluge so we don't need to modify end_request
* We put the req we take out after INIT_REQUEST in the requests list,
* so that end_request will discard it.
*
* The bug could be present in other block devices, perhaps we
* should modify INIT_REQUEST and end_request instead, and
* change every block device..
*
* Could be a race here?? Could e.g. a timer interrupt schedule() us?
* If so, we should copy end_request here, and do it right.. (or
* modify end_request and the block devices.
*
* In any case, the race here would be much small than it was, and
* I couldn't reproduce..
*
* The race could be: suppose CURRENT==NULL. We put our req in the list,
* and we are scheduled. Other process takes over, and gets into
* do_sbpcd_request. It sees CURRENT!=NULL (it is == to our req), so
* proceds. It ends, so CURRENT is now NULL.. Now we awake somewhere in
* end_request, but now CURRENT==NULL... oops!
*
*/
#undef DEBUG_GTL
static inline void sbpcd_end_request(struct request *req, int uptodate) {
req->next=CURRENT;
CURRENT=req;
end_request(uptodate);
}
/*==========================================================================*/
/* /*
* I/O request routine, called from Linux kernel. * I/O request routine, called from Linux kernel.
*/ */
...@@ -4452,27 +4484,48 @@ static void DO_SBPCD_REQUEST(void) ...@@ -4452,27 +4484,48 @@ static void DO_SBPCD_REQUEST(void)
u_int block; u_int block;
u_int nsect; u_int nsect;
int i, status_tries, data_tries; int i, status_tries, data_tries;
struct request *req;
#ifdef DEBUG_GTL
static int xx_nr=0;
int xnr;
#endif
request_loop: request_loop:
INIT_REQUEST; #ifdef DEBUG_GTL
sti(); xnr=++xx_nr;
if ((CURRENT == NULL) || CURRENT->rq_status == RQ_INACTIVE) { if(!CURRENT)
{
printk( "do_sbpcd_request[%di](NULL), Pid:%d, Time:%li\n",
xnr, current->pid, jiffies);
printk( "do_sbpcd_request[%do](NULL) end 0 (null), Time:%li\n",
xnr, jiffies);
CLEAR_INTR; CLEAR_INTR;
return; return;
} }
if (CURRENT -> sector == -1)
printk(" do_sbpcd_request[%di](%p:%ld+%ld), Pid:%d, Time:%li\n",
xnr, CURRENT, CURRENT->sector, CURRENT->nr_sectors, current->pid, jiffies);
#endif
INIT_REQUEST;
req=CURRENT; /* take out our request so no other */
CURRENT=req->next; /* task can fuck it up GTL */
sti();
if (req->rq_status == RQ_INACTIVE)
goto err_done;
if (req -> sector == -1)
goto err_done; goto err_done;
if (CURRENT->cmd != READ) if (req->cmd != READ)
{ {
msg(DBG_INF, "bad cmd %d\n", CURRENT->cmd); msg(DBG_INF, "bad cmd %d\n", req->cmd);
goto err_done; goto err_done;
} }
i = MINOR(CURRENT->rq_dev); i = MINOR(req->rq_dev);
if ( (i<0) || (i>=NR_SBPCD) || (D_S[i].drv_id==-1)) if ( (i<0) || (i>=NR_SBPCD) || (D_S[i].drv_id==-1))
{ {
msg(DBG_INF, "do_request: bad device: %s\n", msg(DBG_INF, "do_request: bad device: %s\n",
kdevname(CURRENT->rq_dev)); kdevname(req->rq_dev));
goto err_done; goto err_done;
} }
while (busy_audio) sbp_sleep(HZ); /* wait a bit */ while (busy_audio) sbp_sleep(HZ); /* wait a bit */
...@@ -4481,19 +4534,23 @@ static void DO_SBPCD_REQUEST(void) ...@@ -4481,19 +4534,23 @@ static void DO_SBPCD_REQUEST(void)
if (D_S[i].audio_state==audio_playing) goto err_done; if (D_S[i].audio_state==audio_playing) goto err_done;
if (d!=i) switch_drive(i); if (d!=i) switch_drive(i);
block = CURRENT->sector; /* always numbered as 512-byte-pieces */ block = req->sector; /* always numbered as 512-byte-pieces */
nsect = CURRENT->nr_sectors; /* always counted as 512-byte-pieces */ nsect = req->nr_sectors; /* always counted as 512-byte-pieces */
msg(DBG_BSZ,"read sector %d (%d sectors)\n", block, nsect); msg(DBG_BSZ,"read sector %d (%d sectors)\n", block, nsect);
#if 0 #if 0
msg(DBG_MUL,"read LBA %d\n", block/4); msg(DBG_MUL,"read LBA %d\n", block/4);
#endif #endif
sbp_transfer(); sbp_transfer(req);
/* if we satisfied the request from the buffer, we're done. */ /* if we satisfied the request from the buffer, we're done. */
if (CURRENT->nr_sectors == 0) if (req->nr_sectors == 0)
{ {
end_request(1); #ifdef DEBUG_GTL
printk(" do_sbpcd_request[%do](%p:%ld+%ld) end 2, Time:%li\n",
xnr, req, req->sector, req->nr_sectors, jiffies);
#endif
sbpcd_end_request(req, 1);
goto request_loop; goto request_loop;
} }
...@@ -4521,21 +4578,29 @@ static void DO_SBPCD_REQUEST(void) ...@@ -4521,21 +4578,29 @@ static void DO_SBPCD_REQUEST(void)
break; break;
} }
sbp_read_cmd(); sbp_read_cmd(req);
sbp_sleep(0); sbp_sleep(0);
if (sbp_data() != 0) if (sbp_data(req) != 0)
{ {
#if SAFE_MIXED #if SAFE_MIXED
D_S[d].has_data=2; /* is really a data disk */ D_S[d].has_data=2; /* is really a data disk */
#endif SAFE_MIXED #endif SAFE_MIXED
end_request(1); #ifdef DEBUG_GTL
printk(" do_sbpcd_request[%do](%p:%ld+%ld) end 3, Time:%li\n",
xnr, req, req->sector, req->nr_sectors, jiffies);
#endif
sbpcd_end_request(req, 1);
goto request_loop; goto request_loop;
} }
} }
err_done: err_done:
busy_data=0; busy_data=0;
end_request(0); #ifdef DEBUG_GTL
printk(" do_sbpcd_request[%do](%p:%ld+%ld) end 4 (error), Time:%li\n",
xnr, req, req->sector, req->nr_sectors, jiffies);
#endif
sbpcd_end_request(req, 0);
sbp_sleep(0); /* wait a bit, try again */ sbp_sleep(0); /* wait a bit, try again */
goto request_loop; goto request_loop;
} }
...@@ -4543,7 +4608,7 @@ static void DO_SBPCD_REQUEST(void) ...@@ -4543,7 +4608,7 @@ static void DO_SBPCD_REQUEST(void)
/* /*
* build and send the READ command. * build and send the READ command.
*/ */
static void sbp_read_cmd(void) static void sbp_read_cmd(struct request *req)
{ {
#undef OLD #undef OLD
...@@ -4552,7 +4617,7 @@ static void sbp_read_cmd(void) ...@@ -4552,7 +4617,7 @@ static void sbp_read_cmd(void)
D_S[d].sbp_first_frame=D_S[d].sbp_last_frame=-1; /* purge buffer */ D_S[d].sbp_first_frame=D_S[d].sbp_last_frame=-1; /* purge buffer */
D_S[d].sbp_current = 0; D_S[d].sbp_current = 0;
block=CURRENT->sector/4; block=req->sector/4;
if (block+D_S[d].sbp_bufsiz <= D_S[d].CDsize_frm) if (block+D_S[d].sbp_bufsiz <= D_S[d].CDsize_frm)
D_S[d].sbp_read_frames = D_S[d].sbp_bufsiz; D_S[d].sbp_read_frames = D_S[d].sbp_bufsiz;
else else
...@@ -4650,7 +4715,7 @@ static void sbp_read_cmd(void) ...@@ -4650,7 +4715,7 @@ static void sbp_read_cmd(void)
* Check the completion of the read-data command. On success, read * Check the completion of the read-data command. On success, read
* the D_S[d].sbp_bufsiz * 2048 bytes of data from the disk into buffer. * the D_S[d].sbp_bufsiz * 2048 bytes of data from the disk into buffer.
*/ */
static int sbp_data(void) static int sbp_data(struct request *req)
{ {
int i=0, j=0, l, frame; int i=0, j=0, l, frame;
u_int try=0; u_int try=0;
...@@ -4913,9 +4978,9 @@ static int sbp_data(void) ...@@ -4913,9 +4978,9 @@ static int sbp_data(void)
return (0); return (0);
} }
D_S[d].sbp_first_frame = CURRENT -> sector / 4; D_S[d].sbp_first_frame = req -> sector / 4;
D_S[d].sbp_last_frame = D_S[d].sbp_first_frame + D_S[d].sbp_read_frames - 1; D_S[d].sbp_last_frame = D_S[d].sbp_first_frame + D_S[d].sbp_read_frames - 1;
sbp_transfer(); sbp_transfer(req);
return (1); return (1);
} }
/*==========================================================================*/ /*==========================================================================*/
......
This diff is collapsed.
...@@ -44,6 +44,24 @@ if [ "$CONFIG_PCI" = "y" ]; then ...@@ -44,6 +44,24 @@ if [ "$CONFIG_PCI" = "y" ]; then
bool ' allow DISCONNECT' CONFIG_SCSI_NCR53C7xx_DISCONNECT bool ' allow DISCONNECT' CONFIG_SCSI_NCR53C7xx_DISCONNECT
fi fi
fi fi
if [ "$CONFIG_PCI" = "y" -a "$CONFIG_SCSI_NCR53C7xx" != "y" ]; then
if [ "$CONFIG_SCSI" != "n" -a "$CONFIG_SCSI_NCR53C7xx" = "m" ]; then
dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX m
else
dep_tristate 'NCR53C8XX SCSI support' CONFIG_SCSI_NCR53C8XX $CONFIG_SCSI
fi
if [ "$CONFIG_SCSI_NCR53C8XX" != "n" ]; then
bool ' enable tagged command queueing' CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
bool ' force normal IO' CONFIG_SCSI_NCR53C8XX_IOMAPPED
bool ' not allow targets to disconnect' CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
bool ' force asynchronous transfer mode' CONFIG_SCSI_NCR53C8XX_FORCE_ASYNCHRONOUS
bool ' force synchronous negotiation' CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
fi
if [ "$CONFIG_SCSI_NCR53C8XX" != "n" -a $CONFIG_EXPERIMENTAL = 'y' ]; then
bool ' disable master parity checking' CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
bool ' disable scsi parity checking' CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
fi
fi
dep_tristate 'IOMEGA Parallel Port ZIP drive SCSI support' CONFIG_SCSI_PPA $CONFIG_SCSI dep_tristate 'IOMEGA Parallel Port ZIP drive SCSI support' CONFIG_SCSI_PPA $CONFIG_SCSI
dep_tristate 'PAS16 SCSI support' CONFIG_SCSI_PAS16 $CONFIG_SCSI dep_tristate 'PAS16 SCSI support' CONFIG_SCSI_PAS16 $CONFIG_SCSI
dep_tristate 'Qlogic FAS SCSI support' CONFIG_SCSI_QLOGIC_FAS $CONFIG_SCSI dep_tristate 'Qlogic FAS SCSI support' CONFIG_SCSI_QLOGIC_FAS $CONFIG_SCSI
......
...@@ -263,6 +263,14 @@ else ...@@ -263,6 +263,14 @@ else
endif endif
endif endif
ifeq ($(CONFIG_SCSI_NCR53C8XX),y)
L_OBJS += ncr53c8xx.o
else
ifeq ($(CONFIG_SCSI_NCR53C8XX),m)
M_OBJS += ncr53c8xx.o
endif
endif
ifeq ($(CONFIG_SCSI_PAS16),y) ifeq ($(CONFIG_SCSI_PAS16),y)
L_OBJS += pas16.o L_OBJS += pas16.o
else else
...@@ -362,6 +370,9 @@ seagate.o: seagate.c ...@@ -362,6 +370,9 @@ seagate.o: seagate.c
mv scriptu.h 53c8xx_u.h mv scriptu.h 53c8xx_u.h
rm fake.c rm fake.c
ncr53c8xx.o : ncr53c8xx.c
$(CC) $(CFLAGS) -c ncr53c8xx.c
scsi_mod.o: $(MX_OBJS) hosts.o scsi.o scsi_ioctl.o constants.o \ scsi_mod.o: $(MX_OBJS) hosts.o scsi.o scsi_ioctl.o constants.o \
scsicam.o scsi_proc.o scsicam.o scsi_proc.o
$(LD) $(LD_RFLAG) -r -o $@ $(MX_OBJS) hosts.o scsi.o scsi_ioctl.o constants.o scsicam.o scsi_proc.o $(LD) $(LD_RFLAG) -r -o $@ $(MX_OBJS) hosts.o scsi.o scsi_ioctl.o constants.o scsicam.o scsi_proc.o
......
This diff is collapsed.
...@@ -133,6 +133,10 @@ ...@@ -133,6 +133,10 @@
#include "53c7,8xx.h" #include "53c7,8xx.h"
#endif #endif
#ifdef CONFIG_SCSI_NCR53C8XX
#include "ncr53c8xx.h"
#endif
#ifdef CONFIG_SCSI_ULTRASTOR #ifdef CONFIG_SCSI_ULTRASTOR
#include "ultrastor.h" #include "ultrastor.h"
#endif #endif
...@@ -272,6 +276,9 @@ static Scsi_Host_Template builtin_scsi_hosts[] = ...@@ -272,6 +276,9 @@ static Scsi_Host_Template builtin_scsi_hosts[] =
#ifdef CONFIG_SCSI_NCR53C7xx #ifdef CONFIG_SCSI_NCR53C7xx
NCR53c7xx, NCR53c7xx,
#endif #endif
#ifdef CONFIG_SCSI_NCR53C8XX
NCR53C8XX,
#endif
#ifdef CONFIG_SCSI_EATA_DMA #ifdef CONFIG_SCSI_EATA_DMA
EATA_DMA, EATA_DMA,
#endif #endif
......
This diff is collapsed.
This diff is collapsed.
...@@ -57,7 +57,7 @@ Since 3.5.2 ...@@ -57,7 +57,7 @@ Since 3.5.2
Since 3.5.1 Since 3.5.1
- TB Maui initialization support - TB Maui initialization support
Since 3.5 Since 3.5
- Improved handling of playback underrunt situations. - Improved handling of playback underrun situations.
Since 3.5-beta10 Since 3.5-beta10
- Bug fixing - Bug fixing
...@@ -100,14 +100,14 @@ Since 3.5-beta2 ...@@ -100,14 +100,14 @@ Since 3.5-beta2
to James Hightower. to James Hightower.
Since 3.5-beta1 Since 3.5-beta1
- Bugfixes. - Bug fixes.
- Full duplex audio with MAD16+CS4231 may work now. The driver configures - Full duplex audio with MAD16+CS4231 may work now. The driver configures
SB DMA of MAD16 so that it doesn't conflict with codec's DMA channels. SB DMA of MAD16 so that it doesn't conflict with codec's DMA channels.
The side effect is that all 8 bit DMA channels (0,1,3) are populated in The side effect is that all 8 bit DMA channels (0,1,3) are populated in
duplex mode. duplex mode.
Since 3.5-alpha9 Since 3.5-alpha9
- Bugfixes (mostly in Jazz16 and ESS1688/688 supports). - Bug fixes (mostly in Jazz16 and ESS1688/688 supports).
- Temporarily disabled recording with ESS1688/688 since it causes crash. - Temporarily disabled recording with ESS1688/688 since it causes crash.
- Changed audio buffer partitioning algorithm so that it selects - Changed audio buffer partitioning algorithm so that it selects
smaller fragment size than earlier. This improves real time capabilities smaller fragment size than earlier. This improves real time capabilities
...@@ -116,7 +116,7 @@ Since 3.5-alpha9 ...@@ -116,7 +116,7 @@ Since 3.5-alpha9
shorter than 4096 bytes. shorter than 4096 bytes.
Since 3.5-alpha8 Since 3.5-alpha8
- Bugfixes - Bug fixes
Since 3.5-alpha7 Since 3.5-alpha7
- Linux kernel compatible configuration (_EXPERIMENTAL_). Enable - Linux kernel compatible configuration (_EXPERIMENTAL_). Enable
...@@ -135,7 +135,7 @@ configure to handle this. ...@@ -135,7 +135,7 @@ configure to handle this.
modularized version. They can be enabled by using init_trace=1 in modularized version. They can be enabled by using init_trace=1 in
the insmod command line (insmod sound init_trace=1). the insmod command line (insmod sound init_trace=1).
- More AIX stuff. - More AIX stuff.
- Added support for syncronizing dsp/audio devices with /dev/sequencer. - Added support for synchronizing dsp/audio devices with /dev/sequencer.
- mmap() support for dsp/audio devices. - mmap() support for dsp/audio devices.
Since 3.5-alpha5 Since 3.5-alpha5
...@@ -148,7 +148,7 @@ Since 3.5-alpha4 ...@@ -148,7 +148,7 @@ Since 3.5-alpha4
sources. Running 'setfx' is required again. sources. Running 'setfx' is required again.
Since 3.5-alpha3 Since 3.5-alpha3
- Moved stuff from the 'setfx' program to the AudioTriX Pro driver. - Moved stuff from the 'setfx' program to the AudioTrix Pro driver.
Since 3.5-alpha2 Since 3.5-alpha2
- Modifications to makefile and configure.c. Unnecessary sources - Modifications to makefile and configure.c. Unnecessary sources
...@@ -159,13 +159,13 @@ Since 3.5-alpha2 ...@@ -159,13 +159,13 @@ Since 3.5-alpha2
- Fixed random protection fault in gus_wave.c - Fixed random protection fault in gus_wave.c
Since 3.5-alpha1 Since 3.5-alpha1
- Modified to work with Linux-1.3.33 and leater - Modified to work with Linux-1.3.33 and later
- Some minor changes - Some minor changes
Since 3.0.2 Since 3.0.2
- Support for CS4232 based PnP cards (AcerMagic S23 etc). - Support for CS4232 based PnP cards (AcerMagic S23 etc).
- Full duplex support for some CS4231, CS4232 and AD1845 based cards - Full duplex support for some CS4231, CS4232 and AD1845 based cards
(GUA MAX, AudioTrix Pro, AcerMagic S23 and many MAD16/Mozart cards (GUS MAX, AudioTrix Pro, AcerMagic S23 and many MAD16/Mozart cards
having a codec mentioned above). having a codec mentioned above).
- Almost fully rewritten loadable modules support. - Almost fully rewritten loadable modules support.
- Fixed some bugs. - Fixed some bugs.
...@@ -286,13 +286,13 @@ Since 2.3 ...@@ -286,13 +286,13 @@ Since 2.3
Since 2.2b Since 2.2b
- Full SB16 DSP support. 8/16 bit, mono/stereo - Full SB16 DSP support. 8/16 bit, mono/stereo
- The SCO and FreeBSD versions should be in sync now. There are some - The SCO and FreeBSD versions should be in sync now. There are some
problems with SB16 and GUS in the freebsd versions. problems with SB16 and GUS in the FreeBSD versions.
The DMA buffer allocation of the SCO version has been polished but The DMA buffer allocation of the SCO version has been polished but
there could still be some problems. At least it hogs memory. there could still be some problems. At least it hogs memory.
The DMA channel The DMA channel
configuration method used in the sco/System is a hack. configuration method used in the SCO/System is a hack.
- Support for the MPU emulation of the SB16. - Support for the MPU emulation of the SB16.
- Some big arrays are now allocated boot time. This makes the bss segment - Some big arrays are now allocated boot time. This makes the BSS segment
smaller which makes it possible to use the full driver with smaller which makes it possible to use the full driver with
NetBSD. These arrays are not allocated if no suitable soundcard is available. NetBSD. These arrays are not allocated if no suitable soundcard is available.
- Fixed a bug in the compute_and_set_volume in gus_wave.c - Fixed a bug in the compute_and_set_volume in gus_wave.c
...@@ -308,7 +308,7 @@ Since 2.2 ...@@ -308,7 +308,7 @@ Since 2.2
Since 2.1 Since 2.1
- Preliminary support for SB16. - 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 - Digitized voice capability up to 44.1 kHz/8 bit/mono
(16 bit and stereo support coming in the next release). (16 bit and stereo support coming in the next release).
- Fixed some bugs in the digitized voice driver for PAS16. - Fixed some bugs in the digitized voice driver for PAS16.
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
# Sound driver configuration # Sound driver configuration
# #
#-------- #--------
# There is another confic script which is compatible with rest of # There is another config script which is compatible with rest of
# the kernel. It can be activated by running 'make mkscript' in this # the kernel. It can be activated by running 'make mkscript' in this
# directory. Please note that this is an _experimental_ feature which # directory. Please note that this is an _experimental_ feature which
# doesn't work with all cards (PSS, SM Wave, AudioTriX Pro, Maui). # doesn't work with all cards (PSS, SM Wave, AudioTrix Pro, Maui).
#-------- #--------
# #
$MAKE -C drivers/sound config || exit 1 $MAKE -C drivers/sound config || exit 1
......
...@@ -3,11 +3,11 @@ USS Lite version 3.5.4 release notes ...@@ -3,11 +3,11 @@ USS Lite version 3.5.4 release notes
Most up to date information about this driver is available from Most up to date information about this driver is available from
http://www.4front-tech.com/usslite or http://personal.eunet.fi/pp/voxware http://www.4front-tech.com/usslite or http://personal.eunet.fi/pp/voxware
(european mirror). (European mirror).
Please read the SOUND-HOWTO (available from sunsite.unc.edu and other Linux ftp 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 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 date but still very useful. Information about bug fixes and such things
is available from the web page (see below). is available from the web page (see below).
...@@ -23,7 +23,7 @@ It's very likely that this driver version is incompatible with ...@@ -23,7 +23,7 @@ It's very likely that this driver version is incompatible with
Linux versions later than 2.0.x. Linux versions later than 2.0.x.
Packages "snd-util-3.5.tar.gz" and "snd-data-0.1.tar.Z" Packages "snd-util-3.5.tar.gz" and "snd-data-0.1.tar.Z"
contain usefull utilities to be used with this driver. contain useful utilities to be used with this driver.
See http://www.4front-tech.com/usslite/getting.html for See http://www.4front-tech.com/usslite/getting.html for
download instructions. download instructions.
...@@ -42,7 +42,7 @@ Contributors ...@@ -42,7 +42,7 @@ Contributors
------------ ------------
This driver contains code by several contributors. In addition several other This driver contains code by several contributors. In addition several other
persons have given usefull suggestions. The following is a list of major persons have given useful suggestions. The following is a list of major
contributors. (I could have forgotten some names.) contributors. (I could have forgotten some names.)
Craig Metz 1/2 of the PAS16 Mixer and PCM support Craig Metz 1/2 of the PAS16 Mixer and PCM support
...@@ -54,7 +54,7 @@ contributors. (I could have forgotten some names.) ...@@ -54,7 +54,7 @@ contributors. (I could have forgotten some names.)
Andy Warner ISC port Andy Warner ISC port
Jim Lowe, Jim Lowe,
Amancio Hasty Jr FreeBSD/NetBSD port Amancio Hasty Jr FreeBSD/NetBSD port
Anders Baekgaard Bughunting and valuable suggestions. Anders Baekgaard Bug hunting and valuable suggestions.
Joerg Schubert SB16 DSP support (initial version). Joerg Schubert SB16 DSP support (initial version).
Andrew Robinson Improvements to the GUS driver Andrew Robinson Improvements to the GUS driver
Megens SA MIDI recording for SB and SB Pro (initial version). Megens SA MIDI recording for SB and SB Pro (initial version).
...@@ -76,7 +76,7 @@ contributors. (I could have forgotten some names.) ...@@ -76,7 +76,7 @@ contributors. (I could have forgotten some names.)
Please look at lowlevel/README for more contributors. Please look at lowlevel/README for more contributors.
There are propably many other names missing. If you have sent me some 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. patches and your name is not in the above list, please inform me.
Sponsors etc. Sponsors etc.
...@@ -125,7 +125,7 @@ If you get an error message when trying to use the driver, please look ...@@ -125,7 +125,7 @@ If you get an error message when trying to use the driver, please look
at /var/adm/messages for more verbose error message. at /var/adm/messages for more verbose error message.
In general the easiest way to diagnoze problems is to do "cat /dev/sndstat". In general the easiest way to diagnose problems is to do "cat /dev/sndstat".
If you get an error message, there are some problems with the driver setup: If you get an error message, there are some problems with the driver setup:
...@@ -133,7 +133,7 @@ If you get an error message, there are some problems with the driver setup: ...@@ -133,7 +133,7 @@ If you get an error message, there are some problems with the driver setup:
the sound driver are missing. Use the script at the end of the sound driver are missing. Use the script at the end of
linux/drivers/sound/Readme.linux to create them. linux/drivers/sound/Readme.linux to create them.
- "No such device" telss that the sound driver is not in the kernel. - "No such device" tells that the sound driver is not in the kernel.
You have to reconfigure and recompile the kernel to have the sound You have to reconfigure and recompile the kernel to have the sound
driver. Compiling the driver doesn't help alone. You have to boot driver. Compiling the driver doesn't help alone. You have to boot
with the newly compiled one before the driver becomes active. with the newly compiled one before the driver becomes active.
...@@ -148,7 +148,7 @@ The following errors are likely with /dev/dsp and /dev/audio. ...@@ -148,7 +148,7 @@ The following errors are likely with /dev/dsp and /dev/audio.
this particular device. For example /dev/audio and /dev/dsp will not this particular device. For example /dev/audio and /dev/dsp will not
work if "digitized voice support" was not enabled during "make config". work if "digitized voice support" was not enabled during "make config".
- "Device or resource busy". Propably the IRQ (or DMA) channel - "Device or resource busy". Probably the IRQ (or DMA) channel
required by the soundcard is in use by some other device/driver. required by the soundcard is in use by some other device/driver.
- "I/O error". Almost certainly (99%) it's an IRQ or DMA conflict. - "I/O error". Almost certainly (99%) it's an IRQ or DMA conflict.
......
This diff is collapsed.
...@@ -19,7 +19,7 @@ IMPORTANT! Read this if you are installing a separately ...@@ -19,7 +19,7 @@ IMPORTANT! Read this if you are installing a separately
sources). Remove old version of linux/drivers/sound directory before sources). Remove old version of linux/drivers/sound directory before
installing new files. installing new files.
- To build the device files you need to run the enclosed shell scrip - 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 (see below). You need to do this only when installing sound driver
first time or when upgrading to much recent version than the earlier first time or when upgrading to much recent version than the earlier
one. one.
...@@ -27,13 +27,13 @@ IMPORTANT! Read this if you are installing a separately ...@@ -27,13 +27,13 @@ IMPORTANT! Read this if you are installing a separately
- Configure and compile Linux as normally (remember to include the - Configure and compile Linux as normally (remember to include the
sound support during "make config"). Please refer to kernel documentation sound support during "make config"). Please refer to kernel documentation
for instructions about configuring and compiling kernel. File Readme.cards for instructions about configuring and compiling kernel. File Readme.cards
contains card spesific instructions for configuring this driver for contains card specific instructions for configuring this driver for
use with various soundcards. use with various soundcards.
Boot time configuration (using lilo and insmod) Boot time configuration (using lilo and insmod)
----------------------------------------------- -----------------------------------------------
This information has been removed. Too many users did't believe This information has been removed. Too many users didn't believe
that it's really not necessary to use this method. Please look at 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. Readme of sound driver version 3.0.1 if you still want to use this method.
...@@ -46,7 +46,7 @@ command: ...@@ -46,7 +46,7 @@ command:
cat /dev/sndstat cat /dev/sndstat
and look at the output. It should display some usefull info about the and look at the output. It should display some useful info about the
driver configuration. If there is no /dev/sndstat driver configuration. If there is no /dev/sndstat
(/dev/sndstat: No such file or directory), ensure that you have executed the (/dev/sndstat: No such file or directory), ensure that you have executed the
soundinstall script (at the end of this file). soundinstall script (at the end of this file).
......
...@@ -45,10 +45,10 @@ For example: ...@@ -45,10 +45,10 @@ For example:
insmod sound dma_buffsize=32768 insmod sound dma_buffsize=32768
Minimum buffer size is 4096 and the maximum depends on the DMA channe. Minimum buffer size is 4096 and the maximum depends on the DMA channel.
For 8 bit channels (0 to 3) the limit is 64k and for 16 bit ones (5 to 7) For 8 bit channels (0 to 3) the limit is 64k and for 16 bit ones (5 to 7)
it's 128k. Driver selects a suitable buffer size automaticly in case it's 128k. Driver selects a suitable buffer size automatically in case
you try to spesify an invalid size. you try to specify an invalid size.
Q: What is the right DMA buffer size? Q: What is the right DMA buffer size?
...@@ -58,17 +58,17 @@ audio or when there are other processes running on the same system. Also ...@@ -58,17 +58,17 @@ audio or when there are other processes running on the same system. Also
recording to hard disk is likely to require large buffers. recording to hard disk is likely to require large buffers.
Very small buffers are sufficient when you are just playing 8kHz audio files Very small buffers are sufficient when you are just playing 8kHz audio files
on an empty P133 system. Using a 128k byffer just wastes 120k (or 250k) on an empty P133 system. Using a 128k buffer just wastes 120k (or 250k)
of valuable physical RAM memory. of valuable physical RAM memory.
The right buffer sice can be easily found by making some experiments The right buffer size can be easily found by making some experiments
with the dma_buffsize= parameter. I use usually 16k buffers on a DX4/100 system with the dma_buffsize= parameter. I use usually 16k buffers on a DX4/100 system
and 64k on an old 386 system. and 64k on an old 386 system.
NOTE! DMA buffers are used only by /dev/audio# and /dev/dsp# devices. NOTE! DMA buffers are used only by /dev/audio# and /dev/dsp# devices.
Other device files don't use them but there are two exceptions: Other device files don't use them but there are two exceptions:
GUS driver uses DMA buffers when loading samples to the card. GUS driver uses DMA buffers when loading samples to the card.
Ensoniq SoundScape driver uses them when doanloading the microcode Ensoniq SoundScape driver uses them when downloading the microcode
file (sndscape.co[012]) to the card. Using large buffers doesn't file (sndscape.co[012]) to the card. Using large buffers doesn't
increase performance in these cases. increase performance in these cases.
......
...@@ -18,7 +18,7 @@ applications like sequencers. ...@@ -18,7 +18,7 @@ applications like sequencers.
/dev/midi## /dev/midi##
----------- -----------
This interface should be usefull for applications like MIDI sysex librarians. This interface should be useful for applications like MIDI sysex librarians.
There are (currently) no timing features so making music could be impossible. There are (currently) no timing features so making music could be impossible.
There are as many /dev/midi## devices as there are MIDI ports in the system. There are as many /dev/midi## devices as there are MIDI ports in the system.
...@@ -53,7 +53,7 @@ It's not available for the so called MPU UART ports of some soundcards ...@@ -53,7 +53,7 @@ It's not available for the so called MPU UART ports of some soundcards
If this ioctl is called with mode=1, the interface is put to the intelligent If this ioctl is called with mode=1, the interface is put to the intelligent
(coprocessor) mode. NOTE! The MIDI port will be reset when this ioctl is called. (coprocessor) mode. NOTE! The MIDI port will be reset when this ioctl is called.
It could have some strange effects if not called immediately after open. This It could have some strange effects if not called immediately after open. This
vall returns EINVAL if the midi port doesn't support the MPU-401 intelligent call returns EINVAL if the midi port doesn't support the MPU-401 intelligent
mode. mode.
ioctl(fd, SNDCTL_MIDI_MPUCMD, &cmdstruct) is valid only if the MIDI port ioctl(fd, SNDCTL_MIDI_MPUCMD, &cmdstruct) is valid only if the MIDI port
...@@ -81,10 +81,10 @@ where: ...@@ -81,10 +81,10 @@ where:
data Buffer for the command arguments and returned data Buffer for the command arguments and returned
data. data.
Be extremely carefull with the nr_args and nr_returns fields. They Be extremely careful with the nr_args and nr_returns fields. They
must match the command. An incorrect value will put the card and must match the command. An incorrect value will put the card and
the driver out of sync. Refer to the MPU-401/MQX-32M documentation for further the driver out of sync. Refer to the MPU-401/MQX-32M documentation for further
datails. details.
...@@ -99,7 +99,7 @@ the result is somewhere between the MIDI specification and the synth devices of ...@@ -99,7 +99,7 @@ the result is somewhere between the MIDI specification and the synth devices of
/dev/sequencer. Both kind of devices are accessed using the SEQ_START_NOTE() /dev/sequencer. Both kind of devices are accessed using the SEQ_START_NOTE()
like macros. The voice number parameters of the API macros have been redefined like macros. The voice number parameters of the API macros have been redefined
to denote MIDI channels. This means that the driver allocates voices for to denote MIDI channels. This means that the driver allocates voices for
the channels automaticly (this is a responsibility/right of an application the channels automatically (this is a responsibility/right of an application
with /dev/sequencer). The result is that a SEQ_START_NOTE() macro has with /dev/sequencer). The result is that a SEQ_START_NOTE() macro has
similar effects for a synth channel than on a MIDI port. This kind of similar effects for a synth channel than on a MIDI port. This kind of
solution provides better device independence than the /dev/sequencer. The solution provides better device independence than the /dev/sequencer. The
...@@ -116,15 +116,15 @@ return sum of internal synthesizers (GUS, OPL3) and MIDI ports in the systems. ...@@ -116,15 +116,15 @@ return sum of internal synthesizers (GUS, OPL3) and MIDI ports in the systems.
- The new interface is used much like the ordinary /dev/sequencer. The - The new interface is used much like the ordinary /dev/sequencer. The
event format is new so you have to use the API macros defined in the event format is new so you have to use the API macros defined in the
sys/soundcard.h. The interface is will propably change before the final 3.0 sys/soundcard.h. The interface is will probably change before the final 3.0
release but using the API macros should ensure compatibility in source level. release but using the API macros should ensure compatibility in source level.
The new event format is not recognized by version 2.X so don't try to The new event format is not recognized by version 2.X so don't try to
distribute binaries compiled with soundcard.h of v3.X. distribute binaries compiled with soundcard.h of v3.X.
- The basic API useage is similar to the current one. There are some new - 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 macros but the older ones should work as earlier. The most important
incompatibility is that the /dev/sequencer2 driver allocates voices itself. 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 first event. Otherwise the timer is not started and the application waits
infinitely. infinitely.
......
...@@ -523,8 +523,8 @@ ad1848_set_speed (int dev, int arg) ...@@ -523,8 +523,8 @@ ad1848_set_speed (int dev, int arg)
ad1848_info *devc = (ad1848_info *) audio_devs[dev]->devc; ad1848_info *devc = (ad1848_info *) audio_devs[dev]->devc;
/* /*
* The sampling speed is encoded in the least significant nible of I8. The * The sampling speed is encoded in the least significant nibble of I8. The
* LSB selects the clock source (0=24.576 MHz, 1=16.9344 Mhz) and other * LSB selects the clock source (0=24.576 MHz, 1=16.9344 MHz) and other
* three bits select the divisor (indirectly): * three bits select the divisor (indirectly):
* *
* The available speeds are in the following table. Keep the speeds in * The available speeds are in the following table. Keep the speeds in
...@@ -961,7 +961,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount) ...@@ -961,7 +961,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount)
ad_write (devc, 8, fs); ad_write (devc, 8, fs);
/* /*
* Write to I8 starts resyncronization. Wait until it completes. * Write to I8 starts resynchronization. Wait until it completes.
*/ */
timeout = 10000; timeout = 10000;
while (timeout > 0 && inb (devc->base) == 0x80) while (timeout > 0 && inb (devc->base) == 0x80)
...@@ -975,7 +975,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount) ...@@ -975,7 +975,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount)
ad_write (devc, 28, fs); ad_write (devc, 28, fs);
/* /*
* Write to I28 starts resyncronization. Wait until it completes. * Write to I28 starts resynchronization. Wait until it completes.
*/ */
timeout = 10000; timeout = 10000;
while (timeout > 0 && inb (devc->base) == 0x80) while (timeout > 0 && inb (devc->base) == 0x80)
...@@ -1183,7 +1183,7 @@ ad1848_detect (int io_base, int *ad_flags, int *osp) ...@@ -1183,7 +1183,7 @@ ad1848_detect (int io_base, int *ad_flags, int *osp)
* Check that the I/O address is in use. * 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 * 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. * this has happened before the OS is starting.
* *
* If the I/O address is unused, it typically returns 0xff. * If the I/O address is unused, it typically returns 0xff.
...@@ -1481,7 +1481,7 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture ...@@ -1481,7 +1481,7 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture
ad_write (devc, 27, ad_read (devc, 27) | 0x08); /* Alternate freq select enabled */ ad_write (devc, 27, ad_read (devc, 27) | 0x08); /* Alternate freq select enabled */
if (devc->model == MD_IWAVE) if (devc->model == MD_IWAVE)
{ /* Some magic Interwave spesific initialization */ { /* Some magic Interwave specific initialization */
ad_write (devc, 12, 0x6c); /* Select codec mode 3 */ ad_write (devc, 12, 0x6c); /* Select codec mode 3 */
ad_write (devc, 17, 0xc2); /* Alternate feature enable */ ad_write (devc, 17, 0xc2); /* Alternate feature enable */
} }
...@@ -1537,8 +1537,8 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture ...@@ -1537,8 +1537,8 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture
devc->timer_ticks = 0; devc->timer_ticks = 0;
ad_write (devc, 21, 0x00); /* Timer msb */ ad_write (devc, 21, 0x00); /* Timer MSB */
ad_write (devc, 20, 0x10); /* Timer lsb */ ad_write (devc, 20, 0x10); /* Timer LSB */
ad_write (devc, 16, tmp | 0x40); /* Enable timer */ ad_write (devc, 16, tmp | 0x40); /* Enable timer */
for (x = 0; x < 100000 && devc->timer_ticks == 0; x++); for (x = 0; x < 100000 && devc->timer_ticks == 0; x++);
...@@ -1618,7 +1618,7 @@ ad1848_unload (int io_base, int irq, int dma_playback, int dma_capture, int shar ...@@ -1618,7 +1618,7 @@ ad1848_unload (int io_base, int irq, int dma_playback, int dma_capture, int shar
} }
} }
else else
printk ("ad1848: Can't find device to be undoaded. Base=%x\n", printk ("ad1848: Can't find device to be unloaded. Base=%x\n",
io_base); io_base);
} }
...@@ -1816,7 +1816,7 @@ init_deskpro (struct address_info *hw_config) ...@@ -1816,7 +1816,7 @@ init_deskpro (struct address_info *hw_config)
/* /*
* I/O port 0xc45 FM Address Decode/MSS ID Register. * I/O port 0xc45 FM Address Decode/MSS ID Register.
* *
* bank=0, bits 0xfe: FM synthesis Decode Comare bits 7:1 (default=0x88) * bank=0, bits 0xfe: FM synthesis Decode Compare bits 7:1 (default=0x88)
* bank=0, bit 0x01: SBIC Power Control Bit * bank=0, bit 0x01: SBIC Power Control Bit
* 0x00 = Powered up * 0x00 = Powered up
* 0x01 = Powered down * 0x01 = Powered down
...@@ -1880,7 +1880,7 @@ init_deskpro (struct address_info *hw_config) ...@@ -1880,7 +1880,7 @@ init_deskpro (struct address_info *hw_config)
/* /*
* I/O port 0xc47 FM Address Decode Register. * I/O port 0xc47 FM Address Decode Register.
* *
* bank=0, bits 0xff: Decode enble selection for various FM address bits * bank=0, bits 0xff: Decode enable selection for various FM address bits
* bank=1, bits 0xff: Reserved * bank=1, bits 0xff: Reserved
*/ */
...@@ -2152,7 +2152,7 @@ ad1848_tmr_start (int dev, unsigned int usecs) ...@@ -2152,7 +2152,7 @@ ad1848_tmr_start (int dev, unsigned int usecs)
{ {
unsigned long flags; unsigned long flags;
ad1848_info *devc = (ad1848_info *) audio_devs[dev]->devc; ad1848_info *devc = (ad1848_info *) audio_devs[dev]->devc;
unsigned long xtal_nsecs; /* nanoseconds per xtal oscillaror tick */ unsigned long xtal_nsecs; /* nanoseconds per xtal oscillator tick */
unsigned long divider; unsigned long divider;
save_flags (flags); save_flags (flags);
......
This diff is collapsed.
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#define OFF 0 #define OFF 0
static int audio_mode[MAX_AUDIO_DEV]; static int audio_mode[MAX_AUDIO_DEV];
static int dev_nblock[MAX_AUDIO_DEV]; /* 1 if in noblocking mode */ static int dev_nblock[MAX_AUDIO_DEV]; /* 1 if in nonblocking mode */
#define AM_NONE 0 #define AM_NONE 0
#define AM_WRITE 1 #define AM_WRITE 1
......
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
B (OPT_MSS) | B (OPT_GUS16) | B (OPT_GUSMAX) | B (OPT_TRIX) | \ B (OPT_MSS) | B (OPT_GUS16) | B (OPT_GUSMAX) | B (OPT_TRIX) | \
B (OPT_SSCAPE)| B(OPT_MAD16) | B(OPT_CS4232)) B (OPT_SSCAPE)| B(OPT_MAD16) | B(OPT_CS4232))
#define MPU_DEVS (B(OPT_PSS)|\ #define MPU_DEVS (B(OPT_PSS)|\
B(OPT_CS4232)|B(OPT_SPNP)|B(OPT_MAUI)) B(OPT_CS4232)|B(OPT_SPNP)|B(OPT_MAUI)|B(OPT_SSCAPE))
#define UART401_DEVS (SBDSP_DEVS|B(OPT_TRIX)|B(OPT_MAD16)|B(OPT_SSCAPE)) #define UART401_DEVS (SBDSP_DEVS|B(OPT_TRIX)|B(OPT_MAD16))
#define MIDI_CARDS (MPU_DEVS | UART401_DEVS | \ #define MIDI_CARDS (MPU_DEVS | UART401_DEVS | \
B (OPT_PSS) | B (OPT_SB) | B (OPT_PAS) | B (OPT_MPU401) | \ B (OPT_PSS) | B (OPT_SB) | B (OPT_PAS) | B (OPT_MPU401) | \
B (OPT_GUS) | B (OPT_TRIX) | B (OPT_SSCAPE)|B(OPT_MAD16) | \ B (OPT_GUS) | B (OPT_TRIX) | B (OPT_SSCAPE)|B(OPT_MAD16) | \
...@@ -148,7 +148,7 @@ hw_entry hw_table[] = ...@@ -148,7 +148,7 @@ hw_entry hw_table[] =
char *questions[] = char *questions[] =
{ {
"ProAudioSpectrum 16 support", "ProAudioSpectrum 16 support",
"SoundBlaster (SB, SBPro, SB16, clones) support", "Sound Blaster (SB, SBPro, SB16, clones) support",
"Generic OPL2/OPL3 FM synthesizer support", "Generic OPL2/OPL3 FM synthesizer support",
"Gravis Ultrasound support", "Gravis Ultrasound support",
"MPU-401 support (NOT for SB16)", "MPU-401 support (NOT for SB16)",
...@@ -157,7 +157,7 @@ char *questions[] = ...@@ -157,7 +157,7 @@ char *questions[] =
"16 bit sampling option of GUS (_NOT_ GUS MAX)", "16 bit sampling option of GUS (_NOT_ GUS MAX)",
"GUS MAX support", "GUS MAX support",
"Microsoft Sound System support", "Microsoft Sound System support",
"Ensoniq Soundscape support", "Ensoniq SoundScape support",
"MediaTrix AudioTrix Pro support", "MediaTrix AudioTrix Pro support",
"Support for MAD16 and/or Mozart based cards", "Support for MAD16 and/or Mozart based cards",
"Support for Crystal CS4232 based (PnP) cards", "Support for Crystal CS4232 based (PnP) cards",
...@@ -183,10 +183,10 @@ char *help[] = ...@@ -183,10 +183,10 @@ char *help[] =
"you have some other card made by MediaVision or Logitech as\n" "you have some other card made by MediaVision or Logitech as\n"
"they are not PAS16 compatible.\n", "they are not PAS16 compatible.\n",
"Enable this if you have an original SoundBlaster card made by\n" "Enable this if you have an original Sound Blaster card made by\n"
"Creative Labs or a 100%% hardware compatible clone. For an\n" "Creative Labs or a 100%% hardware compatible clone. For an\n"
"unknown card you may want to try this if it claims to be\n" "unknown card you may want to try this if it claims to be\n"
"SoundBlaster compatible.\n", "Sound Blaster compatible.\n",
"Enable this option if your sound card has a Yamaha OPL2 or OPL3\n" "Enable this option if your sound card has a Yamaha OPL2 or OPL3\n"
"FM synthesizer chip.\n", "FM synthesizer chip.\n",
...@@ -219,7 +219,7 @@ char *help[] = ...@@ -219,7 +219,7 @@ char *help[] =
"card made by Microsoft or the Aztech SG 16 Pro or NX16 Pro.\n", "card made by Microsoft or the Aztech SG 16 Pro or NX16 Pro.\n",
"Enable this if you have a sound card based on the Ensoniq\n" "Enable this if you have a sound card based on the Ensoniq\n"
"Soundscape chipset. Such cards are being manufactured by Ensoniq,\n" "SoundScape chipset. Such cards are being manufactured by Ensoniq,\n"
"Spea and Reveal (Reveal makes other cards as well).\n", "Spea and Reveal (Reveal makes other cards as well).\n",
"Enable this option if you have the AudioTrix Pro sound card\n" "Enable this option if you have the AudioTrix Pro sound card\n"
...@@ -240,10 +240,10 @@ char *help[] = ...@@ -240,10 +240,10 @@ char *help[] =
"Use this option to enable experimental support for cards that\n" "Use this option to enable experimental support for cards that\n"
"use the Plug and Play protocol.\n", "use the Plug and Play protocol.\n",
"Enable this option if your card is a SoundBlaster Pro or\n" "Enable this option if your card is a Sound Blaster Pro or\n"
"SoundBlaster 16. It also works with many SoundBlaster Pro clones.\n", "Sound Blaster 16. It also works with many Sound Blaster Pro clones.\n",
"Enable this if you have a SoundBlaster 16, including the AWE32.\n", "Enable this if you have a Sound Blaster 16, including the AWE32.\n",
"Enable this if you have an Audio Excel DSP16 card. See the file\n" "Enable this if you have an Audio Excel DSP16 card. See the file\n"
"Readme.aedsp16 for more information.\n", "Readme.aedsp16 for more information.\n",
...@@ -748,19 +748,19 @@ ask_parameters (void) ...@@ -748,19 +748,19 @@ ask_parameters (void)
"Check from manual of the card"); "Check from manual of the card");
ask_int_choice (B (OPT_SB), "SBC_IRQ", ask_int_choice (B (OPT_SB), "SBC_IRQ",
"SoundBlaster IRQ", "Sound Blaster IRQ",
FMT_INT, FMT_INT,
7, 7,
"Check from manual of the card"); "Check from manual of the card");
ask_int_choice (B (OPT_SB), "SBC_DMA", ask_int_choice (B (OPT_SB), "SBC_DMA",
"SoundBlaster DMA", "Sound Blaster DMA",
FMT_INT, FMT_INT,
1, 1,
"0, 1 or 3"); "0, 1 or 3");
ask_int_choice (B (OPT_SB), "SB_DMA2", ask_int_choice (B (OPT_SB), "SB_DMA2",
"SoundBlaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW)", "Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW)",
FMT_INT, FMT_INT,
5, 5,
"5, 6 or 7 (use 1 for 8 bit cards)"); "5, 6 or 7 (use 1 for 8 bit cards)");
...@@ -775,7 +775,7 @@ ask_parameters (void) ...@@ -775,7 +775,7 @@ ask_parameters (void)
"SB MPU401 IRQ (Jazz16, SM Wave and ES1688)", "SB MPU401 IRQ (Jazz16, SM Wave and ES1688)",
FMT_INT, FMT_INT,
-1, -1,
"Check from manual of the card"); "Use -1 with SB16");
ask_int_choice (B (OPT_PAS), "PAS_IRQ", ask_int_choice (B (OPT_PAS), "PAS_IRQ",
"PAS16 IRQ", "PAS16 IRQ",
...@@ -944,31 +944,31 @@ ask_parameters (void) ...@@ -944,31 +944,31 @@ ask_parameters (void)
"0, 1 or 3"); "0, 1 or 3");
ask_int_choice (B (OPT_SSCAPE), "SSCAPE_BASE", ask_int_choice (B (OPT_SSCAPE), "SSCAPE_BASE",
"Soundscape MIDI I/O base", "SoundScape MIDI I/O base",
FMT_HEX, FMT_HEX,
0x330, 0x330,
"320, 330, 340 or 350"); "320, 330, 340 or 350");
ask_int_choice (B (OPT_SSCAPE), "SSCAPE_IRQ", ask_int_choice (B (OPT_SSCAPE), "SSCAPE_IRQ",
"Soundscape MIDI IRQ", "SoundScape MIDI IRQ",
FMT_INT, FMT_INT,
9, 9,
""); "");
ask_int_choice (B (OPT_SSCAPE), "SSCAPE_DMA", ask_int_choice (B (OPT_SSCAPE), "SSCAPE_DMA",
"Soundscape initialization DMA", "SoundScape initialization DMA",
FMT_INT, FMT_INT,
3, 3,
"0, 1 or 3"); "0, 1 or 3");
ask_int_choice (B (OPT_SSCAPE), "SSCAPE_MSS_BASE", ask_int_choice (B (OPT_SSCAPE), "SSCAPE_MSS_BASE",
"Soundscape audio I/O base", "SoundScape audio I/O base",
FMT_HEX, FMT_HEX,
0x534, 0x534,
"534, 608, E84 or F44"); "534, 608, E84 or F44");
ask_int_choice (B (OPT_SSCAPE), "SSCAPE_MSS_IRQ", ask_int_choice (B (OPT_SSCAPE), "SSCAPE_MSS_IRQ",
"Soundscape audio IRQ", "SoundScape audio IRQ",
FMT_INT, FMT_INT,
11, 11,
"7, 9, 10 or 11"); "7, 9, 10 or 11");
...@@ -1365,10 +1365,10 @@ main (int argc, char *argv[]) ...@@ -1365,10 +1365,10 @@ main (int argc, char *argv[])
{ {
if (think_positively ( if (think_positively (
"Do you want support for the Audio Excel SoundBlaster Pro mode", "Do you want support for the Audio Excel Sound Blaster Pro mode",
1, 1,
"Enable this option if you want the Audio Excel sound card to operate\n" "Enable this option if you want the Audio Excel sound card to operate\n"
"in SoundBlaster Pro mode.\n")) "in Sound Blaster Pro mode.\n"))
{ {
printf ("#define AEDSP16_SBPRO\n"); printf ("#define AEDSP16_SBPRO\n");
sel1 = 1; sel1 = 1;
...@@ -1403,7 +1403,7 @@ main (int argc, char *argv[]) ...@@ -1403,7 +1403,7 @@ main (int argc, char *argv[])
{ {
genld_again: genld_again:
if (think_positively ("Do you wish to include an LD file", 1, if (think_positively ("Do you wish to include an LD file", 1,
"If you want to emulate the SoundBlaster card and you have a DSPxxx.LD\n" "If you want to emulate the Sound Blaster card and you have a DSPxxx.LD\n"
"file then you must include the LD in the kernel.\n")) "file then you must include the LD in the kernel.\n"))
{ {
char path[512]; char path[512];
...@@ -1430,7 +1430,7 @@ main (int argc, char *argv[]) ...@@ -1430,7 +1430,7 @@ main (int argc, char *argv[])
{ {
FILE *sf = fopen ("synth-ld.h", "w"); FILE *sf = fopen ("synth-ld.h", "w");
fprintf (sf, "/* automaticaly generated by configure */\n"); fprintf (sf, "/* automatically generated by configure */\n");
fprintf (sf, "unsigned char pss_synth[1];\n" fprintf (sf, "unsigned char pss_synth[1];\n"
"#define pss_synthLen 0\n"); "#define pss_synthLen 0\n");
fclose (sf); fclose (sf);
...@@ -1443,7 +1443,7 @@ main (int argc, char *argv[]) ...@@ -1443,7 +1443,7 @@ main (int argc, char *argv[])
if (think_positively ("Do you want to include TRXPRO.HEX in your kernel", if (think_positively ("Do you want to include TRXPRO.HEX in your kernel",
1, 1,
"The MediaTrix AudioTrix Pro has an onboard microcontroller which\n" "The MediaTrix AudioTrix Pro has an on-board microcontroller which\n"
"needs to be initialized by downloading the code from the file TRXPRO.HEX\n" "needs to be initialized by downloading the code from the file TRXPRO.HEX\n"
"in the DOS driver directory. If you don't have the TRXPRO.HEX file handy\n" "in the DOS driver directory. If you don't have the TRXPRO.HEX file handy\n"
"you may skip this step. However, the SB and MPU-401 modes of AudioTrix\n" "you may skip this step. However, the SB and MPU-401 modes of AudioTrix\n"
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* a PnP compatible chip which contains a CS4231A codec, SB emulation, * a PnP compatible chip which contains a CS4231A codec, SB emulation,
* a MPU401 compatible MIDI port, joystick and synthesizer and IDE CD-ROM * a MPU401 compatible MIDI port, joystick and synthesizer and IDE CD-ROM
* interfaces. This is just a temporary driver until full PnP support * interfaces. This is just a temporary driver until full PnP support
* gets inplemented. Just the WSS codec, FM synth and the MIDI ports are * gets implemented. Just the WSS codec, FM synth and the MIDI ports are
* supported. Other interfaces are left uninitialized. * supported. Other interfaces are left uninitialized.
*/ */
/* /*
...@@ -142,14 +142,14 @@ probe_cs4232 (struct address_info *hw_config) ...@@ -142,14 +142,14 @@ probe_cs4232 (struct address_info *hw_config)
*/ */
CS_OUT2 (0x15, 0x00); /* Select logical device 0 (WSS/SB/FM) */ CS_OUT2 (0x15, 0x00); /* Select logical device 0 (WSS/SB/FM) */
CS_OUT3 (0x47, (base >> 8) & 0xff, base & 0xff); /* WSSbase */ CS_OUT3 (0x47, (base >> 8) & 0xff, base & 0xff); /* WSS base */
if (check_region (0x388, 4)) /* Not free */ if (check_region (0x388, 4)) /* Not free */
CS_OUT3 (0x48, 0x00, 0x00) /* FMbase off */ CS_OUT3 (0x48, 0x00, 0x00) /* FM base off */
else else
CS_OUT3 (0x48, 0x03, 0x88); /* FMbase 0x388 */ CS_OUT3 (0x48, 0x03, 0x88); /* FM base 0x388 */
CS_OUT3 (0x42, 0x00, 0x00); /* SBbase off */ CS_OUT3 (0x42, 0x00, 0x00); /* SB base off */
CS_OUT2 (0x22, irq); /* SB+WSS IRQ */ CS_OUT2 (0x22, irq); /* SB+WSS IRQ */
CS_OUT2 (0x2a, dma1); /* SB+WSS DMA */ CS_OUT2 (0x2a, dma1); /* SB+WSS DMA */
...@@ -186,7 +186,7 @@ probe_cs4232 (struct address_info *hw_config) ...@@ -186,7 +186,7 @@ probe_cs4232 (struct address_info *hw_config)
if (mpu_base != 0 && mpu_irq != 0) if (mpu_base != 0 && mpu_irq != 0)
{ {
CS_OUT2 (0x15, 0x03); /* Select logical device 3 (MPU) */ CS_OUT2 (0x15, 0x03); /* Select logical device 3 (MPU) */
CS_OUT3 (0x47, (mpu_base >> 8) & 0xff, mpu_base & 0xff); /* MPUbase */ CS_OUT3 (0x47, (mpu_base >> 8) & 0xff, mpu_base & 0xff); /* MPU base */
CS_OUT2 (0x22, mpu_irq); /* MPU IRQ */ CS_OUT2 (0x22, mpu_irq); /* MPU IRQ */
CS_OUT2 (0x33, 0x01); /* Activate logical dev 3 */ CS_OUT2 (0x33, 0x01); /* Activate logical dev 3 */
} }
......
...@@ -34,7 +34,7 @@ extern int sound_started; ...@@ -34,7 +34,7 @@ extern int sound_started;
struct driver_info { struct driver_info {
char *driver_id; char *driver_id;
int card_subtype; /* Driver spesific. Usually 0 */ int card_subtype; /* Driver specific. Usually 0 */
int card_type; /* From soundcard.h */ int card_type; /* From soundcard.h */
char *name; char *name;
void (*attach) (struct address_info *hw_config); void (*attach) (struct address_info *hw_config);
...@@ -329,7 +329,7 @@ struct sound_timer_operations { ...@@ -329,7 +329,7 @@ struct sound_timer_operations {
{"MIDI6850", 0, SNDCARD_UART6850,"6860 UART Midi", attach_uart6850, probe_uart6850, unload_uart6850}, {"MIDI6850", 0, SNDCARD_UART6850,"6860 UART Midi", attach_uart6850, probe_uart6850, unload_uart6850},
#endif #endif
#ifdef CONFIG_SB #ifdef CONFIG_SB
{"SBLAST", 0, SNDCARD_SB, "SoundBlaster", attach_sb_card, probe_sb, unload_sb}, {"SBLAST", 0, SNDCARD_SB, "Sound Blaster", attach_sb_card, probe_sb, unload_sb},
#ifdef CONFIG_MIDI #ifdef CONFIG_MIDI
{"UART401", 0, SNDCARD_UART401,"MPU-401 UART", attach_uart401, probe_uart401, unload_uart401}, {"UART401", 0, SNDCARD_UART401,"MPU-401 UART", attach_uart401, probe_uart401, unload_uart401},
#endif #endif
...@@ -342,13 +342,13 @@ struct sound_timer_operations { ...@@ -342,13 +342,13 @@ struct sound_timer_operations {
{"GUSPNP", 1, SNDCARD_GUSPNP, "GUS PnP", attach_gus_card, probe_gus, unload_gus}, {"GUSPNP", 1, SNDCARD_GUSPNP, "GUS PnP", attach_gus_card, probe_gus, unload_gus},
#endif #endif
#ifdef CONFIG_SSCAPE #ifdef CONFIG_SSCAPE
{"SSCAPE", 0, SNDCARD_SSCAPE, "Ensoniq Soundscape", attach_sscape, probe_sscape, unload_sscape}, {"SSCAPE", 0, SNDCARD_SSCAPE, "Ensoniq SoundScape", attach_sscape, probe_sscape, unload_sscape},
{"SSCAPEMSS", 0, SNDCARD_SSCAPE_MSS, "MS Sound System (SoundScape)", attach_ss_ms_sound, probe_ss_ms_sound, unload_ss_ms_sound}, {"SSCAPEMSS", 0, SNDCARD_SSCAPE_MSS, "MS Sound System (SoundScape)", attach_ss_ms_sound, probe_ss_ms_sound, unload_ss_ms_sound},
#endif #endif
#ifdef CONFIG_TRIX #ifdef CONFIG_TRIX
{"TRXPRO", 0, SNDCARD_TRXPRO, "MediaTriX AudioTriX Pro", attach_trix_wss, probe_trix_wss, unload_trix_wss}, {"TRXPRO", 0, SNDCARD_TRXPRO, "MediaTrix AudioTrix Pro", attach_trix_wss, probe_trix_wss, unload_trix_wss},
{"TRXPROSB", 0, SNDCARD_TRXPRO_SB, "AudioTriX (SB mode)", attach_trix_sb, probe_trix_sb, unload_trix_sb}, {"TRXPROSB", 0, SNDCARD_TRXPRO_SB, "AudioTrix (SB mode)", attach_trix_sb, probe_trix_sb, unload_trix_sb},
{"TRXPROMPU", 0, SNDCARD_TRXPRO_MPU, "AudioTriX MIDI", attach_trix_mpu, probe_trix_mpu, unload_trix_mpu}, {"TRXPROMPU", 0, SNDCARD_TRXPRO_MPU, "AudioTrix MIDI", attach_trix_mpu, probe_trix_mpu, unload_trix_mpu},
#endif #endif
{NULL, 0, 0, "*?*", NULL, NULL, NULL} {NULL, 0, 0, "*?*", NULL, NULL, NULL}
}; };
...@@ -531,7 +531,7 @@ void sound_setup (char *str, int *ints); ...@@ -531,7 +531,7 @@ void sound_setup (char *str, int *ints);
int sound_alloc_dmap (int dev, struct dma_buffparms *dmap, int chan); int sound_alloc_dmap (int dev, struct dma_buffparms *dmap, int chan);
void sound_free_dmap (int dev, struct dma_buffparms *dmap); void sound_free_dmap (int dev, struct dma_buffparms *dmap);
extern int soud_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc *info); extern int sound_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc *info);
void install_pnp_sounddrv(struct pnp_sounddev *drv); void install_pnp_sounddrv(struct pnp_sounddev *drv);
int sndtable_probe (int unit, struct address_info *hw_config); int sndtable_probe (int unit, struct address_info *hw_config);
int sndtable_init_card (int unit, struct address_info *hw_config); int sndtable_init_card (int unit, struct address_info *hw_config);
......
...@@ -83,7 +83,7 @@ reorganize_buffers (int dev, struct dma_buffparms *dmap, int recording) ...@@ -83,7 +83,7 @@ reorganize_buffers (int dev, struct dma_buffparms *dmap, int recording)
sz /= 8; /* #bits -> #bytes */ sz /= 8; /* #bits -> #bytes */
/* /*
* Compute a buffer size for time not exeeding 1 second. * Compute a buffer size for time not exceeding 1 second.
* Usually this algorithm gives a buffer size for 0.5 to 1.0 seconds * Usually this algorithm gives a buffer size for 0.5 to 1.0 seconds
* of sound (using the current speed, sample size and #channels). * of sound (using the current speed, sample size and #channels).
*/ */
...@@ -120,8 +120,8 @@ reorganize_buffers (int dev, struct dma_buffparms *dmap, int recording) ...@@ -120,8 +120,8 @@ reorganize_buffers (int dev, struct dma_buffparms *dmap, int recording)
else else
{ {
/* /*
* The process has specified the buffer sice with SNDCTL_DSP_SETFRAGMENT or * The process has specified the buffer size with SNDCTL_DSP_SETFRAGMENT or
* the buffer sice computation has already been done. * the buffer size computation has already been done.
*/ */
if (dmap->fragment_size > (audio_devs[dev]->buffsize / 2)) if (dmap->fragment_size > (audio_devs[dev]->buffsize / 2))
dmap->fragment_size = (audio_devs[dev]->buffsize / 2); dmap->fragment_size = (audio_devs[dev]->buffsize / 2);
...@@ -661,7 +661,7 @@ dma_subdivide (int dev, struct dma_buffparms *dmap, caddr_t arg, int fact) ...@@ -661,7 +661,7 @@ dma_subdivide (int dev, struct dma_buffparms *dmap, caddr_t arg, int fact)
} }
if (dmap->subdivision != 0 || if (dmap->subdivision != 0 ||
dmap->fragment_size) /* Loo late to change */ dmap->fragment_size) /* Too late to change */
return -(EINVAL); return -(EINVAL);
if (fact > MAX_REALTIME_FACTOR) if (fact > MAX_REALTIME_FACTOR)
...@@ -683,7 +683,7 @@ dma_set_fragment (int dev, struct dma_buffparms *dmap, caddr_t arg, int fact) ...@@ -683,7 +683,7 @@ dma_set_fragment (int dev, struct dma_buffparms *dmap, caddr_t arg, int fact)
return -(EIO); return -(EIO);
if (dmap->subdivision != 0 || if (dmap->subdivision != 0 ||
dmap->fragment_size) /* Loo late to change */ dmap->fragment_size) /* Too late to change */
return -(EINVAL); return -(EINVAL);
bytes = fact & 0xffff; bytes = fact & 0xffff;
...@@ -1273,7 +1273,7 @@ DMAbuf_start_output (int dev, int buff_no, int l) ...@@ -1273,7 +1273,7 @@ DMAbuf_start_output (int dev, int buff_no, int l)
restart = 1; restart = 1;
/* /*
* Bypass buffering if using mmaped access * Bypass buffering if using mmapped access
*/ */
if (audio_devs[dev]->dmap_out->mapping_flags & DMA_MAP_MAPPED) if (audio_devs[dev]->dmap_out->mapping_flags & DMA_MAP_MAPPED)
......
...@@ -57,7 +57,7 @@ for more details. ...@@ -57,7 +57,7 @@ for more details.
to cut data only at sample sizes, buffer size is now to cut data only at sample sizes, buffer size is now
a kernel runtime option, implemented fsync() & several a kernel runtime option, implemented fsync() & several
minor improvements minor improvements
++Guenther: useful hints and bugfixes, cross-checked it for ++Guenther: useful hints and bug fixes, cross-checked it for
Falcons Falcons
1996/3/9 ++geert: support added for Amiga, A-law, 16-bit little endian. 1996/3/9 ++geert: support added for Amiga, A-law, 16-bit little endian.
...@@ -99,7 +99,7 @@ extern void atari_microwire_cmd(int cmd); ...@@ -99,7 +99,7 @@ extern void atari_microwire_cmd(int cmd);
#ifdef CONFIG_AMIGA #ifdef CONFIG_AMIGA
/* /*
* The minimum period for audio depends on htotal (for OCS/ECS/AGA) * The minimum period for audio depends on total (for OCS/ECS/AGA)
* (Imported from arch/m68k/amiga/amisound.c) * (Imported from arch/m68k/amiga/amisound.c)
*/ */
...@@ -307,7 +307,7 @@ static char alaw2dma16[] = { ...@@ -307,7 +307,7 @@ static char alaw2dma16[] = {
#ifdef HAS_14BIT_TABLES #ifdef HAS_14BIT_TABLES
/* 14 bit mu-law (lsb) */ /* 14 bit mu-law (LSB) */
static char alaw2dma14l[] = { static char alaw2dma14l[] = {
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
...@@ -344,7 +344,7 @@ static char alaw2dma14l[] = { ...@@ -344,7 +344,7 @@ static char alaw2dma14l[] = {
14, 12, 10, 8, 6, 4, 2, 0 14, 12, 10, 8, 6, 4, 2, 0
}; };
/* 14 bit A-law (lsb) */ /* 14 bit A-law (LSB) */
static char alaw2dma14l[] = { static char alaw2dma14l[] = {
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
......
...@@ -81,7 +81,7 @@ gus_adagio_vol (int vel, int mainv, int xpn, int voicev) ...@@ -81,7 +81,7 @@ gus_adagio_vol (int vel, int mainv, int xpn, int voicev)
return ((15 << 8) | 255); return ((15 << 8) | 255);
/* /*
* Convert to gus's logarithmic form with 4 bit exponent i and 8 bit * Convert to GUS's logarithmic form with 4 bit exponent i and 8 bit
* mantissa m. * mantissa m.
*/ */
n = x; n = x;
......
...@@ -1666,7 +1666,7 @@ guswave_open (int dev, int mode) ...@@ -1666,7 +1666,7 @@ guswave_open (int dev, int mode)
if ((err = DMAbuf_open_dma (gus_devnum)) < 0) if ((err = DMAbuf_open_dma (gus_devnum)) < 0)
{ {
/* printk ("GUS: Loading saples without DMA\n"); */ /* printk ("GUS: Loading samples without DMA\n"); */
gus_no_dma = 1; /* Upload samples using PIO */ gus_no_dma = 1; /* Upload samples using PIO */
} }
else else
...@@ -1788,7 +1788,7 @@ guswave_load_patch (int dev, int format, const char *addr, ...@@ -1788,7 +1788,7 @@ guswave_load_patch (int dev, int format, const char *addr,
if ((free_mem_ptr / GUS_BANK_SIZE) != if ((free_mem_ptr / GUS_BANK_SIZE) !=
((free_mem_ptr + patch.len) / GUS_BANK_SIZE)) ((free_mem_ptr + patch.len) / GUS_BANK_SIZE))
{ {
unsigned long tmp_mem = /* Aling to 256K */ unsigned long tmp_mem = /* Align to 256K */
((free_mem_ptr / GUS_BANK_SIZE) + 1) * GUS_BANK_SIZE; ((free_mem_ptr / GUS_BANK_SIZE) + 1) * GUS_BANK_SIZE;
if ((tmp_mem + patch.len) > gus_mem_size) if ((tmp_mem + patch.len) > gus_mem_size)
...@@ -2514,7 +2514,7 @@ gus_transfer_output_block (int dev, unsigned long buf, ...@@ -2514,7 +2514,7 @@ gus_transfer_output_block (int dev, unsigned long buf,
if (audio_devs[dev]->dmachan1 > 3) if (audio_devs[dev]->dmachan1 > 3)
dma_command |= 0x04; /* 16 bit DMA channel */ dma_command |= 0x04; /* 16 bit DMA channel */
gus_write8 (0x41, dma_command); /* Kickstart */ gus_write8 (0x41, dma_command); /* Kick start */
if (chn == (gus_audio_channels - 1)) /* Last channel */ if (chn == (gus_audio_channels - 1)) /* Last channel */
{ {
...@@ -2715,7 +2715,7 @@ guswave_setup_voice (int dev, int voice, int chn) ...@@ -2715,7 +2715,7 @@ guswave_setup_voice (int dev, int voice, int chn)
guswave_set_instr (dev, voice, info->pgm_num); guswave_set_instr (dev, voice, info->pgm_num);
voices[voice].expression_vol = voices[voice].expression_vol =
info->controllers[CTL_EXPRESSION]; /* Just msb */ info->controllers[CTL_EXPRESSION]; /* Just MSB */
voices[voice].main_vol = voices[voice].main_vol =
(info->controllers[CTL_MAIN_VOLUME] * 100) / (unsigned) 128; (info->controllers[CTL_MAIN_VOLUME] * 100) / (unsigned) 128;
voices[voice].panning = voices[voice].panning =
...@@ -2862,7 +2862,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec) ...@@ -2862,7 +2862,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec)
*/ */
offs += sample_ptrs[sample]; /* offs += sample_ptrs[sample]; /*
* Begin offsess + offset to DRAM * Begin offsets + offset to DRAM
*/ */
for (n = 0; n < l; n++) for (n = 0; n < l; n++)
...@@ -2907,7 +2907,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec) ...@@ -2907,7 +2907,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec)
*/ */
offs += sample_ptrs[sample]; /* offs += sample_ptrs[sample]; /*
* Begin offsess + offset to DRAM * Begin offsets + offset to DRAM
*/ */
for (n = 0; n < l; n++) for (n = 0; n < l; n++)
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
#undef DEBUG /* if defined, produce a verbose report via syslog */ #undef DEBUG /* if defined, produce a verbose report via syslog */
int aci_port = 0x354; /* as determined by bit 4 in the Opti 929 MC4 register */ int aci_port = 0x354; /* as determined by bit 4 in the OPTi 929 MC4 register */
unsigned char aci_idcode[2] = {0, 0}; /* manufacturer and product ID */ unsigned char aci_idcode[2] = {0, 0}; /* manufacturer and product ID */
unsigned char aci_version = 0; /* ACI firmware version */ unsigned char aci_version = 0; /* ACI firmware version */
int aci_solo; /* status bit of the card that can't be * int aci_solo; /* status bit of the card that can't be *
...@@ -129,7 +129,7 @@ static int read_general_status(void) ...@@ -129,7 +129,7 @@ static int read_general_status(void)
/* /*
* The four ACI command types (implied, write, read and indexed) can * The four ACI command types (implied, write, read and indexed) can
* be sent to the microcontroller using the following four functions. * be sent to the microcontroller using the following four functions.
* If a problem occured, they return -1. * If a problem occurred, they return -1.
*/ */
static int implied_cmd(unsigned char opcode) static int implied_cmd(unsigned char opcode)
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
* OPTi 82C929 MAD16 Pro * OPTi 82C929 MAD16 Pro
* OPTi 82C930 * OPTi 82C930
* *
* These audio interface chips don't prduce sound themselves. They just * These audio interface chips don't produce sound themselves. They just
* connect some other components (OPL-[234] and a WSS compatible codec) * connect some other components (OPL-[234] and a WSS compatible codec)
* to the PC bus and perform I/O, DMA and IRQ address decoding. There is * to the PC bus and perform I/O, DMA and IRQ address decoding. There is
* also a UART for the MPU-401 mode (not 82C928/Mozart). * also a UART for the MPU-401 mode (not 82C928/Mozart).
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* 0x00 - none * 0x00 - none
* 0x02 - Sony 31A * 0x02 - Sony 31A
* 0x04 - Mitsumi * 0x04 - Mitsumi
* 0x06 - Panasonic (type "LaserMate", not "SoundBlaster") * 0x06 - Panasonic (type "LaserMate", not "Sound Blaster")
* 0x08 - Secondary IDE (address 0x170) * 0x08 - Secondary IDE (address 0x170)
* 0x0a - Primary IDE (address 0x1F0) * 0x0a - Primary IDE (address 0x1F0)
* *
...@@ -83,8 +83,8 @@ static int already_initialized = 0; ...@@ -83,8 +83,8 @@ static int already_initialized = 0;
*/ */
#define MC0_PORT 0xf8c /* Dummy port */ #define MC0_PORT 0xf8c /* Dummy port */
#define MC1_PORT 0xf8d /* SB address, CDROM interface type, joystick */ #define MC1_PORT 0xf8d /* SB address, CD-ROM interface type, joystick */
#define MC2_PORT 0xf8e /* CDROM address, IRQ, DMA, plus OPL4 bit */ #define MC2_PORT 0xf8e /* CD-ROM address, IRQ, DMA, plus OPL4 bit */
#define MC3_PORT 0xf8f #define MC3_PORT 0xf8f
#define PASSWD_REG 0xf8f #define PASSWD_REG 0xf8f
#define MC4_PORT 0xf90 #define MC4_PORT 0xf90
...@@ -200,14 +200,14 @@ detect_c930 (void) ...@@ -200,14 +200,14 @@ detect_c930 (void)
mad_write (MC7_PORT, 0); mad_write (MC7_PORT, 0);
if ((tmp = mad_read (MC7_PORT)) != 0) if ((tmp = mad_read (MC7_PORT)) != 0)
{ {
DDB (printk ("MC7 not writeable (%x)\n", tmp)); DDB (printk ("MC7 not writable (%x)\n", tmp));
return 0; return 0;
} }
mad_write (MC7_PORT, 0xcb); mad_write (MC7_PORT, 0xcb);
if ((tmp = mad_read (MC7_PORT)) != 0xcb) if ((tmp = mad_read (MC7_PORT)) != 0xcb)
{ {
DDB (printk ("MC7 not writeable2 (%x)\n", tmp)); DDB (printk ("MC7 not writable2 (%x)\n", tmp));
return 0; return 0;
} }
...@@ -248,7 +248,7 @@ detect_mad16 (void) ...@@ -248,7 +248,7 @@ detect_mad16 (void)
return 0; return 0;
} }
mad_write (MC1_PORT, tmp ^ 0x80); /* Togge a bit */ mad_write (MC1_PORT, tmp ^ 0x80); /* Toggle a bit */
if ((tmp2 = mad_read (MC1_PORT)) != (tmp ^ 0x80)) /* Compare the bit */ if ((tmp2 = mad_read (MC1_PORT)) != (tmp ^ 0x80)) /* Compare the bit */
{ {
mad_write (MC1_PORT, tmp); /* Restore */ mad_write (MC1_PORT, tmp); /* Restore */
...@@ -365,7 +365,7 @@ init_c930 (struct address_info *hw_config) ...@@ -365,7 +365,7 @@ init_c930 (struct address_info *hw_config)
return 0; return 0;
/* /*
* A temporarary kludge which drops the device back to mode1. * A temporary kludge which drops the device back to mode1.
* This removes problems with interrupts but disables full duplex. * This removes problems with interrupts but disables full duplex.
* A better solution should be introduced later. * A better solution should be introduced later.
*/ */
......
...@@ -181,7 +181,7 @@ download_code (void) ...@@ -181,7 +181,7 @@ download_code (void)
if (c != 0x80) if (c != 0x80)
{ {
printk ("Doanload not acknowledged\n"); printk ("Download not acknowledged\n");
return 0; return 0;
} }
else if (!(lines++ % 10)) else if (!(lines++ % 10))
...@@ -452,7 +452,7 @@ attach_maui (struct address_info *hw_config) ...@@ -452,7 +452,7 @@ attach_maui (struct address_info *hw_config)
struct synth_operations *synth; struct synth_operations *synth;
/* /*
* Intercept patch loading calls so that they canbe handled * Intercept patch loading calls so that they can be handled
* by the Maui driver. * by the Maui driver.
*/ */
......
...@@ -728,7 +728,7 @@ midi_synth_send_sysex (int dev, unsigned char *bytes, int len) ...@@ -728,7 +728,7 @@ midi_synth_send_sysex (int dev, unsigned char *bytes, int len)
if (!midi_devs[orig_dev]->putc (orig_dev, bytes[i])) if (!midi_devs[orig_dev]->putc (orig_dev, bytes[i]))
{ {
/* /*
* Hardware leve buffer is full. Abort the sysex message. * Hardware level buffer is full. Abort the sysex message.
*/ */
int timeout = 0; int timeout = 0;
......
...@@ -506,7 +506,7 @@ mpu401_open (int dev, int mode, ...@@ -506,7 +506,7 @@ mpu401_open (int dev, int mode,
* Verify that the device is really running. * Verify that the device is really running.
* Some devices (such as Ensoniq SoundScape don't * Some devices (such as Ensoniq SoundScape don't
* work before the on board processor (OBP) is initialized * work before the on board processor (OBP) is initialized
* by downloadin it's microcode. * by downloading its microcode.
*/ */
if (!devc->initialized) if (!devc->initialized)
...@@ -651,7 +651,7 @@ mpu401_command (int dev, mpu_command_rec * cmd) ...@@ -651,7 +651,7 @@ mpu401_command (int dev, mpu_command_rec * cmd)
ok = 1; ok = 1;
} }
else else
{ /* Device is not currently open. Use simplier method */ { /* Device is not currently open. Use simpler method */
if (read_data (devc) == MPU_ACK) if (read_data (devc) == MPU_ACK)
ok = 1; ok = 1;
} }
...@@ -878,7 +878,7 @@ mpu_synth_open (int dev, int mode) ...@@ -878,7 +878,7 @@ mpu_synth_open (int dev, int mode)
* Verify that the device is really running. * Verify that the device is really running.
* Some devices (such as Ensoniq SoundScape don't * Some devices (such as Ensoniq SoundScape don't
* work before the on board processor (OBP) is initialized * work before the on board processor (OBP) is initialized
* by downloadin it's microcode. * by downloading its microcode.
*/ */
if (!devc->initialized) if (!devc->initialized)
...@@ -1334,7 +1334,7 @@ clocks2ticks (unsigned long clocks) ...@@ -1334,7 +1334,7 @@ clocks2ticks (unsigned long clocks)
/* /*
* The MPU-401 supports just a limited set of possible timebase values. * The MPU-401 supports just a limited set of possible timebase values.
* Since the applications require more choices, the driver has to * 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. * actual timebases.
*/ */
......
...@@ -158,7 +158,7 @@ int ...@@ -158,7 +158,7 @@ int
opl3_detect (int ioaddr, int *osp) opl3_detect (int ioaddr, int *osp)
{ {
/* /*
* This function returns 1 if the FM chicp is present at the given I/O port * This function returns 1 if the FM chip is present at the given I/O port
* The detection algorithm plays with the timer built in the FM chip and * The detection algorithm plays with the timer built in the FM chip and
* looks for a change in the status register. * looks for a change in the status register.
* *
...@@ -238,7 +238,7 @@ opl3_detect (int ioaddr, int *osp) ...@@ -238,7 +238,7 @@ opl3_detect (int ioaddr, int *osp)
} }
/* /*
* There is a FM chicp in this address. Detect the type (OPL2 to OPL4) * There is a FM chip in this address. Detect the type (OPL2 to OPL4)
*/ */
if (signature == 0x06 && !force_opl3_mode) /* OPL2 */ if (signature == 0x06 && !force_opl3_mode) /* OPL2 */
...@@ -252,7 +252,7 @@ opl3_detect (int ioaddr, int *osp) ...@@ -252,7 +252,7 @@ opl3_detect (int ioaddr, int *osp)
detected_model = 3; detected_model = 3;
/* /*
* Detect availability of OPL4 (_experimental_). Works propably * Detect availability of OPL4 (_experimental_). Works probably
* only after a cold boot. In addition the OPL4 port * only after a cold boot. In addition the OPL4 port
* of the chip may not be connected to the PC bus at all. * of the chip may not be connected to the PC bus at all.
*/ */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* *
* The percussive mode is implemented in the left side only. * The percussive mode is implemented in the left side only.
* *
* With the above exeptions the both sides can be operated independently. * With the above exceptions the both sides can be operated independently.
* *
* A 4 OP voice can be created by setting the corresponding * A 4 OP voice can be created by setting the corresponding
* bit at offset 4 of the right side. * bit at offset 4 of the right side.
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
* register offset). * register offset).
* *
* For 4 OP voices the connection bit is used in the * For 4 OP voices the connection bit is used in the
* both halfs (gives 4 ways to connect the operators). * both halves (gives 4 ways to connect the operators).
*/ */
#define FEEDBACK_CONNECTION 0xc0 #define FEEDBACK_CONNECTION 0xc0
#define FEEDBACK_MASK 0x0e /* Valid just for 1st OP of a voice */ #define FEEDBACK_MASK 0x0e /* Valid just for 1st OP of a voice */
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
* In the 4 OP mode there is four possible configurations how the * In the 4 OP mode there is four possible configurations how the
* operators can be connected together (in 2 OP modes there is just * operators can be connected together (in 2 OP modes there is just
* AM or FM). The 4 OP connection mode is defined by the rightmost * AM or FM). The 4 OP connection mode is defined by the rightmost
* bit of the FEEDBACK_CONNECTION (0xC0-0xC8) on the both halfs. * bit of the FEEDBACK_CONNECTION (0xC0-0xC8) on the both halves.
* *
* First half Second half Mode * First half Second half Mode
* *
......
...@@ -25,7 +25,7 @@ static unsigned char sb_dma_bits[] = ...@@ -25,7 +25,7 @@ static unsigned char sb_dma_bits[] =
* be relative to the given base -register * be relative to the given base -register
*/ */
int translat_code; int translate_code;
static int pas_intr_mask = 0; static int pas_intr_mask = 0;
static int pas_irq = 0; static int pas_irq = 0;
static int pas_sb_base = 0; static int pas_sb_base = 0;
...@@ -46,13 +46,13 @@ extern void mix_write (unsigned char data, int ioaddr); ...@@ -46,13 +46,13 @@ extern void mix_write (unsigned char data, int ioaddr);
unsigned char unsigned char
pas_read (int ioaddr) pas_read (int ioaddr)
{ {
return inb (ioaddr ^ translat_code); return inb (ioaddr ^ translate_code);
} }
void void
pas_write (unsigned char data, int ioaddr) pas_write (unsigned char data, int ioaddr)
{ {
outb (data, ioaddr ^ translat_code); outb (data, ioaddr ^ translate_code);
} }
/******************* Begin of the Interrupt Handler ********************/ /******************* Begin of the Interrupt Handler ********************/
...@@ -284,7 +284,7 @@ detect_pas_hw (struct address_info *hw_config) ...@@ -284,7 +284,7 @@ detect_pas_hw (struct address_info *hw_config)
outb (0xBC, 0x9A01); /* Activate first board */ outb (0xBC, 0x9A01); /* Activate first board */
outb (hw_config->io_base >> 2, 0x9A01); /* Set base address */ outb (hw_config->io_base >> 2, 0x9A01); /* Set base address */
translat_code = 0x388 ^ hw_config->io_base; translate_code = 0x388 ^ hw_config->io_base;
pas_write (1, 0xBF88); /* Select one wait states */ pas_write (1, 0xBF88); /* Select one wait states */
board_id = pas_read (0x0B8B); board_id = pas_read (0x0B8B);
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define DEB(what) /* (what) */ #define DEB(what) /* (what) */
#endif #endif
extern int translat_code; extern int translate_code;
extern char pas_model; extern char pas_model;
extern int *pas_osp; extern int *pas_osp;
extern int pas_audiodev; extern int pas_audiodev;
...@@ -61,7 +61,7 @@ mix_write (unsigned char data, int ioaddr) ...@@ -61,7 +61,7 @@ mix_write (unsigned char data, int ioaddr)
if (pas_model == 4) if (pas_model == 4)
{ {
outw (data | (data << 8), (ioaddr ^ translat_code) - 1); outw (data | (data << 8), (ioaddr ^ translate_code) - 1);
outb (0x80, 0); outb (0x80, 0);
} }
else else
......
...@@ -62,7 +62,7 @@ pcm_set_speed (int arg) ...@@ -62,7 +62,7 @@ pcm_set_speed (int arg)
tmp = pas_read (0x0B8A); tmp = pas_read (0x0B8A);
/* /*
* Set anti-aliasing filters according to sample rate. You reall *NEED* * Set anti-aliasing filters according to sample rate. You really *NEED*
* to enable this feature for all normal recording unless you want to * to enable this feature for all normal recording unless you want to
* experiment with aliasing effects. * experiment with aliasing effects.
* These filters apply to the selected "recording" source. * These filters apply to the selected "recording" source.
......
/* /*
* sound/patmgr.c * sound/patmgr.c
* *
* The patch maneger interface for the /dev/sequencer * The patch manager interface for the /dev/sequencer
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
......
...@@ -260,7 +260,7 @@ pss_download_boot (pss_confdata * devc, unsigned char *block, int size, int flag ...@@ -260,7 +260,7 @@ pss_download_boot (pss_confdata * devc, unsigned char *block, int size, int flag
break; break;
else else
{ {
printk ("\nPSS: DownLoad timeout problems, byte %d=%d\n", printk ("\nPSS: Download timeout problems, byte %d=%d\n",
count, size); count, size);
return 0; return 0;
} }
...@@ -710,7 +710,7 @@ pss_coproc_ioctl (void *dev_info, unsigned int cmd, caddr_t arg, int local) ...@@ -710,7 +710,7 @@ pss_coproc_ioctl (void *dev_info, unsigned int cmd, caddr_t arg, int local)
return -(EIO); return -(EIO);
} }
if (!pss_get_dspword (devc, &tmp)) /* Read msb */ if (!pss_get_dspword (devc, &tmp)) /* Read MSB */
{ {
restore_flags (flags); restore_flags (flags);
return -(EIO); return -(EIO);
...@@ -718,7 +718,7 @@ pss_coproc_ioctl (void *dev_info, unsigned int cmd, caddr_t arg, int local) ...@@ -718,7 +718,7 @@ pss_coproc_ioctl (void *dev_info, unsigned int cmd, caddr_t arg, int local)
buf.parm1 = tmp << 8; buf.parm1 = tmp << 8;
if (!pss_get_dspword (devc, &tmp)) /* Read lsb */ if (!pss_get_dspword (devc, &tmp)) /* Read LSB */
{ {
restore_flags (flags); restore_flags (flags);
return -(EIO); return -(EIO);
...@@ -800,7 +800,7 @@ probe_pss_mss (struct address_info *hw_config) ...@@ -800,7 +800,7 @@ probe_pss_mss (struct address_info *hw_config)
/* /*
* For some reason the card returns 0xff in the WSS status register * For some reason the card returns 0xff in the WSS status register
* immediately after boot. Propably MIDI+SB emulation algorithm * immediately after boot. Probably MIDI+SB emulation algorithm
* downloaded to the ADSP2115 spends some time initializing the card. * downloaded to the ADSP2115 spends some time initializing the card.
* Let's try to wait until it finishes this task. * Let's try to wait until it finishes this task.
*/ */
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#define MDL_SBPRO 4 /* SB Pro */ #define MDL_SBPRO 4 /* SB Pro */
#define MDL_SB16 5 /* SB16/32/AWE */ #define MDL_SB16 5 /* SB16/32/AWE */
#define MDL_JAZZ 10 /* Media Vision Jazz16 */ #define MDL_JAZZ 10 /* Media Vision Jazz16 */
#define MDL_SMW 11 /* Logitech Soundman Wave (Jazz16) */ #define MDL_SMW 11 /* Logitech SoundMan Wave (Jazz16) */
#define MDL_ESS 12 /* ESS ES688 and ES1688 */ #define MDL_ESS 12 /* ESS ES688 and ES1688 */
#define MDL_AZTECH 13 /* Aztech Sound Galaxy family */ #define MDL_AZTECH 13 /* Aztech Sound Galaxy family */
......
/* /*
* sound/sb_audio.c * sound/sb_audio.c
* *
* Audio routines for SoundBlaster compatible cards. * Audio routines for Sound Blaster compatible cards.
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
...@@ -399,7 +399,7 @@ sb20_audio_trigger (int dev, int bits) ...@@ -399,7 +399,7 @@ sb20_audio_trigger (int dev, int bits)
} }
/* /*
* SB2.01 spesific speed setup * SB2.01 specific speed setup
*/ */
static int static int
...@@ -433,7 +433,7 @@ sb201_audio_set_speed (int dev, int speed) ...@@ -433,7 +433,7 @@ sb201_audio_set_speed (int dev, int speed)
} }
/* /*
* SB Pro spesific routines * SB Pro specific routines
*/ */
static int static int
...@@ -575,7 +575,7 @@ jazz16_audio_set_speed (int dev, int speed) ...@@ -575,7 +575,7 @@ jazz16_audio_set_speed (int dev, int speed)
} }
/* /*
* ESS spesific routines * ESS specific routines
*/ */
static void static void
...@@ -607,7 +607,7 @@ ess_speed (sb_devc * devc) ...@@ -607,7 +607,7 @@ ess_speed (sb_devc * devc)
* Set filter divider register * Set filter divider register
*/ */
speed = (speed * 9) / 20; /* Set filter rolloff to 90% of speed/2 */ speed = (speed * 9) / 20; /* Set filter roll-off to 90% of speed/2 */
divider = 256 - 7160000 / (speed * 82); divider = 256 - 7160000 / (speed * 82);
ess_write (devc, 0xa2, divider); ess_write (devc, 0xa2, divider);
...@@ -798,7 +798,7 @@ ess_audio_trigger (int dev, int bits) ...@@ -798,7 +798,7 @@ ess_audio_trigger (int dev, int bits)
} }
/* /*
* SB16 spesific routines * SB16 specific routines
*/ */
static int static int
......
/* /*
* sound/sb_card.c * sound/sb_card.c
* *
* Detection routine for the SoundBlaster cards. * Detection routine for the Sound Blaster cards.
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
......
/* /*
* sound/sb_common.c * sound/sb_common.c
* *
* Common routines for SoundBlaster compatible cards. * Common routines for Sound Blaster compatible cards.
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include "sb.h" #include "sb.h"
static sb_devc *detected_devc = NULL; /* For communication from probe to init */ static sb_devc *detected_devc = NULL; /* For communication from probe to init */
static sb_devc *last_devc = NULL; /* For MPU401 initalization */ static sb_devc *last_devc = NULL; /* For MPU401 initialization */
static sb_devc *irq2devc[16] = static sb_devc *irq2devc[16] =
{NULL}; {NULL};
static unsigned char jazz_irq_bits[] = static unsigned char jazz_irq_bits[] =
...@@ -34,14 +34,14 @@ static unsigned char jazz_dma_bits[] = ...@@ -34,14 +34,14 @@ static unsigned char jazz_dma_bits[] =
{0, 1, 0, 2, 0, 3, 0, 4}; {0, 1, 0, 2, 0, 3, 0, 4};
/* /*
* Jazz16 chipset spesific control variables * Jazz16 chipset specific control variables
*/ */
static int jazz16_base = 0; /* Not detected */ static int jazz16_base = 0; /* Not detected */
static unsigned char jazz16_bits = 0; /* I/O relocation bits */ static unsigned char jazz16_bits = 0; /* I/O relocation bits */
/* /*
* Logitech Soundman Wave spesific initialization code * Logitech SoundMan Wave specific initialization code
*/ */
#ifdef SMW_MIDI0001_INCLUDED #ifdef SMW_MIDI0001_INCLUDED
...@@ -59,7 +59,7 @@ sb_dsp_command (sb_devc * devc, unsigned char val) ...@@ -59,7 +59,7 @@ sb_dsp_command (sb_devc * devc, unsigned char val)
unsigned long limit; unsigned long limit;
limit = jiffies + HZ / 10; /* limit = jiffies + HZ / 10; /*
* The timeout is 0.1 secods * The timeout is 0.1 seconds
*/ */
/* /*
...@@ -79,7 +79,7 @@ sb_dsp_command (sb_devc * devc, unsigned char val) ...@@ -79,7 +79,7 @@ sb_dsp_command (sb_devc * devc, unsigned char val)
} }
} }
printk ("SoundBlaster: DSP Command(%x) Timeout.\n", val); printk ("Sound Blaster: DSP Command(%x) Timeout.\n", val);
return 0; return 0;
} }
...@@ -173,7 +173,7 @@ sbintr (int irq, void *dev_id, struct pt_regs *dummy) ...@@ -173,7 +173,7 @@ sbintr (int irq, void *dev_id, struct pt_regs *dummy)
break; break;
default: default:
printk ("SoundBlaster: Unexpected interrupt\n"); printk ("Sound Blaster: Unexpected interrupt\n");
} }
/* /*
* Acknowledge interrupts * Acknowledge interrupts
...@@ -345,7 +345,7 @@ init_Jazz16 (sb_devc * devc, struct address_info *hw_config) ...@@ -345,7 +345,7 @@ init_Jazz16 (sb_devc * devc, struct address_info *hw_config)
return 0; return 0;
/* /*
* OK so far. Now configure the IRQ and DMA channel used by the acrd. * OK so far. Now configure the IRQ and DMA channel used by the card.
*/ */
if (hw_config->irq < 1 || hw_config->irq > 15 || if (hw_config->irq < 1 || hw_config->irq > 15 ||
jazz_irq_bits[hw_config->irq] == 0) jazz_irq_bits[hw_config->irq] == 0)
...@@ -501,7 +501,7 @@ ess_init (sb_devc * devc, struct address_info *hw_config) ...@@ -501,7 +501,7 @@ ess_init (sb_devc * devc, struct address_info *hw_config)
* Set DMA configuration register * Set DMA configuration register
*/ */
cfg = 0x50; /* Extended mode DMA ebable */ cfg = 0x50; /* Extended mode DMA enable */
if (devc->dma8 > 3 || devc->dma8 < 0 || devc->dma8 == 2) if (devc->dma8 > 3 || devc->dma8 < 0 || devc->dma8 == 2)
{ {
...@@ -649,7 +649,7 @@ sb_dsp_init (struct address_info *hw_config) ...@@ -649,7 +649,7 @@ sb_dsp_init (struct address_info *hw_config)
devc->caps = hw_config->driver_use_1; devc->caps = hw_config->driver_use_1;
if (snd_set_irq_handler (hw_config->irq, if (snd_set_irq_handler (hw_config->irq,
sbintr, "soundblaster", devc->osp) < 0) sbintr, "sound blaster", devc->osp) < 0)
{ {
printk ("SB: Can't allocate IRQ%d\n", hw_config->irq); printk ("SB: Can't allocate IRQ%d\n", hw_config->irq);
return; return;
...@@ -696,7 +696,7 @@ sb_dsp_init (struct address_info *hw_config) ...@@ -696,7 +696,7 @@ sb_dsp_init (struct address_info *hw_config)
DDB (printk ("IRQ test OK (IRQ%d)\n", devc->irq)); DDB (printk ("IRQ test OK (IRQ%d)\n", devc->irq));
} }
request_region (hw_config->io_base, 16, "soundblaster"); request_region (hw_config->io_base, 16, "sound blaster");
switch (devc->major) switch (devc->major)
{ {
...@@ -758,12 +758,12 @@ sb_dsp_init (struct address_info *hw_config) ...@@ -758,12 +758,12 @@ sb_dsp_init (struct address_info *hw_config)
if (!(devc->caps & SB_NO_AUDIO)) if (!(devc->caps & SB_NO_AUDIO))
{ {
if (sound_alloc_dma (devc->dma8, "SoundBlaster8")) if (sound_alloc_dma (devc->dma8, "Sound Blaster8"))
{ {
printk ("SB: Can't allocate 8 bit DMA channel %d\n", devc->dma8); printk ("SB: Can't allocate 8 bit DMA channel %d\n", devc->dma8);
} }
if (devc->dma16 >= 0 && devc->dma16 != devc->dma8) if (devc->dma16 >= 0 && devc->dma16 != devc->dma8)
if (sound_alloc_dma (devc->dma16, "SoundBlaster16")) if (sound_alloc_dma (devc->dma16, "Sound Blaster16"))
{ {
printk ("SB: Can't allocate 16 bit DMA channel %d\n", devc->dma16); printk ("SB: Can't allocate 16 bit DMA channel %d\n", devc->dma16);
} }
...@@ -958,7 +958,7 @@ smw_midi_init (sb_devc * devc, struct address_info *hw_config) ...@@ -958,7 +958,7 @@ smw_midi_init (sb_devc * devc, struct address_info *hw_config)
* Set the SCSI interrupt (IRQ2/9, IRQ3 or IRQ10). The SCSI interrupt * Set the SCSI interrupt (IRQ2/9, IRQ3 or IRQ10). The SCSI interrupt
* is disabled by default. * is disabled by default.
* *
* Btw the Zilog 5380 SCSI controller is located at MPU base + 0x10. * BTW the Zilog 5380 SCSI controller is located at MPU base + 0x10.
*/ */
{ {
static unsigned char scsi_irq_bits[] = static unsigned char scsi_irq_bits[] =
......
/* /*
* sound/sb_dsp.c * sound/sb_dsp.c
* *
* The low level driver for the SoundBlaster DS chips. * The low level driver for the Sound Blaster DS chips.
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
...@@ -147,13 +147,13 @@ sb_midi_interrupt (sb_devc * devc) ...@@ -147,13 +147,13 @@ sb_midi_interrupt (sb_devc * devc)
restore_flags (flags); restore_flags (flags);
} }
#define MIDI_SYNTH_NAME "SoundBlaster Midi" #define MIDI_SYNTH_NAME "Sound Blaster Midi"
#define MIDI_SYNTH_CAPS 0 #define MIDI_SYNTH_CAPS 0
#include "midi_synth.h" #include "midi_synth.h"
static struct midi_operations sb_midi_operations = static struct midi_operations sb_midi_operations =
{ {
{"SoundBlaster", 0, 0, SNDCARD_SB}, {"Sound Blaster", 0, 0, SNDCARD_SB},
&std_midi_synth, &std_midi_synth,
{0}, {0},
sb_midi_open, sb_midi_open,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* /*
* sound/sb_mixer.c * sound/sb_mixer.c
* *
* The low level mixer driver for the SoundBlaster compatible cards. * The low level mixer driver for the Sound Blaster compatible cards.
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
...@@ -352,7 +352,7 @@ sb_mixer_ioctl (int dev, unsigned int cmd, caddr_t arg) ...@@ -352,7 +352,7 @@ sb_mixer_ioctl (int dev, unsigned int cmd, caddr_t arg)
static struct mixer_operations sb_mixer_operations = static struct mixer_operations sb_mixer_operations =
{ {
"SB", "SB",
"SoundBlaster", "Sound Blaster",
sb_mixer_ioctl sb_mixer_ioctl
}; };
......
...@@ -35,7 +35,7 @@ static int max_synthdev = 0; ...@@ -35,7 +35,7 @@ static int max_synthdev = 0;
/* /*
* The seq_mode gives the operating mode of the sequencer: * The seq_mode gives the operating mode of the sequencer:
* 1 = level1 (the default) * 1 = level1 (the default)
* 2 = level2 (extended capabilites) * 2 = level2 (extended capabilities)
*/ */
#define SEQ_1 1 #define SEQ_1 1
...@@ -69,7 +69,7 @@ static volatile int qhead = 0, qtail = 0, qlen = 0; ...@@ -69,7 +69,7 @@ static volatile int qhead = 0, qtail = 0, qlen = 0;
static volatile int iqhead = 0, iqtail = 0, iqlen = 0; static volatile int iqhead = 0, iqtail = 0, iqlen = 0;
static volatile int seq_playing = 0; static volatile int seq_playing = 0;
static volatile int sequencer_busy = 0; static volatile int sequencer_busy = 0;
static int output_treshold; static int output_threshold;
static int pre_event_timeout; static int pre_event_timeout;
static unsigned synth_open_mask; static unsigned synth_open_mask;
...@@ -688,7 +688,7 @@ seq_timing_event (unsigned char *event_rec) ...@@ -688,7 +688,7 @@ seq_timing_event (unsigned char *event_rec)
if ((ret = tmr->event (tmr_no, event_rec)) == TIMER_ARMED) if ((ret = tmr->event (tmr_no, event_rec)) == TIMER_ARMED)
{ {
if ((SEQ_MAX_QUEUE - qlen) >= output_treshold) if ((SEQ_MAX_QUEUE - qlen) >= output_threshold)
{ {
unsigned long flags; unsigned long flags;
...@@ -728,7 +728,7 @@ seq_timing_event (unsigned char *event_rec) ...@@ -728,7 +728,7 @@ seq_timing_event (unsigned char *event_rec)
request_sound_timer (time); request_sound_timer (time);
if ((SEQ_MAX_QUEUE - qlen) >= output_treshold) if ((SEQ_MAX_QUEUE - qlen) >= output_threshold)
{ {
unsigned long flags; unsigned long flags;
...@@ -864,7 +864,7 @@ play_event (unsigned char *q) ...@@ -864,7 +864,7 @@ play_event (unsigned char *q)
request_sound_timer (time); request_sound_timer (time);
if ((SEQ_MAX_QUEUE - qlen) >= output_treshold) if ((SEQ_MAX_QUEUE - qlen) >= output_threshold)
{ {
unsigned long flags; unsigned long flags;
...@@ -1003,7 +1003,7 @@ seq_startplay (void) ...@@ -1003,7 +1003,7 @@ seq_startplay (void)
seq_playing = 0; seq_playing = 0;
if ((SEQ_MAX_QUEUE - qlen) >= output_treshold) if ((SEQ_MAX_QUEUE - qlen) >= output_threshold)
{ {
unsigned long flags; unsigned long flags;
...@@ -1203,7 +1203,7 @@ sequencer_open (int dev, struct fileinfo *file) ...@@ -1203,7 +1203,7 @@ sequencer_open (int dev, struct fileinfo *file)
seq_sleep_flag.flags = WK_NONE; seq_sleep_flag.flags = WK_NONE;
midi_sleep_flag.flags = WK_NONE; midi_sleep_flag.flags = WK_NONE;
output_treshold = SEQ_MAX_QUEUE / 2; output_threshold = SEQ_MAX_QUEUE / 2;
for (i = 0; i < num_synths; i++) for (i = 0; i < num_synths; i++)
if (pmgr_present[i]) if (pmgr_present[i])
...@@ -1373,7 +1373,7 @@ midi_outc (int dev, unsigned char data) ...@@ -1373,7 +1373,7 @@ midi_outc (int dev, unsigned char data)
/* /*
* This routine sends one byte to the Midi channel. * This routine sends one byte to the Midi channel.
* If the output Fifo is full, it waits until there * If the output FIFO is full, it waits until there
* is space in the queue * is space in the queue
*/ */
...@@ -1843,7 +1843,7 @@ sequencer_ioctl (int dev, struct fileinfo *file, ...@@ -1843,7 +1843,7 @@ sequencer_ioctl (int dev, struct fileinfo *file,
tmp = 1; tmp = 1;
if (tmp >= SEQ_MAX_QUEUE) if (tmp >= SEQ_MAX_QUEUE)
tmp = SEQ_MAX_QUEUE - 1; tmp = SEQ_MAX_QUEUE - 1;
output_treshold = tmp; output_threshold = tmp;
return 0; return 0;
} }
break; break;
...@@ -1908,7 +1908,7 @@ sequencer_select (int dev, struct fileinfo *file, int sel_type, select_table_han ...@@ -1908,7 +1908,7 @@ sequencer_select (int dev, struct fileinfo *file, int sel_type, select_table_han
case SEL_OUT: case SEL_OUT:
save_flags (flags); save_flags (flags);
cli (); cli ();
if ((SEQ_MAX_QUEUE - qlen) < output_treshold) if ((SEQ_MAX_QUEUE - qlen) < output_threshold)
{ {
seq_sleep_flag.flags = WK_SLEEP; seq_sleep_flag.flags = WK_SLEEP;
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
/************* PCM DMA buffer sizes *******************/ /************* PCM DMA buffer sizes *******************/
/* If you are using high playback or recording speeds, the default buffersize /* If you are using high playback or recording speeds, the default buffer size
is too small. DSP_BUFFSIZE must be 64k or less. is too small. DSP_BUFFSIZE must be 64k or less.
A rule of thumb is 64k for PAS16, 32k for PAS+, 16k for SB Pro and A rule of thumb is 64k for PAS16, 32k for PAS+, 16k for SB Pro and
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
#define SND_DEV_DSP16 5 /* Like /dev/dsp but 16 bits/sample */ #define SND_DEV_DSP16 5 /* Like /dev/dsp but 16 bits/sample */
#define SND_DEV_STATUS 6 /* /dev/sndstat */ #define SND_DEV_STATUS 6 /* /dev/sndstat */
#define SND_DEV_AWFM 7 /* Reserved */ #define SND_DEV_AWFM 7 /* Reserved */
#define SND_DEV_SEQ2 8 /* /dev/sequecer, level 2 interface */ #define SND_DEV_SEQ2 8 /* /dev/sequencer, level 2 interface */
#define SND_DEV_SNDPROC 9 /* /dev/sndproc for programmable devices */ #define SND_DEV_SNDPROC 9 /* /dev/sndproc for programmable devices */
#define SND_DEV_PSS SND_DEV_SNDPROC #define SND_DEV_PSS SND_DEV_SNDPROC
...@@ -127,8 +127,8 @@ struct address_info { ...@@ -127,8 +127,8 @@ struct address_info {
char *name; char *name;
int driver_use_1; /* Driver defined field 1 */ int driver_use_1; /* Driver defined field 1 */
int driver_use_2; /* Driver defined field 2 */ int driver_use_2; /* Driver defined field 2 */
int *osp; /* OS spesific info */ int *osp; /* OS specific info */
int card_subtype; /* Driver spesific. Usually 0 */ int card_subtype; /* Driver specific. Usually 0 */
}; };
#define SYNTH_MAX_VOICES 32 #define SYNTH_MAX_VOICES 32
......
...@@ -98,7 +98,7 @@ sound_open (inode_handle * inode, file_handle * file) ...@@ -98,7 +98,7 @@ sound_open (inode_handle * inode, file_handle * file)
if (!soundcard_configured && dev != SND_DEV_CTL && dev != SND_DEV_STATUS) if (!soundcard_configured && dev != SND_DEV_CTL && dev != SND_DEV_STATUS)
{ {
printk ("SoundCard Error: The soundcard system has not been configured\n"); printk ("Sound Card Error: The soundcard system has not been configured\n");
return -(ENXIO); return -(ENXIO);
} }
...@@ -734,7 +734,7 @@ sound_free_dmap (int dev, struct dma_buffparms *dmap) ...@@ -734,7 +734,7 @@ sound_free_dmap (int dev, struct dma_buffparms *dmap)
} }
int int
soud_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc * info) sound_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc * info)
{ {
printk ("Entered sound_map_buffer()\n"); printk ("Entered sound_map_buffer()\n");
printk ("Exited sound_map_buffer()\n"); printk ("Exited sound_map_buffer()\n");
......
/* /*
* sound/sscape.c * sound/sscape.c
* *
* Low level driver for Ensoniq Soundscape * Low level driver for Ensoniq SoundScape
*/ */
/* /*
* Copyright (C) by Hannu Savolainen 1993-1996 * Copyright (C) by Hannu Savolainen 1993-1996
...@@ -304,10 +304,10 @@ sscapeintr (int irq, void *dev_id, struct pt_regs *dummy) ...@@ -304,10 +304,10 @@ sscapeintr (int irq, void *dev_id, struct pt_regs *dummy)
printk ("SSCAPE: Host interrupt, data=%02x\n", host_read (devc)); printk ("SSCAPE: Host interrupt, data=%02x\n", host_read (devc));
} }
#if defined(CONFIG_UART401) && defined(CONFIG_MIDI) #if defined(CONFIG_MPU401) && defined(CONFIG_MIDI)
if (bits & 0x01) if (bits & 0x01)
{ {
uart401intr (irq, NULL, NULL); mpuintr (irq, NULL, NULL);
if (debug++ > 10) /* Temporary debugging hack */ if (debug++ > 10) /* Temporary debugging hack */
{ {
sscape_write (devc, GA_INTENA_REG, 0x00); /* Disable all interrupts */ sscape_write (devc, GA_INTENA_REG, 0x00); /* Disable all interrupts */
...@@ -436,8 +436,10 @@ sscape_download_boot (struct sscape_info *devc, unsigned char *block, int size, ...@@ -436,8 +436,10 @@ sscape_download_boot (struct sscape_info *devc, unsigned char *block, int size,
save_flags (flags); save_flags (flags);
cli (); cli ();
codec_dma_bits = sscape_read (devc, GA_CDCFG_REG); codec_dma_bits = sscape_read (devc, GA_CDCFG_REG);
#if 0
sscape_write (devc, GA_CDCFG_REG, sscape_write (devc, GA_CDCFG_REG,
codec_dma_bits & ~0x08); /* Disable codec DMA */ codec_dma_bits & ~0x08); /* Disable codec DMA */
#endif
if (devc->dma_allocated == 0) if (devc->dma_allocated == 0)
{ {
...@@ -716,10 +718,10 @@ attach_sscape (struct address_info *hw_config) ...@@ -716,10 +718,10 @@ attach_sscape (struct address_info *hw_config)
if (old_hardware) if (old_hardware)
{ {
valid_interrupts = valid_interrupts_old; valid_interrupts = valid_interrupts_old;
conf_printf ("Ensoniq Soundscape (old)", hw_config); conf_printf ("Ensoniq SoundScape (old)", hw_config);
} }
else else
conf_printf ("Ensoniq Soundscape", hw_config); conf_printf ("Ensoniq SoundScape", hw_config);
for (i = 0; i < sizeof (valid_interrupts); i++) for (i = 0; i < sizeof (valid_interrupts); i++)
if (hw_config->irq == valid_interrupts[i]) if (hw_config->irq == valid_interrupts[i])
...@@ -785,17 +787,17 @@ attach_sscape (struct address_info *hw_config) ...@@ -785,17 +787,17 @@ attach_sscape (struct address_info *hw_config)
} }
#endif #endif
#if defined(CONFIG_MIDI) && defined(CONFIG_UART401) #if defined(CONFIG_MIDI) && defined(CONFIG_MPU401)
if (probe_uart401 (hw_config)) if (probe_mpu401 (hw_config))
hw_config->always_detect = 1; hw_config->always_detect = 1;
{ {
int prev_devs; int prev_devs;
prev_devs = num_midis; prev_devs = num_midis;
hw_config->name = "Soundscape"; hw_config->name = "SoundScape";
hw_config->irq *= -1; /* Negative value signals IRQ sharing */ hw_config->irq *= -1; /* Negative value signals IRQ sharing */
attach_uart401 (hw_config); attach_mpu401 (hw_config);
hw_config->irq *= -1; /* Restore it */ hw_config->irq *= -1; /* Restore it */
if (num_midis == (prev_devs + 1)) /* The MPU driver installed itself */ if (num_midis == (prev_devs + 1)) /* The MPU driver installed itself */
...@@ -824,7 +826,7 @@ probe_sscape (struct address_info *hw_config) ...@@ -824,7 +826,7 @@ probe_sscape (struct address_info *hw_config)
/* /*
* First check that the address register of "ODIE" is * First check that the address register of "ODIE" is
* there and that it has exactly 4 writeable bits. * there and that it has exactly 4 writable bits.
* First 4 bits * First 4 bits
*/ */
if ((save = inb (PORT (ODIE_ADDR))) & 0xf0) if ((save = inb (PORT (ODIE_ADDR))) & 0xf0)
...@@ -938,7 +940,7 @@ attach_ss_ms_sound (struct address_info *hw_config) ...@@ -938,7 +940,7 @@ attach_ss_ms_sound (struct address_info *hw_config)
sscape_write (devc, GA_DMACFG_REG, 0x50); sscape_write (devc, GA_DMACFG_REG, 0x50);
/* /*
* Take the gate-arry off of the DMA channel. * Take the gate-array off of the DMA channel.
*/ */
sscape_write (devc, GA_DMAB_REG, 0x20); sscape_write (devc, GA_DMAB_REG, 0x20);
...@@ -988,8 +990,8 @@ attach_ss_ms_sound (struct address_info *hw_config) ...@@ -988,8 +990,8 @@ attach_ss_ms_sound (struct address_info *hw_config)
void void
unload_sscape (struct address_info *hw_config) unload_sscape (struct address_info *hw_config)
{ {
#if defined(CONFIG_UART401) && defined(CONFIG_MIDI) #if defined(CONFIG_MPU401) && defined(CONFIG_MIDI)
unload_uart401 (hw_config); unload_mpu401 (hw_config);
#endif #endif
snd_release_irq (hw_config->irq); snd_release_irq (hw_config->irq);
} }
......
...@@ -90,7 +90,7 @@ trix_set_wss_port (struct address_info *hw_config) ...@@ -90,7 +90,7 @@ trix_set_wss_port (struct address_info *hw_config)
if (kilroy_was_here) /* Already initialized */ if (kilroy_was_here) /* Already initialized */
return 0; return 0;
if (trix_read (0x15) != 0x71) /* No asic signature */ if (trix_read (0x15) != 0x71) /* No ASIC signature */
{ {
DDB (printk ("No AudioTrix ASIC signature found\n")); DDB (printk ("No AudioTrix ASIC signature found\n"));
return 0; return 0;
......
...@@ -57,7 +57,7 @@ typedef struct { ...@@ -57,7 +57,7 @@ typedef struct {
#define __FD_ZERO(fdsetp) \ #define __FD_ZERO(fdsetp) \
__asm__ __volatile__("cld ; rep ; stosl" \ __asm__ __volatile__("cld ; rep ; stosl" \
:"=m" (*(__kernel_fd_set *) (fdsetp)) \ :"=m" (*(__kernel_fd_set *) (fdsetp)) \
:"a" (0), "c" (__FDSET_INTS), \ :"a" (0), "c" (__FDSET_LONGS), \
"D" ((__kernel_fd_set *) (fdsetp)) :"cx","di") "D" ((__kernel_fd_set *) (fdsetp)) :"cx","di")
#endif #endif
...@@ -125,6 +125,7 @@ enum scsi_directory_inos { ...@@ -125,6 +125,7 @@ enum scsi_directory_inos {
PROC_SCSI_SEAGATE, PROC_SCSI_SEAGATE,
PROC_SCSI_T128, PROC_SCSI_T128,
PROC_SCSI_NCR53C7xx, PROC_SCSI_NCR53C7xx,
PROC_SCSI_NCR53C8XX,
PROC_SCSI_ULTRASTOR, PROC_SCSI_ULTRASTOR,
PROC_SCSI_7000FASST, PROC_SCSI_7000FASST,
PROC_SCSI_EATA2X, PROC_SCSI_EATA2X,
......
...@@ -1863,7 +1863,7 @@ int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt, ...@@ -1863,7 +1863,7 @@ int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
* handle them locally, due to transparent proxying. * handle them locally, due to transparent proxying.
* Thus, narrow down the test to what is really meant. * Thus, narrow down the test to what is really meant.
*/ */
if(th->rst || !th->syn || th->ack || (r = ip_chk_addr(daddr) == IS_BROADCAST || r == IS_MULTICAST)) if(th->rst || !th->syn || th->ack || (r = ip_chk_addr(daddr)) == IS_BROADCAST || r == IS_MULTICAST)
#else #else
if(th->rst || !th->syn || th->ack || ip_chk_addr(daddr)!=IS_MYADDR) if(th->rst || !th->syn || th->ack || ip_chk_addr(daddr)!=IS_MYADDR)
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment