Commit 3c8de19e authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.76

parent 76315b72
......@@ -537,15 +537,6 @@ S: P.O. Box 76, Epping
S: N.S.W., 2121
S: Australia
N: Richard E. Gooch
E: rgooch@atnf.csiro.au
D: parent process death signal to children
D: prctl() syscall
S: CSIRO Australia Telescope National Facility
S: P.O. Box 76, Epping
S: N.S.W., 2121
S: Australia
N: Dmitry S. Gorodchanin
E: begemot@bgm.rosprint.net
D: RISCom/8 driver, misc kernel fixes.
......
......@@ -11,9 +11,9 @@
Digital Semiconductor SROM Specification. The driver currently
recognises the following chips:
DC21040 (no SROM)
DC21041[A]
DC21140[A]
DC21040 (no SROM)
DC21041[A]
DC21140[A]
DC21142
DC21143
......@@ -57,7 +57,7 @@
1) copy de4x5.c from the /linux/drivers/net directory to your favourite
temporary directory.
2) for fixed autoprobes (not recommended), edit the source code near
line 5537 to reflect the I/O address you're using, or assign these when
line 5594 to reflect the I/O address you're using, or assign these when
loading by:
insmod de4x5 io=0xghh where g = bus number
......@@ -92,6 +92,16 @@
can compile with a DEC_ONLY define, or if loading as a module, use the
'dec_only=1' parameter.
I've changed the timing routines to use the kernel timer and scheduling
functions so that the hangs and other assorted problems that occurred
while autosensing the media should be gone. A bonus for the DC21040
auto media sense algorithm is that it can now use one that is more in
line with the rest (the DC21040 chip doesn't have a hardware timer).
The downside is the 1 'jiffies' (10ms) resolution.
IEEE 802.3u MII interface code has been added in anticipation that some
products may use it in the future.
The SMC9332 card has a non-compliant SROM which needs fixing - I have
patched this driver to detect it because the SROM format used complies
to a previous DEC-STD format.
......@@ -133,11 +143,36 @@
is the preferred way to use this driver, since it doesn't have this
limitation.
Where SROM media detection is used and full duplex is specified in the
SROM, the feature is ignored unless de4x5_full_duplex is set at compile
time OR during a module load (insmod de4x5 de4x5_full_duplex=1). This
is because there is no way to automatically detect full duplex links
except through autonegotiation. When I include the autonegotiation
feature in the SROM autoconf code, this detection will occur
automatically.
Where SROM media detection is used and full duplex is specified in the
SROM, the feature is ignored unless lp->params.fdx is set at compile
time OR during a module load (insmod de4x5 args='eth??:fdx' [see
below]). This is because there is no way to automatically detect full
duplex links except through autonegotiation. When I include the
autonegotiation feature in the SROM autoconf code, this detection will
occur automatically for that case.
Command line arguements are now allowed, similar to passing arguements
through LILO. This will allow a per adapter board set up of full duplex
and media. The only lexical constraints are: the board name (dev->name)
appears in the list before its parameters. The list of parameters ends
either at the end of the parameter list or with another board name. The
following parameters are allowed:
fdx for full duplex
autosense to set the media/speed; with the following
sub-parameters:
TP, TP_NW, BNC, AUI, BNC_AUI, 100Mb, 10Mb, AUTO
Case sensitivity is important for the sub-parameters. They *must* be
upper case. Examples:
insmod de4x5 args='eth1:fdx autosense=BNC eth0:autosense=100Mb'.
For a compiled in driver, in linux/drivers/net/CONFIG, place e.g.
DE4X5_OPTS = -DDE4X5_PARM='"eth0:fdx autosense=AUI eth2:autosense=TP"'
Yes, I know full duplex isn't permissible on BNC or AUI; they're just
examples. By default, full duplex is turned off and AUTO is the default
autosense setting. In reality, I expect only the full duplex option to
be used. Note the use of single quotes in the two examples above and the
lack of commas to separate items.
VERSION = 2
PATCHLEVEL = 1
SUBLEVEL = 75
SUBLEVEL = 76
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/)
......@@ -206,7 +206,6 @@ symlinks:
fi
oldconfig: symlinks
$(MAKE) -C drivers/sound mkscript
$(CONFIG_SHELL) scripts/Configure -d arch/$(ARCH)/config.in
xconfig: symlinks
......@@ -339,23 +338,24 @@ clean: archclean
rm -f core `find . -name '*.[oas]' ! -regex '.*lxdialog/.*' -print`
rm -f core `find . -type f -name 'core' -print`
rm -f vmlinux System.map
rm -f .tmp* drivers/sound/configure
rm -f .tmp*
rm -f drivers/char/consolemap_deftbl.c drivers/char/conmakehash
rm -f drivers/sound/bin2hex drivers/sound/hex2hex
rm -f `find modules/ -type f -print`
rm -f submenu*
mrproper: clean
rm -f include/linux/autoconf.h include/linux/version.h
rm -f drivers/sound/local.h drivers/sound/.defines
rm -f drivers/net/soundmodem/sm_tbl_{afsk1200,afsk2666,fsk9600}.h
rm -f drivers/net/soundmodem/sm_tbl_{hapn4800,psk4800}.h
rm -f drivers/net/soundmodem/sm_tbl_{afsk2400_7,afsk2400_8}.h
rm -f drivers/net/soundmodem/gentbl
rm -f drivers/char/hfmodem/gentbl drivers/char/hfmodem/tables.h
rm -f drivers/sound/*_boot.h drivers/sound/.*.boot
rm -f .version .config* config.in config.old
rm -f scripts/tkparse scripts/kconfig.tk scripts/kconfig.tmp
rm -f scripts/lxdialog/*.o scripts/lxdialog/lxdialog
rm -f .menuconfig .menuconfig.log
rm -f .menuconfig.log
rm -f include/asm
rm -f .depend `find . -name .depend -print`
rm -f .hdepend scripts/mkdep
......@@ -367,8 +367,6 @@ distclean: mrproper
rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -print` TAGS
# rm -f drivers/sound/Config.in
# cp drivers/sound/Config.std drivers/sound/Config.in
backup: mrproper
cd .. && tar cf - linux/ | gzip -9 > backup.gz
......
......@@ -22,9 +22,11 @@
#include <linux/interrupt.h>
#include <asm/softirq.h>
#define __KERNEL_SYSCALLS__
#include <asm/unistd.h>
extern void bcopy (const char *src, char *dst, int len);
extern struct hwrpb_struct *hwrpb;
extern long __kernel_thread(unsigned long, int (*)(void *), void *);
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(struct pt_regs *, elf_fpregset_t *);
......@@ -71,6 +73,7 @@ EXPORT_SYMBOL(strncat);
EXPORT_SYMBOL(strstr);
EXPORT_SYMBOL(strtok);
EXPORT_SYMBOL(strchr);
EXPORT_SYMBOL(strrchr);
EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(__memcpy);
......@@ -81,9 +84,21 @@ EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(hwrpb);
EXPORT_SYMBOL(wrusp);
EXPORT_SYMBOL(__kernel_thread);
EXPORT_SYMBOL(start_thread);
/* In-kernel system calls. */
EXPORT_SYMBOL(__kernel_thread);
EXPORT_SYMBOL(sys_open);
EXPORT_SYMBOL(sys_dup);
EXPORT_SYMBOL(sys_exit);
EXPORT_SYMBOL(sys_write);
EXPORT_SYMBOL(sys_read);
EXPORT_SYMBOL(sys_lseek);
EXPORT_SYMBOL(__kernel_execve);
EXPORT_SYMBOL(sys_setsid);
EXPORT_SYMBOL(sys_sync);
EXPORT_SYMBOL(sys_wait4);
/* Networking helper routines. */
EXPORT_SYMBOL(csum_tcpudp_magic);
EXPORT_SYMBOL(ip_fast_csum);
......
......@@ -252,6 +252,28 @@ __kernel_thread:
call_pal PAL_halt
.end __kernel_thread
/*
* __kernel_execve(path, argv, envp, regs)
*/
.align 3
.globl __kernel_execve
.ent __kernel_execve
__kernel_execve:
ldgp $29,0($27) /* we can be called from modules. */
subq $30,16,$30
.frame $30,16,$26,0
stq $26,0($30)
stq $19,8($30)
.prologue 1
jsr $26,do_execve
bne $0,1f /* error! */
ldq $30,8($30)
br $31,ret_from_sys_call
1: ldq $26,0($30)
addq $30,16,$30
ret
.end __kernel_execve
.align 3
.ent do_switch_stack
do_switch_stack:
......
......@@ -172,7 +172,7 @@ checkCPUtype:
* if CPUID works.
*/
movl $0x69727943,X86_VENDOR_ID # low 4 chars
movl $0x00000078,X86_VENDOR_ID # next 4 chars
movl $0x00000078,X86_VENDOR_ID+4 # next 4 chars
/*
* N.B. The pattern of accesses to 0x22 and 0x23 is *important*
......
......@@ -356,8 +356,8 @@ static struct cpu_model_info cpu_models[] __initdata = {
{ X86_VENDOR_AMD, 5,
{ "K5/SSA5 (PR-75, PR-90, PR-100)", "K5 (PR-120, PR-133)",
"K5 (PR-166)", "K5 (PR-200)", NULL, NULL,
"K6 (166 - 266)", "K6 (166 - 300)", "K6 (model 8)",
"K6 (model 9)", NULL, NULL, NULL, NULL, NULL, NULL }},
"K6 (166 - 266)", "K6 (166 - 300)", "K6-3D (200 - 450)",
"K6-3D-Plus (200 - 450)", NULL, NULL, NULL, NULL, NULL, NULL }},
{ X86_VENDOR_UMC, 4,
{ NULL, "U5D", "U5S", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL }},
......
......@@ -1019,7 +1019,7 @@ static void handle_stripe(struct stripe_head *sh)
if (sh->bh_new[i])
continue;
block = (int) compute_blocknr(sh, i);
bh = efind_buffer(MKDEV(MD_MAJOR, minor), block, sh->size);
bh = find_buffer(MKDEV(MD_MAJOR, minor), block, sh->size);
if (bh && bh->b_count == 0 && buffer_dirty(bh) && !buffer_locked(bh)) {
PRINTK(("Whee.. sector %lu, index %d (%d) found in the buffer cache!\n", sh->sector, i, block));
add_stripe_bh(sh, bh, i, WRITE);
......
......@@ -1265,11 +1265,11 @@ static int bttv_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
case VIDIOCGAUDIO:
{
struct video_audio vp;
vp=btv->audio_dev;
vp.flags&=~(VIDEO_AUDIO_MUTE|VIDEO_AUDIO_MUTABLE);
vp.flags|=VIDEO_AUDIO_MUTABLE;
strcpy(vp.name,"TV");
struct video_audio v;
v=btv->audio_dev;
v.flags&=~(VIDEO_AUDIO_MUTE|VIDEO_AUDIO_MUTABLE);
v.flags|=VIDEO_AUDIO_MUTABLE;
strcpy(v.name,"TV");
if(copy_to_user(&v,arg,sizeof(v)))
return -EFAULT;
return 0;
......
......@@ -549,6 +549,9 @@ __initfunc(int chr_dev_init(void))
#endif
#ifdef CONFIG_FTAPE
ftape_init();
#endif
#ifdef CONFIG_VIDEO_DEV
videodev_init();
#endif
return 0;
}
......@@ -31,6 +31,8 @@
* 970912 Enabled board on open and disable on close.
* 971107 Took account of recent VFS changes (broke read).
* 971210 Disable board on initialisation in case board already ticking.
* 971222 Changed open/close for temperature handling
* Michael Meskes <meskes@debian.org>.
*/
#include <linux/module.h>
......@@ -378,14 +380,23 @@ static ssize_t pcwd_write(struct file *file, const char *buf, size_t len,
static int pcwd_open(struct inode *ino, struct file *filep)
{
if (is_open)
return -EIO;
MOD_INC_USE_COUNT;
/* Enable the port */
if (revision == PCWD_REVISION_C)
outb_p(0x00, current_readport + 3);
is_open = 1;
return(0);
switch (MINOR(ino->i_rdev))
{
case WD_MINOR:
if (is_open)
return -EBUSY;
MOD_INC_USE_COUNT;
/* Enable the port */
if (revision == PCWD_REVISION_C)
outb_p(0x00, current_readport + 3);
is_open = 1;
return(0);
case TEMP_MINOR:
MOD_INC_USE_COUNT;
return(0);
default:
return (-ENODEV);
}
}
static ssize_t pcwd_read(struct file *file, char *buf, size_t count,
......@@ -400,7 +411,8 @@ static ssize_t pcwd_read(struct file *file, char *buf, size_t count,
switch(MINOR(file->f_dentry->d_inode->i_rdev))
{
case TEMP_MINOR:
cp = c;
/* c is in celsius, we need fahrenheit */
cp = (c*9/5)+32;
if(copy_to_user(buf, &cp, 1))
return -EFAULT;
return 1;
......@@ -411,15 +423,18 @@ static ssize_t pcwd_read(struct file *file, char *buf, size_t count,
static int pcwd_close(struct inode *ino, struct file *filep)
{
is_open = 0;
MOD_DEC_USE_COUNT;
if (MINOR(ino->i_rdev)==WD_MINOR)
{
is_open = 0;
#ifndef CONFIG_WATCHDOG_NOWAYOUT
/* Disable the board */
if (revision == PCWD_REVISION_C) {
outb_p(0xA5, current_readport + 3);
outb_p(0xA5, current_readport + 3);
}
/* Disable the board */
if (revision == PCWD_REVISION_C) {
outb_p(0xA5, current_readport + 3);
outb_p(0xA5, current_readport + 3);
}
#endif
}
return 0;
}
......
......@@ -44,23 +44,11 @@
# DE4X5_DEBUG Set the desired debug level
# DEC_ONLY Allows driver to work with DIGITAL cards only -
# see linux/drivers/net/README.de4x5
# DE4X5_AUTOSENSE (Default) auto media/mode selection
# If you want at least one board to not autosense then
# no board can autosense. For a board mix of several
# types, OR the manual values [eg for a DE500 (100M) with
# a DE450 (AUI) use '-DDE4X5_AUTOSENSE=(_100Mb|AUI)']
# For full auto media/mode selection = AUTO
# For manual TP media selection = TP
# For manual TP/Nway media selection (DC21041) = TP_NW
# For manual BNC media selection = BNC
# For manual AUI media selection = AUI
# For manual BNC/AUI media selection (DC21040) = BNC_AUI
# For manual 10Mb/s mode selection (DC21140) = _10Mb
# For manual 100Mb/s mode selection (DC21140) = _100Mb
# The DC21040 will default to TP if TP_NW is specified
# The DC21041 will default to BNC if BNC_AUI is specified
# DE4X5_DO_MEMCPY Forces the Intels to use memory copies into sk_buffs
# rather than straight DMA.
# DE4X5_PARM See linux/Documentation/networking/de4x5.txt or the
# driver source code for detailed information on setting
# duplex and speed/media on individual adapters.
#
# DEFXX The DIGITAL series of FDDI EISA (DEFEA) and PCI (DEFPA)
# controllers
......@@ -95,7 +83,7 @@ HP_OPTS =
PLIP_OPTS =
DEPCA_OPTS =
EWRK3_OPTS =
DE4X5_OPTS = -DDE4X5_AUTOSENSE=AUTO
DE4X5_OPTS =
DEFXX_OPTS =
ELP_OPTS =
TULIP_OPTS =
......
......@@ -15,7 +15,9 @@ fi
tristate 'Dummy net driver support' CONFIG_DUMMY
tristate 'EQL (serial line load balancing) support' CONFIG_EQUALIZER
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'Ethertap network tap' CONFIG_ETHERTAP
if [ "CONFIG_NETLINK_DEV" != "n" ]; then
dep_tristate 'Ethertap network tap' CONFIG_ETHERTAP $CONFIG_NETLINK_DEV
fi
fi
#
# Ethernet
......
......@@ -198,7 +198,7 @@ else
endif
ifdef CONFIG_PPP
M_OBJS += bsd_comp.o
M_OBJS += bsd_comp.o ppp_deflate.o
endif
ifeq ($(CONFIG_SLIP),y)
......
This diff is collapsed.
......@@ -166,11 +166,7 @@
/*
** PCI Configuration Base I/O Address Register (PCI_CBIO)
*/
#ifdef __sparc_v9__
#define CBIO_MASK 0xffffffffffffff80 /* Base I/O Address Mask */
#else
#define CBIO_MASK 0xffffff80 /* Base I/O Address Mask */
#endif
#define CBIO_MASK -128 /* Base I/O Address Mask */
#define CBIO_IOSI 0x00000001 /* I/O Space Indicator (RO, value is 1) */
/*
......@@ -368,7 +364,7 @@
#define OMR_SIA (OMR_SDP | OMR_TTM)
#define OMR_SYM (OMR_SDP | OMR_SCR | OMR_PCS | OMR_HBD | OMR_PS)
#define OMR_MII_10 (OMR_SDP | OMR_TTM | OMR_PS)
#define OMR_MII_100 (OMR_SDP | OMR_SCR | OMR_HBD | OMR_PS)
#define OMR_MII_100 (OMR_SDP | OMR_HBD | OMR_PS)
/*
** DC21040 Interrupt Mask Register (DE4X5_IMR)
......@@ -813,16 +809,22 @@
/*
** Media / mode state machine definitions
** User selectable:
*/
#define NC 0x0000 /* No Connection */
#define TP 0x0001 /* 10Base-T */
#define TP_NW 0x0002 /* 10Base-T with Nway */
#define BNC 0x0004 /* Thinwire */
#define AUI 0x0008 /* Thickwire */
#define BNC_AUI 0x0010 /* BNC/AUI on DC21040 indistinguishable */
#define ANS 0x0020 /* Intermediate AutoNegotiation State */
#define _10Mb 0x0040 /* 10Mb/s Ethernet */
#define _100Mb 0x0080 /* 100Mb/s Ethernet */
#define AUTO 0x4000 /* Auto sense the media or speed */
/*
** Internal states
*/
#define NC 0x0000 /* No Connection */
#define ANS 0x0020 /* Intermediate AutoNegotiation State */
#define SPD_DET 0x0100 /* Parallel speed detection */
#define INIT 0x0200 /* Initial state */
#define EXT_SIA 0x0400 /* External SIA for motherboard chip */
......@@ -834,7 +836,6 @@
#define AUI_SUSPECT 0x0807 /* Suspect the AUI port is down */
#define MII 0x1000 /* MII on the 21143 */
#define AUTO 0x4000 /* Auto sense the media or speed */
#define TIMER_CB 0x80000000 /* Timer callback detection */
/*
......@@ -907,6 +908,7 @@
#define OPEN 2 /* Running */
/*
** Various wait times
*/
#define PDET_LINK_WAIT 1200 /* msecs to wait for link detect bits */
#define ANS_FINISH_WAIT 1000 /* msecs to wait for link detect bits */
......@@ -936,12 +938,13 @@
} else if (lp->useSROM && !lp->useMII) {\
omr = (inl(DE4X5_OMR) & ~(OMR_PS | OMR_HBD | OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
omr |= (lp->fdx ? OMR_FDX : 0);\
outl(omr | lp->infoblock_csr6, DE4X5_OMR);\
outl(omr | (lp->infoblock_csr6 & ~(OMR_SCR | OMR_HBD)), DE4X5_OMR);\
} else {\
omr = (inl(DE4X5_OMR) & ~(OMR_PS | OMR_HBD | OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
omr |= (lp->fdx ? OMR_FDX : 0);\
outl(omr | OMR_TTM, DE4X5_OMR);\
outl(omr | OMR_SDP | OMR_TTM, DE4X5_OMR);\
lp->cache.gep = (lp->fdx ? 0 : GEP_FDXD);\
gep_wr(lp->cache.gep, dev);\
}\
}
......@@ -964,12 +967,13 @@
} else if (lp->useSROM && !lp->useMII) {\
omr = (inl(DE4X5_OMR) & ~(OMR_PS | OMR_HBD | OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
omr |= (lp->fdx ? OMR_FDX : 0);\
outl(omr | (lp->infoblock_csr6 & ~(OMR_SCR | OMR_HBD)), DE4X5_OMR);\
outl(omr | lp->infoblock_csr6, DE4X5_OMR);\
} else {\
omr = (inl(DE4X5_OMR) & ~(OMR_PS | OMR_HBD | OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
omr |= (lp->fdx ? OMR_FDX : 0);\
outl(omr | OMR_PS | OMR_HBD | OMR_PCS | OMR_SCR, DE4X5_OMR);\
outl(omr | OMR_SDP | OMR_PS | OMR_HBD | OMR_PCS | OMR_SCR, DE4X5_OMR);\
lp->cache.gep = (lp->fdx ? 0 : GEP_FDXD) | GEP_MODE;\
gep_wr(lp->cache.gep, dev);\
}\
}
......@@ -981,11 +985,12 @@
outl(omr, DE4X5_OMR);\
} else if (lp->useSROM && !lp->useMII) {\
omr = (inl(DE4X5_OMR) & ~(OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
outl(omr | lp->infoblock_csr6, DE4X5_OMR);\
outl(omr, DE4X5_OMR);\
} else {\
omr = (inl(DE4X5_OMR) & ~(OMR_PS | OMR_HBD | OMR_TTM | OMR_PCS | OMR_SCR | OMR_FDX));\
outl(omr | OMR_PS | OMR_HBD | OMR_PCS | OMR_SCR, DE4X5_OMR);\
outl(omr | OMR_SDP | OMR_PS | OMR_HBD | OMR_PCS, DE4X5_OMR);\
lp->cache.gep = (GEP_FDXD | GEP_MODE);\
gep_wr(lp->cache.gep, dev);\
}\
}
......
This diff is collapsed.
......@@ -55,11 +55,7 @@
#include <linux/ioctl.h>
#include <linux/ppp_defs.h>
#undef PACKETPTR
#define PACKETPTR 1
#include <linux/ppp-comp.h>
#undef PACKETPTR
#include "zlib.c"
......
/*
* This file is derived from various .h and .c files from the zlib-0.95
* This file is derived from various .h and .c files from the zlib-1.0.4
* distribution by Jean-loup Gailly and Mark Adler, with some additions
* by Paul Mackerras to aid in implementing Deflate compression and
* decompression for PPP packets. See zlib.h for conditions of
......@@ -8,15 +8,13 @@
* Changes that have been made include:
* - added Z_PACKET_FLUSH (see zlib.h for details)
* - added inflateIncomp and deflateOutputPending
* - changed DEBUG_ZLIB to DEBUG_ZLIB
* - use ZALLOC_INIT rather than ZALLOC for allocations during initialization
* - allow strm->next_out to be NULL, meaning discard the output
*
* $Id: zlib.c,v 1.2 1997/10/02 17:59:23 davem Exp $
* $Id: zlib.c,v 1.3 1997/12/23 10:47:42 paulus Exp $
*/
/*
* ==FILEVERSION 970501==
* ==FILEVERSION 971210==
*
* This marker is used by the Linux installation script to determine
* whether an up-to-date version of this file is already installed.
......@@ -50,23 +48,20 @@
#include "zlib.h"
#if defined(KERNEL) || defined(_KERNEL)
/* Assume this is a *BSD kernel */
/* Assume this is a *BSD or SVR4 kernel */
#include <sys/types.h>
#include <sys/time.h>
#include <sys/systm.h>
# define HAVE_MEMCPY
# define zmemcpy(d, s, n) bcopy((s), (d), (n))
# define zmemzero bzero
# define zmemcmp bcmp
# define memcpy(d, s, n) bcopy((s), (d), (n))
# define memset(d, v, n) bzero((d), (n))
# define memcmp bcmp
#else
#if defined(__KERNEL__)
/* Assume this is a Linux kernel */
#include <linux/string.h>
#define HAVE_MEMCPY
#define zmemcpy memcpy
#define zmemzero(dest, len) memset(dest, 0, len)
#define zmemcmp memcmp
#else /* not kernel */
......@@ -959,7 +954,7 @@ local void flush_pending(strm)
if (len > strm->avail_out) len = strm->avail_out;
if (len == 0) return;
if (strm->next_out != NULL) {
if (strm->next_out != Z_NULL) {
zmemcpy(strm->next_out, s->pending_out, len);
strm->next_out += len;
}
......@@ -4893,7 +4888,7 @@ int r;
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy as far as end of window */
if (p != NULL) {
if (p != Z_NULL) {
zmemcpy(p, q, n);
p += n;
}
......@@ -4921,7 +4916,7 @@ int r;
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy */
if (p != NULL) {
if (p != Z_NULL) {
zmemcpy(p, q, n);
p += n;
}
......
/* $Id: zlib.h,v 1.1 1997/10/02 02:35:37 paulus Exp $ */
/* $Id: zlib.h,v 1.2 1997/12/23 10:47:44 paulus Exp $ */
/*
* This file is derived from zlib.h and zconf.h from the zlib-0.95
* This file is derived from zlib.h and zconf.h from the zlib-1.0.4
* distribution by Jean-loup Gailly and Mark Adler, with some additions
* by Paul Mackerras to aid in implementing Deflate compression and
* decompression for PPP packets.
*/
/*
* ==FILEVERSION 970501==
* ==FILEVERSION 971127==
*
* This marker is used by the Linux installation script to determine
* whether an up-to-date version of this file is already installed.
......
......@@ -50,11 +50,12 @@ struct pci_dev_info dev_info[] = {
DEVICE( NCR, NCR_53C895, "53c895"),
DEVICE( NCR, NCR_53C885, "53c885"),
DEVICE( NCR, NCR_53C875, "53c875"),
DEVICE( NCR, NCR_53C876, "53c876"),
DEVICE( NCR, NCR_53C875J, "53c875J"),
DEVICE( ATI, ATI_68800, "68800AX"),
DEVICE( ATI, ATI_215CT222, "215CT222"),
DEVICE( ATI, ATI_210888CX, "210888CX"),
DEVICE( ATI, ATI_215GB, "Mach64 GB"),
DEVICE( ATI, ATI_215GD, "Mach64 GD (Rage Pro)"),
DEVICE( ATI, ATI_215GP, "Mach64 GP (Rage Pro)"),
DEVICE( ATI, ATI_215GT, "Mach64 GT (Rage II)"),
DEVICE( ATI, ATI_215GTB, "Mach64 GT (Rage II)"),
......@@ -110,7 +111,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( AMD, AMD_SCSI, "53C974"),
DEVICE( TRIDENT, TRIDENT_9420, "TG 9420"),
DEVICE( TRIDENT, TRIDENT_9440, "TG 9440"),
DEVICE( TRIDENT, TRIDENT_9660, "TG 9660"),
DEVICE( TRIDENT, TRIDENT_9660, "TG 9660 / Cyber9385"),
DEVICE( TRIDENT, TRIDENT_9750, "Image 975"),
DEVICE( AI, AI_M1435, "M1435"),
DEVICE( MATROX, MATROX_MGA_2, "Atlas PX2085"),
......@@ -186,6 +187,14 @@ struct pci_dev_info dev_info[] = {
DEVICE( NEXGEN, NEXGEN_82C501, "82C501"),
DEVICE( QLOGIC, QLOGIC_ISP1020, "ISP1020"),
DEVICE( QLOGIC, QLOGIC_ISP1022, "ISP1022"),
DEVICE( CYRIX, CYRIX_5510, "5510"),
DEVICE( CYRIX, CYRIX_PCI_MASTER,"PCI Master"),
DEVICE( CYRIX, CYRIX_5520, "5520"),
DEVICE( CYRIX, CYRIX_5530_LEGACY,"5530 Kahlua Legacy"),
DEVICE( CYRIX, CYRIX_5530_SMI, "5530 Kahlua SMI"),
DEVICE( CYRIX, CYRIX_5530_IDE, "5530 Kahlua IDE"),
DEVICE( CYRIX, CYRIX_5530_AUDIO,"5530 Kahlua Audio"),
DEVICE( CYRIX, CYRIX_5530_VIDEO,"5530 Kahlua Video"),
DEVICE( LEADTEK, LEADTEK_805, "S3 805"),
DEVICE( CONTAQ, CONTAQ_82C599, "82C599"),
DEVICE( OLICOM, OLICOM_OC3136, "OC-3136/3137"),
......@@ -245,7 +254,8 @@ struct pci_dev_info dev_info[] = {
DEVICE( TEKRAM2, TEKRAM2_690c, "DC690c"),
DEVICE( TUNDRA, TUNDRA_CA91C042,"CA91C042 Universe"),
DEVICE( AMCC, AMCC_MYRINET, "Myrinet PCI (M2-PCI-32)"),
DEVICE( AMCC, AMCC_S5933, "S5933"),
DEVICE( AMCC, AMCC_S5933, "S5933 PCI44"),
DEVICE( AMCC, AMCC_S5933_HEPC3,"S5933 Traquair HEPC3"),
DEVICE( INTERG, INTERG_1680, "IGA-1680"),
DEVICE( INTERG, INTERG_1682, "IGA-1682"),
DEVICE( REALTEK, REALTEK_8029, "8029"),
......@@ -311,6 +321,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( DIGI, DIGI_RIGHTSWITCH, "RightSwitch SE-6"),
DEVICE( MUTECH, MUTECH_MV1000, "MV-1000"),
DEVICE( RENDITION, RENDITION_VERITE,"Verite 1000"),
DEVICE( RENDITION, RENDITION_VERITE2100,"Verite 2100"),
DEVICE( TOSHIBA, TOSHIBA_601, "Laptop"),
DEVICE( RICOH, RICOH_RL5C466, "RL5C466"),
DEVICE( ZEITNET, ZEITNET_1221, "1221"),
......@@ -336,6 +347,9 @@ struct pci_dev_info dev_info[] = {
DEVICE( CYCLADES, CYCLOM_Z_Lo, "Cyclom-Z below 1Mbyte"),
DEVICE( CYCLADES, CYCLOM_Z_Hi, "Cyclom-Z above 1Mbyte"),
DEVICE( 3DFX, 3DFX_VOODOO, "Voodoo"),
DEVICE( STALLION, STALLION_ECHPCI832,"EasyConnection 8/32"),
DEVICE( STALLION, STALLION_ECHPCI864,"EasyConnection 8/64"),
DEVICE( STALLION, STALLION_EIOPCI,"EasyIO"),
DEVICE( SIGMADES, SIGMADES_6425, "REALmagic64/GX"),
DEVICE( OPTIBASE, OPTIBASE_FORGE, "MPEG Forge"),
DEVICE( OPTIBASE, OPTIBASE_FUSION,"MPEG Fusion"),
......@@ -371,6 +385,9 @@ struct pci_dev_info dev_info[] = {
DEVICE( S3, S3_PLATO_PXG, "PLATO/PX (graphics)"),
DEVICE( S3, S3_ViRGE_DXGX, "ViRGE/DX or /GX"),
DEVICE( S3, S3_ViRGE_GX2, "ViRGE/GX2"),
DEVICE( S3, S3_ViRGE_MX, "ViRGE/MX"),
DEVICE( S3, S3_ViRGE_MXP, "ViRGE/MX+"),
DEVICE( S3, S3_ViRGE_MXPMV, "ViRGE/MX+MV"),
DEVICE( INTEL, INTEL_82375, "82375EB"),
DEVICE( INTEL, INTEL_82424, "82424ZX Saturn"),
DEVICE( INTEL, INTEL_82378, "82378IB"),
......@@ -582,6 +599,7 @@ const char *pci_strvendor(unsigned int vendor)
case PCI_VENDOR_ID_APPLE: return "Apple";
case PCI_VENDOR_ID_NEXGEN: return "Nexgen";
case PCI_VENDOR_ID_QLOGIC: return "Q Logic";
case PCI_VENDOR_ID_CYRIX: return "Cyrix";
case PCI_VENDOR_ID_LEADTEK: return "Leadtek Research";
case PCI_VENDOR_ID_CONTAQ: return "Contaq";
case PCI_VENDOR_ID_FOREX: return "Forex";
......@@ -637,6 +655,7 @@ const char *pci_strvendor(unsigned int vendor)
case PCI_VENDOR_ID_RP: return "Comtrol";
case PCI_VENDOR_ID_CYCLADES: return "Cyclades";
case PCI_VENDOR_ID_3DFX: return "3Dfx";
case PCI_VENDOR_ID_STALLION: return "Stallion Technologies";
case PCI_VENDOR_ID_SIGMADES: return "Sigma Designs";
case PCI_VENDOR_ID_OPTIBASE: return "Optibase";
case PCI_VENDOR_ID_ENSONIQ: return "Ensoniq";
......
......@@ -9359,8 +9359,7 @@ static int ncr53c8xx_pci_init(Scsi_Host_Template *tpnt,
#if defined(__i386) && !defined(MODULE)
if ((driver_setup.pci_fix_up & 1) &&
(chip->features & FE_CLSE) && cache_line_size == 0) {
extern char x86;
switch(x86) {
switch(boot_cpu_data.x86) {
case 4: cache_line_size = 4; break;
case 5: cache_line_size = 8; break;
}
......
......@@ -995,7 +995,6 @@ st_write(struct file * filp, const char * buf, size_t count, loff_t *ppos)
return -ENXIO;
}
STp = &(scsi_tapes[dev]);
if (STp->ready != ST_READY) {
if (STp->ready == ST_NO_TAPE)
return (-ENOMEDIUM);
......@@ -1510,7 +1509,6 @@ st_read(struct file * filp, char * buf, size_t count, loff_t *ppos)
return -ENXIO;
}
STp = &(scsi_tapes[dev]);
if (STp->ready != ST_READY) {
if (STp->ready == ST_NO_TAPE)
return (-ENOMEDIUM);
......@@ -2298,10 +2296,9 @@ st_int_ioctl(struct inode * inode,
ioctl_result = (STp->buffer)->last_result_fatal;
scsi_release_command(SCpnt);
SCpnt = NULL;
if (!ioctl_result) { /* SCSI command successful */
scsi_release_command(SCpnt);
SCpnt = NULL;
STps->drv_block = blkno;
STps->drv_file = fileno;
STps->at_sm = at_sm;
......@@ -2349,7 +2346,8 @@ st_int_ioctl(struct inode * inode,
STp->partition = 0;
}
} else { /* SCSI command was not completely successful */
} else { /* SCSI command was not completely successful. Don't return
from this block without releasing the SCSI command block! */
if (SCpnt->sense_buffer[2] & 0x40) {
if (cmd_in != MTBSF && cmd_in != MTBSFM &&
......@@ -2430,6 +2428,9 @@ st_int_ioctl(struct inode * inode,
if (cmd_in == MTLOCK)
STp->door_locked = ST_LOCK_FAILS;
scsi_release_command(SCpnt);
SCpnt = NULL;
}
return ioctl_result;
......@@ -2591,7 +2592,6 @@ set_location(struct inode * inode, unsigned int block, int partition,
if (!SCpnt)
return (-EBUSY);
SCpnt->request.rq_status = RQ_INACTIVE; /* Mark as not busy */
STps->drv_block = STps->drv_file = (-1);
STps->eof = ST_NOEOF;
if ((STp->buffer)->last_result_fatal != 0) {
......
OBJS=
ifdef CONFIG_AD1848
OBJS := $(OBJS) ad1848.o
endif
ifdef CONFIG_YM3812
OBJS := $(OBJS) adlib_card.o
endif
ifdef CONFIG_AUDIO
OBJS := $(OBJS) audio.o
endif
ifdef CONFIG_CS4232
OBJS := $(OBJS) cs4232.o
endif
ifdef CONFIG_AUDIO
OBJS := $(OBJS) dmabuf.o
endif
ifdef CONFIG_GUSHW
OBJS := $(OBJS) gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
endif
ifdef CONFIG_MAD16
OBJS := $(OBJS) mad16.o
endif
ifdef CONFIG_MAUI
OBJS := $(OBJS) maui.o
endif
ifdef CONFIG_MIDI
OBJS := $(OBJS) midi_synth.o midibuf.o
endif
ifdef CONFIG_MPU401
OBJS := $(OBJS) mpu401.o
else
ifdef CONFIG_MPU_EMU
OBJS := $(OBJS) mpu401.o
endif
endif
ifdef CONFIG_YM3812
OBJS := $(OBJS) opl3.o
endif
ifdef CONFIG_PAS
OBJS := $(OBJS) pas2_card.o pas2_midi.o pas2_mixer.o pas2_pcm.o
endif
ifdef CONFIG_PSS
OBJS := $(OBJS) pss.o
endif
ifdef CONFIG_SBDSP
OBJS := $(OBJS) sb_card.o sb_common.o sb_audio.o sb_mixer.o sb_midi.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sequencer.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sound_timer.o
endif
ifdef CONFIG_SSCAPEHW
OBJS := $(OBJS) sscape.o
endif
ifdef CONFIG_TRIX
OBJS := $(OBJS) trix.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sys_timer.o
endif
ifdef CONFIG_UART6850
OBJS := $(OBJS) uart6850.o
endif
ifdef CONFIG_UART401
OBJS := $(OBJS) uart401.o
endif
ifdef CONFIG_OPL3SA1
OBJS := $(OBJS) opl3sa.o
endif
ifdef CONFIG_SOFTOSS
OBJS := $(OBJS) softoss.o softoss_rs.o
endif
ifdef CONFIG_VMIDI
OBJS := $(OBJS) v_midi.o
endif
OBJS=
ifdef CONFIG_AD1848
OBJS := $(OBJS) ad1848.o
endif
ifdef CONFIG_YM3812
OBJS := $(OBJS) adlib_card.o
endif
ifdef CONFIG_AUDIO
OBJS := $(OBJS) audio.o
endif
ifdef CONFIG_CS4232
OBJS := $(OBJS) cs4232.o
endif
ifdef CONFIG_AUDIO
OBJS := $(OBJS) dmabuf.o
endif
ifdef CONFIG_GUSHW
OBJS := $(OBJS) gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
endif
ifdef CONFIG_MAD16
OBJS := $(OBJS) mad16.o
endif
ifdef CONFIG_MAUI
OBJS := $(OBJS) maui.o
endif
ifdef CONFIG_MIDI
OBJS := $(OBJS) midi_synth.o midibuf.o
endif
ifdef CONFIG_MPU401
OBJS := $(OBJS) mpu401.o
else
ifdef CONFIG_MPU_EMU
OBJS := $(OBJS) mpu401.o
endif
endif
ifdef CONFIG_YM3812
OBJS := $(OBJS) opl3.o
endif
ifdef CONFIG_PAS
OBJS := $(OBJS) pas2_card.o pas2_midi.o pas2_mixer.o pas2_pcm.o
endif
ifdef CONFIG_PSS
OBJS := $(OBJS) pss.o
endif
ifdef CONFIG_SBDSP
OBJS := $(OBJS) sb_card.o sb_common.o sb_audio.o sb_mixer.o sb_midi.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sequencer.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sound_timer.o
endif
ifdef CONFIG_SSCAPEHW
OBJS := $(OBJS) sscape.o
endif
ifdef CONFIG_TRIX
OBJS := $(OBJS) trix.o
endif
ifdef CONFIG_SEQUENCER
OBJS := $(OBJS) sys_timer.o
endif
ifdef CONFIG_UART6850
OBJS := $(OBJS) uart6850.o
endif
ifdef CONFIG_UART401
OBJS := $(OBJS) uart401.o
endif
ifdef CONFIG_OPL3SA1
OBJS := $(OBJS) opl3sa.o
endif
ifdef CONFIG_SOFTOSS
OBJS := $(OBJS) softoss.o softoss_rs.o
endif
This diff is collapsed.
#
# Sound driver configuration
#
#--------
# There is another confic script which is compatible with rest of
# the kernel. It can be activated by running 'make mkscript' in this
# directory. Please note that this is an _experimental_ feature which
# doesn't work with all cards (PSS, SM Wave, AudioTriX Pro, Maui).
#--------
#
$MAKE -C drivers/sound config || exit 1
bool 'Additional low level drivers' CONFIG_LOWLEVEL_SOUND
if [ "$CONFIG_LOWLEVEL_SOUND" = "y" ]; then
bool 'ACI mixer (miroPCM12)' CONFIG_ACI_MIXER
bool 'AWE32 synth' CONFIG_AWE32_SYNTH
bool 'Gallant Audio Cards (SC-6000 and SC-6600 based)' CONFIG_AEDSP16
if [ "$CONFIG_AEDSP16" = "y" ]; then
comment 'SC-6600 Audio Cards have no jumper switches at all'
bool 'SC-6600 based audio cards (new Audio Excel DSP 16)' CONFIG_SC6600
if [ "$CONFIG_SB" = "y" -a "$CONFIG_AEDSP16_MSS" != "y" ]; then
bool 'Audio Excel DSP 16 (SBPro emulation)' CONFIG_AEDSP16_SBPRO
if [ "$CONFIG_AEDSP16_SBPRO" = "y" ]; then
comment 'Audio Excel DSP 16 [Sound Blaster Pro]'
hex 'I/O base for Audio Excel DSP 16 220 or 240' \
AEDSP16_BASE $SBC_BASE
int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' \
AEDSP16_SBC_IRQ $SBC_IRQ
int 'Audio Excel DSP 16 DMA 0, 1 or 3' AEDSP16_SBC_DMA $SBC_DMA
fi
fi
if [ "$CONFIG_MSS" = "y" -a "$CONFIG_AEDSP16_SBPRO" != "y" ]; then
bool 'Audio Excel DSP 16 (MSS emulation)' CONFIG_AEDSP16_MSS
if [ "$CONFIG_AEDSP16_MSS" = "y" ]; then
comment 'Audio Excel DSP 16 [Microsoft Sound System]'
hex 'I/O base for Audio Excel DSP 16 220 or 240' AEDSP16_BASE 220
int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' \
AEDSP16_MSS_IRQ $MSS_IRQ
int 'Audio Excel DSP 16 DMA 0, 1 or 3' AEDSP16_MSS_DMA $MSS_DMA
fi
fi
if [ "$CONFIG_MPU401" = "y" ]; then
bool 'Audio Excel DSP 16 (MPU401 emulation)' CONFIG_AEDSP16_MPU401
if [ "$CONFIG_AEDSP16_MPU401" = "y" ]; then
comment 'Audio Excel DSP 16 [MPU-401]'
if [ "$CONFIG_AEDSP16_SBPRO" != "y" \
-a "$CONFIG_AEDSP16_MSS" != "y" ]; then
hex 'I/O base for Audio Excel DSP 16 220 or 240' AEDSP16_BASE 220
fi
int 'MPU401 IRQ for Audio Excel DSP 16 5, 7, 9, 10 or 0 (disable)' \
AEDSP16_MPU_IRQ $MPU_IRQ
fi
fi
if [ "$CONFIG_SC6600" = "y" ]; then
comment 'SC-6600 specific configuration'
bool 'Activate SC-6600 Joystick Interface' CONFIG_SC6600_JOY
int 'SC-6600 CDROM Interface (4=None, 3=IDE, 1=Panasonic, 0=?Sony?)' \
CONFIG_SC6600_CDROM 4
hex 'SC-6600 CDROM Interface I/O Address' CONFIG_SC6600_CDROMBASE 0
fi
fi
fi
# This used to be a computer generated file, but it's not any more.
# Edit all you need!
ifdef CONFIG_PSS
ifneq ($(CONFIG_MPU_EMU),Y)
CONFIG_MPU_EMU=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_MPU_EMU),Y)
CONFIG_MPU_EMU=y
endif
endif
ifdef CONFIG_CS4232
ifneq ($(CONFIG_MPU_EMU),Y)
CONFIG_MPU_EMU=y
endif
endif
ifdef CONFIG_MAUI
ifneq ($(CONFIG_MPU_EMU),Y)
CONFIG_MPU_EMU=y
endif
endif
ifdef CONFIG_PSS
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_GUS16
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_GUSMAX
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_MSS
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_CS4232
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_OPL3SA1
ifneq ($(CONFIG_AD1848),Y)
CONFIG_AD1848=y
endif
endif
ifdef CONFIG_SB
ifneq ($(CONFIG_SBDSP),Y)
CONFIG_SBDSP=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_SBDSP),Y)
CONFIG_SBDSP=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_SBDSP),Y)
CONFIG_SBDSP=y
endif
endif
ifdef CONFIG_SB
ifneq ($(CONFIG_UART401),Y)
CONFIG_UART401=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_UART401),Y)
CONFIG_UART401=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_UART401),Y)
CONFIG_UART401=y
endif
endif
ifdef CONFIG_OPL3SA1
ifneq ($(CONFIG_UART401),Y)
CONFIG_UART401=y
endif
endif
ifdef CONFIG_GUS
ifneq ($(CONFIG_GUSHW),Y)
CONFIG_GUSHW=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_SSCAPEHW),Y)
CONFIG_SSCAPEHW=y
endif
endif
ifdef CONFIG_PAS
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_SB
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_ADLIB
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_GUS
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_MPU401
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_PSS
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_GUS16
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_GUSMAX
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_MSS
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_CS4232
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_MAUI
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_OPL3SA1
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_SOFTOSS
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_YM3812_AUTO
ifneq ($(CONFIG_SEQUENCER),Y)
CONFIG_SEQUENCER=y
endif
endif
ifdef CONFIG_PAS
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_SB
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_GUS
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_PSS
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_GUS16
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_GUSMAX
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_MSS
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_CS4232
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_OPL3SA1
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_SOFTOSS
ifneq ($(CONFIG_AUDIO),Y)
CONFIG_AUDIO=y
endif
endif
ifdef CONFIG_PAS
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_SB
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_GUS
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_MPU401
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_PSS
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_GUS16
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_GUSMAX
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_SSCAPE
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_TRIX
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_MAD16
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_CS4232
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_MAUI
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_OPL3SA1
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
ifdef CONFIG_SOFTOSS
ifneq ($(CONFIG_MIDI),Y)
CONFIG_MIDI=y
endif
endif
......@@ -24,21 +24,9 @@ ifeq ($(ARCH),m68k)
clean:
rm -f core *.o *.a *.s
# dummy rule to keep 'make xconfig' happy
mkscript:
# More dummy targets for make [menu]config
mkscript:
kernelconfig:
else
ifeq (.defines,$(wildcard .defines))
include .defines
#include .objects
endif
TARGET_OS=linux
include Defines
ifndef TOPDIR
TOPDIR=/usr/src/linux
......@@ -92,7 +80,7 @@ else
ifeq ($(CONFIG_GUS),m)
M_OBJS += gus.o
endif
ifeq ($(CONFIG_GUSMAX),m)
ifeq ($(CONFIG_GUSMAX),y)
ifneq ($(CONFIG_MSS),y)
CONFIG_MSS = m
endif
......@@ -259,33 +247,80 @@ sound.o: soundcard.o dev_table.o sound_switch.o audio.o dmabuf.o sequencer.o sys
gus.o: gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
ld -r -o gus.o gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
kernelconfig: setup
rm -f configure
$(HOSTCC) -o configure configure.c
./configure fixedlocal > local.h
./configure fixeddefines > .defines
@echo \#define SOUND_CONFIG_DATE \"`date`\" >> local.h
@echo \#define SOUND_CONFIG_BY \"`whoami`\" >> local.h
# @echo \#define SOUND_CONFIG_HOST \"`hostname`\" >> local.h 2>/dev/null
# @echo \#define SOUND_CONFIG_DOMAIN \"`hostname -d`\" >> local.h 2>/dev/null
@echo \#define SOUND_UNAME_A \"`uname -a`\" >> local.h
configure: configure.c
$(HOSTCC) -o configure configure.c
@cat .blurb
setup:
@echo Compiling Sound Driver v $(VERSION) for Linux
mkscript:
config: configure
@$(MAKE) setup
@./configure > local.h
@echo \#define SOUND_CONFIG_DATE \"`date`\" >> local.h
@echo \#define SOUND_CONFIG_BY \"`whoami`\" >> local.h
# @echo \#define SOUND_CONFIG_HOST \"`hostname`\" >> local.h 2>/dev/null
# @echo \#define SOUND_CONFIG_DOMAIN \"`hostname -d`\" >> local.h 2>/dev/null
@echo \#define SOUND_UNAME_A \"`uname -a`\" >> local.h
# Firmware files that need translation
#
# The translated files are protected by a file that keeps track
# of what name was used to build them. If the name changes, they
# will be forced to be remade.
bin2hex: bin2hex.c
$(HOSTCC) -o bin2hex bin2hex.c
hex2hex: hex2hex.c
$(HOSTCC) -o hex2hex hex2hex.c
ifeq ($(MAUI_HAVE_BOOT),y)
MAUI_BOOT_FILE := $(patsubst "%", %, $(MAUI_BOOT_FILE))
maui.o: maui_boot.h
maui_boot.h: $(MAUI_BOOT_FILE) bin2hex
bin2hex maui_os < "$(MAUI_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(MAUI_BOOT_FILE)),$$(strip $$(MAUI_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
endif
ifeq ($(PSS_HAVE_BOOT),y)
PSS_BOOT_FILE := $(patsubst "%", %, $(PSS_BOOT_FILE))
pss.o: pss_boot.h
pss_boot.h: $(PSS_BOOT_FILE) bin2hex
bin2hex pss_synth < "$(PSS_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(PSS_BOOT_FILE)),$$(strip $$(PSS_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
endif
ifeq ($(TRIX_HAVE_BOOT),y)
TRIX_BOOT_FILE := $(patsubst "%", %, $(TRIX_BOOT_FILE))
trix.o: trix_boot.h
trix_boot.h: $(TRIX_BOOT_FILE) hex2hex
hex2hex trix_boot < "$(TRIX_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(TRIX_BOOT_FILE)),$$(strip $$(strip $$(TRIX_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
endif
# Find boot files whose source file names have changed and force rebuild.
FILES_BOOT_UP_TO_DATE :=
FILES_BOOT_EXIST := $(wildcard .*.boot)
ifneq ($(FILES_BOOT_EXIST),)
include $(FILES_BOOT_EXIST)
endif
FILES_BOOT_CHANGED := $(strip \
$(filter-out $(FILES_BOOT_UP_TO_DATE), \
maui_boot.h pss_boot.h trix_boot.h))
ifneq ($(FILES_BOOT_CHANGED),)
$(FILES_BOOT_CHANGED): dummy
endif
endif
......@@ -18,32 +18,8 @@ IMPORTANT! This document covers only cards that were "known" when
http://www.opensound.com/ossfree for info about
cards introduced recently.
The following covers mainly the "old" configuration
method (make config). Most of it is valid for the "new"
configuration (make menuconfig/xconfig) too.
Cards having some kind of loadable "microcode" such as
PSS, SM Wave, AudioTrix Pro and Maui/Tropez must be
configured using the old method. The new one will not
work with them. The "old" method is used by default by
"make config". "make xconfig" will always use the "new"
method. "make menuconfig" will allow you to select which
method to use. After you have used the "new" method once
it will always be used when you use any of the config
programs. To return back to the "old" method you should
execute "cp Config.std Config.in" in linux/drivers/sound.
The /etc/soundconf file (forget it if you don't know what
this file does) contains settings that are used only by
the "old" method. Don't ever think the "active" settings
are stored there (they really are _NOT_ stored
there). Don't try to edit /etc/soundconf or any other
kernel or sound driver config files manually. The _only_
proper ways to change the settings are make config or
make menuconfig (the "old" method).
When using make xconfig and/or make menuconfig, you should
carefully check each sound configuration option (particularly
When configuring the sound driver, you should carefully
check each sound configuration option (particularly
"Support for /dev/dsp and /dev/audio"). The default values
offered by these programs are not necessarily valid.
......@@ -377,9 +353,6 @@ MediaTrix AudioTrix Pro
chips. The OPL4 mode is supported by a microcontroller running a
General MIDI emulator. There is also a SB 1.5 compatible playback mode.
NOTE! You will have to use the "old" config script when configuring
AudioTrix Pro.
Ensoniq SoundScape and compatibles
Ensoniq has designed a soundcard architecture based on the
OTTO synthesizer chip used in their professional MIDI synthesizers.
......@@ -411,8 +384,8 @@ OPTi MAD16 and Mozart based cards
Audio Excel DSP16
Support for this card was written by Riccardo Faccetti
(riccardo@cdc8g5.cdc.polimi.it). The AEDSP16 driver included in
the lowlevel/ directory. To use it you should use the "new" config
script and to enable the "Additional low level drivers" option.
the lowlevel/ directory. To use it you should enable the
"Additional low level drivers" option.
Crystal CS4232 and CS4236 based cards such as AcerMagic S23, TB Tropez _Plus_ and
many PC motherboards (Compaq, HP, Intel, ...)
......@@ -431,8 +404,6 @@ Turtle Beach Maui and Tropez "classic"
described in the Maui/Tropez User's manual.
There is now full initialization support too. The audio side of
the Tropez is based on the MAD16 chip (see above).
NOTE! You will have to use the "old" config script when configuring
Maui or Tropez.
NOTE! Tropez Plus is different card than Tropez "classic" and will not
work fully in Linux. You can get audio features working by configuring
the card as a CS4232 based card (above).
......@@ -529,29 +500,20 @@ the kernel following instructions in the kernel README.
The sound driver configuration dialog
-------------------------------------
All config information of the sound driver is written to file
linux/drivers/sound/local.h. You may save the old version is this file and
use it again in case you want to use the same config later. In this case
just answer n to each question made by the sound config program and put
the original local.h back before running "make dep".
Don't do this if the version number of the sound driver has changed. In this
case you have to enter the configuration information again.
If you already have the sound driver installed, consult printout of
"cat /dev/sndstat" when configuring the driver again. It gives the I/O,
IRQ and DMA settings you have used earlier.
The sound config program (linux/drivers/sound/configure) starts by making
some yes/no questions. Be careful when answering to these questions since
answering y to a question may prevent some later ones from being asked. For
example don't answer y to the first question (PAS16) if you don't really
have a PAS16. Don't enable more cards than you really need since they
just consume memory. Also some drivers (like MPU401) may conflict with your
SCSI controller and prevent kernel from booting. If you card was in the list
of supported cards (above), please look at the card specific config
instructions (later in this file) before starting to configure. Some cards
must be configured in way which is not obvious.
Sound configuration starts by making some yes/no questions. Be careful
when answering to these questions since answering y to a question may
prevent some later ones from being asked. For example don't answer y to
the first question (PAS16) if you don't really have a PAS16. Don't enable
more cards than you really need since they just consume memory. Also
some drivers (like MPU401) may conflict with your SCSI controller and
prevent kernel from booting. If you card was in the list of supported
cards (above), please look at the card specific config instructions
(later in this file) before starting to configure. Some cards must be
configured in way which is not obvious.
So here is the beginning of the config dialog. Answer 'y' or 'n' to these
questions. The default answer is shown so that (y/n) means 'y' by default and
......@@ -688,9 +650,7 @@ card specific configuration information. Usually just a set of
I/O address, IRQ and DMA numbers are asked. With some cards the program
asks for some files to be used during initialization of the card. For example
many cards have a DSP chip or microprocessor which must be initialized by
downloading a program (microcode) file to the card. In some cases this file
is written to a .h file by the config program and then included to the driver
during compile.
downloading a program (microcode) file to the card.
Instructions for answering these questions are given in the next section.
......@@ -1041,9 +1001,6 @@ specific section for instructions about configuring more than one MPU401 cards.
Logitech Soundman Wave
----------------------
NOTE! You will have to use the "old" config script when configuring
SM Wave.
Read the above MV Jazz specific instructions first.
The Logitech SoundMan Wave (don't confuse with the SM16 or SM Games) is
......
#include <stdio.h>
int main( int argc, const char * argv [] )
{
const char * varname = argv[1];
int i = 0;
int c;
printf( "/* automatically generated by bin2hex */\n" );
printf( "static unsigned char %s [] =\n{\n", varname );
while ( ( c = getchar( ) ) != EOF )
{
if ( i != 0 && i % 10 == 0 )
printf( "\n" );
printf( "0x%02lx,", c & 0xFFl );
i++;
}
printf( "};\n#define %sLen %d\n", varname, i );
return 0;
}
This diff is collapsed.
......@@ -15,6 +15,7 @@
#ifndef _DEV_TABLE_H_
#define _DEV_TABLE_H_
#include <linux/config.h>
/*
* Sound card numbers 27 to 999. (1 to 26 are defined in soundcard.h)
......
/*
* This file is a part of configure.c
*
* hex2hex reads an input file in Intel HEX format and produces
* an (unsigned char) array which contains the bytes and writes it to the
* output file using C syntax
* hex2hex reads stdin in Intel HEX format and produces an
* (unsigned char) array which contains the bytes and writes it
* to stdout using C syntax
*/
#include <stdio.h>
#include <stdlib.h>
#define ABANDON(why) { fprintf(stderr, "%s\n", why); exit(1); }
#define MAX_SIZE (256*1024)
#define ABANDON(why) { \
fprintf(stderr, "%s: " why "\n", source); \
return 0; \
}
unsigned char buf[MAX_SIZE];
int loadhex(FILE *inf, unsigned char *buf, char *source)
int loadhex(FILE *inf, unsigned char *buf)
{
int l=0, c, i;
......@@ -65,48 +64,24 @@ int loadhex(FILE *inf, unsigned char *buf, char *source)
return l;
}
int hex2hex(char *source, char *target, char *varline)
int main( int argc, const char * argv [] )
{
FILE *inf, *outf;
const char * varline = argv[1];
int i,l;
unsigned char buf[MAX_SIZE];
if ((inf=fopen(source, "r"))==NULL)
{
perror(source);
return 0;
}
if ((outf=fopen(target, "w"))==NULL)
{
perror(target);
fclose(inf);
return 0;
}
l=loadhex(inf, buf, source);
if (l<=0)
{
fclose(inf);
fclose(outf);
return l;
}
l = loadhex(stdin, buf);
fprintf(outf, "/*\n *\t Computer generated file. Do not edit.\n */\n");
fprintf(outf, "static int %s_len = %d;\n", varline, l);
fprintf(outf, "static unsigned char %s[] = {\n", varline);
printf("/*\n *\t Computer generated file. Do not edit.\n */\n");
printf("static int %s_len = %d;\n", varline, l);
printf("static unsigned char %s[] = {\n", varline);
for (i=0;i<l;i++)
{
if (i) fprintf(outf, ",");
if (i && !(i % 16)) fprintf(outf, "\n");
fprintf(outf, "0x%02x", buf[i]);
if (i) printf(",");
if (i && !(i % 16)) printf("\n");
printf("0x%02x", buf[i]);
}
fprintf(outf, "\n};\n\n");
fclose(inf);
fclose(outf);
return 1;
printf("\n};\n\n");
return 0;
}
/* Computer generated file. Please don't edit! */
#include <linux/config.h>
#define KERNEL_COMPATIBLE_CONFIG
#define SELECTED_SOUND_OPTIONS 0x00000000
......
......@@ -41,12 +41,11 @@ static int *maui_osp;
static int (*orig_load_patch) (int dev, int format, const char *addr,
int offs, int count, int pmgr_flag) = NULL;
#ifdef HAVE_MAUI_BOOT
#ifdef MAUI_HAVE_BOOT
#include "maui_boot.h"
#else
static unsigned char *maui_os = NULL;
static int maui_osLen = 0;
static int maui_osLen = 0;
#endif
static struct wait_queue *maui_sleeper = NULL;
......
......@@ -1204,7 +1204,6 @@ void cleanup_module(void)
{
if (devc)
{
vfree(devc);
devc = NULL;
sound_unload_synthdev(me);
}
......
......@@ -51,13 +51,11 @@
#include "coproc.h"
#ifdef PSS_HAVE_LD
#include "synth-ld.h"
#ifdef PSS_HAVE_BOOT
#include "pss_boot.h"
#else
static int pss_synthLen = 0;
static unsigned char *pss_synth =
NULL;
static unsigned char *pss_synth = NULL;
static int pss_synthLen = 0;
#endif
typedef struct pss_confdata
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment