Commit bb62d5cb authored by Linus Torvalds's avatar Linus Torvalds

Linux 2.1.87

Ok, 2.1.87 is out there on ftp.kernel.org now, and it has the clever
PROT_NONE thing done. It seems to work for the little test-case I wrote,
and I also verified that swapping still works, so it seems to be all ok.
I'd still like people who have test programs or similar to actually check
it out,

                Linus
parent a03099aa
......@@ -364,7 +364,7 @@ S: USA
N: Eddie C. Dost
E: ecd@skynet.be
D: Linux/Sparc kernel hacker
D: New Linux/Sparc maintainer (while davem is at SGI)
D: Linux/Sparc maintainer
S: Rue de la Chapelle 51
S: 4850 Moresnet
S: Belgium
......@@ -1049,7 +1049,7 @@ D: Initial implementation of VC's, pty's and select()
N: Pavel Machek
E: pavel@atrey.karlin.mff.cuni.cz
D: Softcursor for vga, hypertech cdrom support, vcsa bugfix
D: Network block device
D: Network block device, sun4/330 port
S: Volkova 1131
S: 198 00 Praha 9
S: Czech Republic
......@@ -1175,8 +1175,8 @@ D: Sparc hacker
D: New Linux-Activists maintainer
D: Linux Emacs elf/qmagic support + other libc/gcc things
D: Yee bore de yee bore! ;-)
S: 2 Bristol Court
S: East Brunswick, New Jersey 08816
S: 111 Alta Tierra Court
S: Los Gatos, CA 95032
S: USA
N: Rick Miller
......
......@@ -518,8 +518,8 @@ M: Alan Cox@linux.org
S: Maintained
SPARC:
P: David S. Miller
M: davem@caip.rutgers.edu
P: Eddie C. Dost
M: ecd@skynet.be
L: sparclinux@vger.rutgers.edu
S: Maintained
......
......@@ -637,3 +637,12 @@ ENTRY(gdt_table)
.quad 0x00809a0000000000 /* 0x50 APM CS 16 code (16 bit) */
.quad 0x00c0920000000000 /* 0x58 APM DS data */
.fill 2*NR_TASKS,8,0 /* space for LDT's and TSS's etc */
/*
* This is to aid debugging, the various locking macros will be putting
* code fragments here. When an oops occurs we'd rather know that it's
* inside the .text.lock section rather than as some offset from whatever
* function happens to be last in the .text segment.
*/
.section .text.lock
ENTRY(stext_lock)
......@@ -716,10 +716,8 @@ void enable_ioapic_irq (unsigned int irq)
irq_exit(cpu, irq);
__restore_flags(flags);
} else {
enable_IO_APIC_irq(irq);
} else
spin_unlock_irqrestore(&irq_controller_lock, flags);
}
}
#endif
......
......@@ -1420,7 +1420,9 @@ void smp_apic_timer_interrupt(struct pt_regs * regs)
* want to be able to accept NMI tlb invalidates
* during this time.
*/
spin_lock(&irq_controller_lock);
ack_APIC_irq ();
spin_unlock(&irq_controller_lock);
smp_local_timer_interrupt(regs);
}
......
......@@ -148,7 +148,7 @@ static int allowed_drive_mask = 0x33;
#include <asm/io.h>
#include <asm/uaccess.h>
static int can_use_virtual_dma=2;
static int can_use_virtual_dma=0;
/* =======
* can use virtual DMA:
* 0 = use of virtual DMA disallowed by config
......
......@@ -1297,11 +1297,10 @@ static int bttv_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
struct video_audio v;
if(copy_from_user(&v,arg, sizeof(v)))
return -EFAULT;
if(v.audio!=0)
return -EINVAL;
if(v.flags&VIDEO_AUDIO_MUTE)
audio(btv, AUDIO_MUTE);
if(v.audio<0||v.audio>2)
return -EINVAL;
bt848_muxsel(btv,v.audio);
if(!(v.flags&VIDEO_AUDIO_MUTE))
audio(btv, AUDIO_UNMUTE);
btv->audio_dev=v;
......
This diff is collapsed.
......@@ -258,48 +258,48 @@ bin2hex: bin2hex.c
hex2hex: hex2hex.c
$(HOSTCC) -o hex2hex hex2hex.c
ifeq ($(MAUI_HAVE_BOOT),y)
ifeq ($(CONFIG_MAUI_HAVE_BOOT),y)
MAUI_BOOT_FILE := $(patsubst "%", %, $(MAUI_BOOT_FILE))
CONFIG_MAUI_BOOT_FILE := $(patsubst "%", %, $(CONFIG_MAUI_BOOT_FILE))
maui.o: maui_boot.h
maui_boot.h: $(MAUI_BOOT_FILE) bin2hex
bin2hex maui_os < "$(MAUI_BOOT_FILE)" > $@
maui_boot.h: $(CONFIG_MAUI_BOOT_FILE) bin2hex
bin2hex maui_os < "$(CONFIG_MAUI_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(MAUI_BOOT_FILE)),$$(strip $$(MAUI_BOOT_FILE)))'; \
echo 'ifeq ($(strip $(CONFIG_MAUI_BOOT_FILE)),$$(strip $$(CONFIG_MAUI_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
endif
ifeq ($(PSS_HAVE_BOOT),y)
ifeq ($(CONFIG_PSS_HAVE_BOOT),y)
PSS_BOOT_FILE := $(patsubst "%", %, $(PSS_BOOT_FILE))
CONFIG_PSS_BOOT_FILE := $(patsubst "%", %, $(CONFIG_PSS_BOOT_FILE))
pss.o: pss_boot.h
pss_boot.h: $(PSS_BOOT_FILE) bin2hex
bin2hex pss_synth < "$(PSS_BOOT_FILE)" > $@
pss_boot.h: $(CONFIG_PSS_BOOT_FILE) bin2hex
bin2hex pss_synth < "$(CONFIG_PSS_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(PSS_BOOT_FILE)),$$(strip $$(PSS_BOOT_FILE)))'; \
echo 'ifeq ($(strip $(CONFIG_PSS_BOOT_FILE)),$$(strip $$(CONFIG_PSS_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
endif
ifeq ($(TRIX_HAVE_BOOT),y)
ifeq ($(CONFIG_TRIX_HAVE_BOOT),y)
TRIX_BOOT_FILE := $(patsubst "%", %, $(TRIX_BOOT_FILE))
CONFIG_TRIX_BOOT_FILE := $(patsubst "%", %, $(CONFIG_TRIX_BOOT_FILE))
trix.o: trix_boot.h
trix_boot.h: $(TRIX_BOOT_FILE) hex2hex
hex2hex trix_boot < "$(TRIX_BOOT_FILE)" > $@
trix_boot.h: $(CONFIG_TRIX_BOOT_FILE) hex2hex
hex2hex trix_boot < "$(CONFIG_TRIX_BOOT_FILE)" > $@
@ ( \
echo 'ifeq ($(strip $(TRIX_BOOT_FILE)),$$(strip $$(strip $$(TRIX_BOOT_FILE)))'; \
echo 'ifeq ($(strip $(CONFIG_TRIX_BOOT_FILE)),$$(strip $$(CONFIG_TRIX_BOOT_FILE)))'; \
echo 'FILES_BOOT_UP_TO_DATE += $@'; \
echo 'endif' \
) > .$@.boot
......
......@@ -3,7 +3,7 @@ Configuring version 3.8 (for Linux) with some most common soundcards
This document describes configuring soundcards with freeware version of
Open Sound Systems (OSS/Free). Information about the commercial version
(OSS/Linux) and it's configuration is available from
(OSS/Linux) and its configuration is available from
http://www.opensound.com/linux.html. Information presented here is
not valid for OSS/Linux.
......@@ -67,7 +67,7 @@ to be the most common cause.
2. Trying to use a PnP (Plug & Play) card just like an ordinary soundcard
-------------------------------------------------------------------------
Plug & Play is a protocol defined by Intel and Microsoft. It let's operating
Plug & Play is a protocol defined by Intel and Microsoft. It lets operating
systems to easily identify and reconfigure I/O ports, IRQs and DMAs of ISA
cards. The problem with PnP cards is that the standard Linux doesn't currently
(versions 2.1.x and earlier) don't support PnP. This means that you will have
......@@ -293,25 +293,26 @@ Yamaha OPL3-SA1
4Front Technologies SoftOSS
SoftOSS is a software based wave table emulation which works with
any 16 bit stereo soundcard. Due to it's nature a fast CPU is
required (P133 is minumum). Althoug SoftOSS doesn _not_ use MMX
any 16 bit stereo soundcard. Due to its nature a fast CPU is
required (P133 is minimum). Although SoftOSS does _not_ use MMX
instructions it has proven out that recent processors (which appear
to have MMX) perform significantly better with SoftOSS than earlier
ones. For example a P166MMX beats a PPro200. SoftOSS should not be used
on 486 or 386 machines.
The amount of CPU load caused by SoftOSS can be controlled by
selecting the SOFTOSS_RATE and SOFTOSS_VOICES parameters properly
(they will be prompted by make config). It's recommended to set
SOFTOSS_VOICES to 32. If you have a P166MMX or faster (PPro200 is
not faster) you can set SOFTOSS_RATE to 44100 (kHz). However with
slower systems it recommended to use sampling rates around 22050
or even 16000 kHz. Selecting too high values for these parameters
may hang your system when playing MIDI files with hight degree of
polyphony (number of concurrently playing notes). It's also possible to
decrease SOFTOSS_VOICES. This makes it possible to use higher sampling
rates. However using fewer voices decreases playback quality more than
decreasing the sampling rate.
The amount of CPU load caused by SoftOSS can be controlled by
selecting the CONFIG_SOFTOSS_RATE and CONFIG_SOFTOSS_VOICES
parameters properly (they will be prompted by make config). It's
recommended to set CONFIG_SOFTOSS_VOICES to 32. If you have a
P166MMX or faster (PPro200 is not faster) you can set
CONFIG_SOFTOSS_RATE to 44100 (kHz). However with slower systems it
recommended to use sampling rates around 22050 or even 16000 kHz.
Selecting too high values for these parameters may hang your
system when playing MIDI files with hight degree of polyphony
(number of concurrently playing notes). It's also possible to
decrease CONFIG_SOFTOSS_VOICES. This makes it possible to use
higher sampling rates. However using fewer voices decreases
playback quality more than decreasing the sampling rate.
SoftOSS keeps the samples loaded on system's RAM so large RAM is
required. SoftOSS should never be used on machines with less than 16M
......@@ -330,7 +331,7 @@ Yamaha OPL3-SA1
*********************************************************************
IMPORTANT NOTICE! The original patch set distributed with Gravis
Ultrasound card is not in public domain (even it's available from
Ultrasound card is not in public domain (even though it's available from
some ftp sites). You should contact Voice Crystal (www.voicecrystal.com)
if you like to use these patches with SoftOSS included in OSS/Free.
*********************************************************************
......@@ -1125,9 +1126,9 @@ the ioctl() for activating the "solo" mode.
The following configuration parameters have worked fine for the PCM12
in Markus Kuhn's system, many other configurations might work, too:
MAD16_BASE=0x530, MAD16_IRQ=11, MAD16_DMA=3, MAD16_DMA2=0,
MAD16_MPU_BASE=0x330, MAD16_MPU_IRQ=10, DSP_BUFFSIZE=65536,
SELECTED_SOUND_OPTIONS=0x00281000.
CONFIG_MAD16_BASE=0x530, CONFIG_MAD16_IRQ=11, CONFIG_MAD16_DMA=3,
CONFIG_MAD16_DMA2=0, CONFIG_MAD16_MPU_BASE=0x330, CONFIG_MAD16_MPU_IRQ=10,
DSP_BUFFSIZE=65536, SELECTED_SOUND_OPTIONS=0x00281000.
The miroSOUND PCM1 pro and the PCM20 are very similar to the PCM12.
Perhaps the same ACI driver also works for these cards, however this
......
Building a loadable sound driver
Building a modular sound driver
================================
Loadable module support in version 3.5 of the driver is mostly rewritten since
the previous version (3.0.1). This means that some things have changed.
To compile the sound driver as a loadable module you have to perform
the following steps:
1) Install modules-1.2.8.tar.gz package (or later if available).
2a) Check that symbol remap_page_range is defined in linux/init/ksyms.c.
Insert a line containing "X(remap_page_range)," if required. The driver will
not load if this line is missing.
2b) Recompile kernel with soundcard support disabled.
3) Boot the new kernel.
4) cd to the sound driver source directory (this directory). It's no
longer required that the sound driver sources are installed in the
kernel source tree (linux/drivers/sound). When installing a separately
distributed sound driver you may install the sources for example to
/usr/src/sound.
5) Execute make in the sound driver source directory. Enter
configuration parameters as described in Readme.cards. Then just wait until
the driver is compiled OK.
6) Copy sound.o to the directory where insmod expects to find it.
("make install" copies it to /lib/modules/misc).
7) Use command "insmod sound" to load the driver.
8) The sound driver can be removed using command "rmmod sound".
Parameters accepted by the loadable sound driver
================================================
Setting DMA buffer size
-----------------------
The driver allocates a DMA buffer (or two for full duplex devices)
every time the audio device (/dev/dsp or /dev/audio) is opened
and frees it when the device is closed. Size of this buffer is defined
when the driver is configured (the last question). The buffer size
can be redefined when loading the driver if required (note that this is
an optional feature which is not normally required). The buffer size
is redefined by adding dma_pagesize= parameter to the insmod command line.
For example:
insmod sound dma_buffsize=32768
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)
it's 128k. Driver selects a suitable buffer size automatically in case
you try to specify an invalid size.
Q: What is the right DMA buffer size?
A: It depends on the sampling rate, machine speed and the load of the system.
Large buffers are required on slow machines, when recording/playing CD-quality
audio or when there are other processes running on the same system. Also
recording to hard disk is likely to require large buffers.
Very small buffers are sufficient when you are just playing 8kHz audio files
on an empty P133 system. Using a 128k buffer just wastes 120k (or 250k)
of valuable physical RAM memory.
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
and 64k on an old 386 system.
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:
GUS driver uses DMA buffers when loading samples to the card.
Ensoniq SoundScape driver uses them when downloading the microcode
file (sndscape.co[012]) to the card. Using large buffers doesn't
increase performance in these cases.
Debugging and tracing
---------------------
Modularized sound driver doesn't display messages during initialization as
the kernel compiled one does. This feature can be turned on by adding
trace_init=1 to the insmod command line.
For example:
insmod sound trace_init=1
The following information is current as of linux-2.1.85. Check the other
readme files, especially Readme.cards, for information not specific to
making sound modular.
First, configure your kernel. This is an idea of what you should be
setting in the sound section:
<M> Sound card support
<M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
I have SoundBlaster. Select your card from the list.
<M> Generic OPL2/OPL3 FM synthesizer support
<M> FM synthesizer (YM3812/OPL-3) support
If you don't set these, you will probably find you can play .wav files
but not .midi. As the help for them says, set them unless you know your
card does not use one of these chips for FM support.
Once you are configured, make zlilo, modules, modules_install; reboot.
Note that it is no longer necessary or possible to configure sound in the
drivers/sound dir. Now one simply configures and makes one's kernel and
modules in the usual way.
Then, add to your /etc/modules.conf or /etc/conf.modules something like:
alias char-major-14 sb
post-install sb modprobe "-k" "adlib_card"
options sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
options adlib_card io=0x388 # FM synthetiser
The effect of this is that the sound driver and all necessary bits and
pieces autoload on demand, assuming you use kerneld (a sound choice) and
autoclean when not in use. Also, options for the device drivers are
set. They will not work without them. Change as appropriate for your card.
If you are not yet using the very cool kerneld, you will have to "modprobe
-k sb" yourself to get things going. Eventually things may be fixed so
that this kludgery is not necessary; for the time being, it seems to work
well.
Replace 'sb' with the driver for your card, and give it the right
options. To find the filename of the driver, look in
/lib/modules/<kernel-version>/misc. Mine looks like:
adlib_card.o # This is the generic OPLx driver
opl3.o # The OPL3 driver
sb.o # <<The SoundBlaster driver. Yours may differ.>>
sound.o # The sound driver
uart401.o # Used by sb, maybe other cards
Whichever card you have, try feeding it the options that would be the
default if you were making the driver wired, not as modules. You can look
at the init_module() code for the card to see what args are expected.
Note that at present there is no way to configure the io, irq and other
parameters for the modular drivers as one does for the wired drivers.. One
needs to pass the modules the necessary parameters as arguments, either
with /etc/modules.conf or with command-line args to modprobe, e.g.
modprobe -k sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
modprobe -k adlib_card io=0x388
recommend using /etc/modules.conf.
I'm afraid I know nothing about anything but my setup, being more of a
text-mode guy anyway. If you have options for other cards or other helpful
hints, send them to me, Jim Bray, jb@as220.org, http://as220.org/jb.
......@@ -460,31 +460,31 @@ int num_sound_drivers = sizeof(sound_drivers) / sizeof (struct driver_info);
struct card_info snd_installed_cards[] =
{
#ifdef CONFIG_PSS
{SNDCARD_PSS, {PSS_BASE, 0, -1, -1}, SND_DEFAULT_ENABLE},
#ifdef PSS_MPU_BASE
{SNDCARD_PSS_MPU, {PSS_MPU_BASE, PSS_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_PSS, {CONFIG_PSS_BASE, 0, -1, -1}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_PSS_MPU_BASE
{SNDCARD_PSS_MPU, {CONFIG_PSS_MPU_BASE, CONFIG_PSS_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#ifdef PSS_MSS_BASE
{SNDCARD_PSS_MSS, {PSS_MSS_BASE, PSS_MSS_IRQ, PSS_MSS_DMA, -1}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_PSS_MSS_BASE
{SNDCARD_PSS_MSS, {CONFIG_PSS_MSS_BASE, CONFIG_PSS_MSS_IRQ, CONFIG_PSS_MSS_DMA, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
#ifdef CONFIG_TRIX
#ifndef TRIX_DMA2
#define TRIX_DMA2 TRIX_DMA
#ifndef CONFIG_TRIX_DMA2
#define CONFIG_TRIX_DMA2 CONFIG_TRIX_DMA
#endif
{SNDCARD_TRXPRO, {TRIX_BASE, TRIX_IRQ, TRIX_DMA, TRIX_DMA2}, SND_DEFAULT_ENABLE},
#ifdef TRIX_SB_BASE
{SNDCARD_TRXPRO_SB, {TRIX_SB_BASE, TRIX_SB_IRQ, TRIX_SB_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_TRXPRO, {CONFIG_TRIX_BASE, CONFIG_TRIX_IRQ, CONFIG_TRIX_DMA, CONFIG_TRIX_DMA2}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_TRIX_SB_BASE
{SNDCARD_TRXPRO_SB, {CONFIG_TRIX_SB_BASE, CONFIG_TRIX_SB_IRQ, CONFIG_TRIX_SB_DMA, -1}, SND_DEFAULT_ENABLE},
#endif
#ifdef TRIX_MPU_BASE
{SNDCARD_TRXPRO_MPU, {TRIX_MPU_BASE, TRIX_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_TRIX_MPU_BASE
{SNDCARD_TRXPRO_MPU, {CONFIG_TRIX_MPU_BASE, CONFIG_TRIX_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
#ifdef CONFIG_OPL3SA1
{SNDCARD_OPL3SA1, {OPL3SA1_BASE, OPL3SA1_IRQ, OPL3SA1_DMA, OPL3SA1_DMA2}, SND_DEFAULT_ENABLE},
#ifdef OPL3SA1_MPU_BASE
{SNDCARD_OPL3SA1_MPU, {OPL3SA1_MPU_BASE, OPL3SA1_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_OPL3SA1, {CONFIG_OPL3SA1_BASE, CONFIG_OPL3SA1_IRQ, CONFIG_OPL3SA1_DMA, CONFIG_OPL3SA1_DMA2}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_OPL3SA1_MPU_BASE
{SNDCARD_OPL3SA1_MPU, {CONFIG_OPL3SA1_MPU_BASE, CONFIG_OPL3SA1_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
......@@ -493,39 +493,39 @@ struct card_info snd_installed_cards[] =
#endif
#ifdef CONFIG_SSCAPE
{SNDCARD_SSCAPE, {SSCAPE_BASE, SSCAPE_IRQ, SSCAPE_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_SSCAPE_MSS, {SSCAPE_MSS_BASE, SSCAPE_MSS_IRQ, SSCAPE_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_SSCAPE, {CONFIG_SSCAPE_BASE, CONFIG_SSCAPE_IRQ, CONFIG_SSCAPE_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_SSCAPE_MSS, {CONFIG_SSCAPE_MSS_BASE, CONFIG_SSCAPE_MSS_IRQ, CONFIG_SSCAPE_DMA, -1}, SND_DEFAULT_ENABLE},
#endif
#ifdef CONFIG_MAD16
#ifndef MAD16_DMA2
#define MAD16_DMA2 MAD16_DMA
#ifndef CONFIG_MAD16_DMA2
#define CONFIG_MAD16_DMA2 CONFIG_MAD16_DMA
#endif
{SNDCARD_MAD16, {MAD16_BASE, MAD16_IRQ, MAD16_DMA, MAD16_DMA2}, SND_DEFAULT_ENABLE},
#ifdef MAD16_MPU_BASE
{SNDCARD_MAD16_MPU, {MAD16_MPU_BASE, MAD16_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_MAD16, {CONFIG_MAD16_BASE, CONFIG_MAD16_IRQ, CONFIG_MAD16_DMA, CONFIG_MAD16_DMA2}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_MAD16_MPU_BASE
{SNDCARD_MAD16_MPU, {CONFIG_MAD16_MPU_BASE, CONFIG_MAD16_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
#ifdef CONFIG_CS4232
#ifndef CS4232_DMA2
#define CS4232_DMA2 CS4232_DMA
#ifndef CONFIG_CS4232_DMA2
#define CONFIG_CS4232_DMA2 CONFIG_CS4232_DMA
#endif
#ifdef CS4232_MPU_BASE
{SNDCARD_CS4232_MPU, {CS4232_MPU_BASE, CS4232_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#ifdef CONFIG_CS4232_MPU_BASE
{SNDCARD_CS4232_MPU, {CONFIG_CS4232_MPU_BASE, CONFIG_CS4232_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
{SNDCARD_CS4232, {CS4232_BASE, CS4232_IRQ, CS4232_DMA, CS4232_DMA2}, SND_DEFAULT_ENABLE},
{SNDCARD_CS4232, {CONFIG_CS4232_BASE, CONFIG_CS4232_IRQ, CONFIG_CS4232_DMA, CONFIG_CS4232_DMA2}, SND_DEFAULT_ENABLE},
#endif
#ifdef CONFIG_MSS
#ifndef MSS_DMA2
#define MSS_DMA2 -1
#ifndef CONFIG_MSS_DMA2
#define CONFIG_MSS_DMA2 -1
#endif
#ifdef DESKPROXL
{SNDCARD_DESKPROXL, {MSS_BASE, MSS_IRQ, MSS_DMA, MSS_DMA2}, SND_DEFAULT_ENABLE},
{SNDCARD_DESKPROXL, {CONFIG_MSS_BASE, CONFIG_MSS_IRQ, CONFIG_MSS_DMA, CONFIG_MSS_DMA2}, SND_DEFAULT_ENABLE},
#else
{SNDCARD_MSS, {MSS_BASE, MSS_IRQ, MSS_DMA, MSS_DMA2}, SND_DEFAULT_ENABLE},
{SNDCARD_MSS, {CONFIG_MSS_BASE, CONFIG_MSS_IRQ, CONFIG_MSS_DMA, CONFIG_MSS_DMA2}, SND_DEFAULT_ENABLE},
#endif
#ifdef MSS2_BASE
{SNDCARD_MSS, {MSS2_BASE, MSS2_IRQ, MSS2_DMA, MSS2_DMA2}, SND_DEFAULT_ENABLE},
......@@ -534,53 +534,53 @@ struct card_info snd_installed_cards[] =
#ifdef CONFIG_PAS
{SNDCARD_PAS, {PAS_BASE, PAS_IRQ, PAS_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_PAS, {CONFIG_PAS_BASE, CONFIG_PAS_IRQ, CONFIG_PAS_DMA, -1}, SND_DEFAULT_ENABLE},
#endif
#ifdef CONFIG_SB
#ifndef SBC_DMA
#define SBC_DMA 1
#ifndef CONFIG_SB_DMA
#define CONFIG_SB_DMA 1
#endif
#ifndef SB_DMA2
#define SB_DMA2 -1
#ifndef CONFIG_SB_DMA2
#define CONFIG_SB_DMA2 -1
#endif
{SNDCARD_SB, {SBC_BASE, SBC_IRQ, SBC_DMA, SB_DMA2}, SND_DEFAULT_ENABLE},
{SNDCARD_SB, {CONFIG_SB_BASE, CONFIG_SB_IRQ, CONFIG_SB_DMA, CONFIG_SB_DMA2}, SND_DEFAULT_ENABLE},
#ifdef SB2_BASE
{SNDCARD_SB, {SB2_BASE, SB2_IRQ, SB2_DMA, SB2_DMA2}, SND_DEFAULT_ENABLE},
#endif
#endif
#if defined(CONFIG_MAUI)
{SNDCARD_MAUI, {MAUI_BASE, MAUI_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_MAUI, {CONFIG_MAUI_BASE, CONFIG_MAUI_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#if defined(CONFIG_MPU401) && defined(CONFIG_MIDI)
{SNDCARD_MPU401, {MPU_BASE, MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_MPU401, {CONFIG_MPU_BASE, CONFIG_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#ifdef MPU2_BASE
{SNDCARD_MPU401, {MPU2_BASE, MPU2_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#ifdef MPU3_BASE
{SNDCARD_MPU401, {MPU3_BASE, MPU2_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_MPU401, {MPU3_BASE, MPU3_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
#if defined(CONFIG_UART6850) && defined(CONFIG_MIDI)
{SNDCARD_UART6850, {U6850_BASE, U6850_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_UART6850, {CONFIG_U6850_BASE, CONFIG_U6850_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#if defined(CONFIG_SB)
#if defined(CONFIG_MIDI) && defined(SB_MPU_BASE)
{SNDCARD_SB16MIDI,{SB_MPU_BASE, SB_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#if defined(CONFIG_MIDI) && defined(CONFIG_SB_MPU_BASE)
{SNDCARD_SB16MIDI,{CONFIG_SB_MPU_BASE, CONFIG_SB_MPU_IRQ, 0, -1}, SND_DEFAULT_ENABLE},
#endif
#endif
#ifdef CONFIG_GUS
#ifndef GUS_DMA2
#define GUS_DMA2 GUS_DMA
#ifndef CONFIG_GUS_DMA2
#define CONFIG_GUS_DMA2 CONFIG_GUS_DMA
#endif
#ifdef CONFIG_GUS16
{SNDCARD_GUS16, {GUS16_BASE, GUS16_IRQ, GUS16_DMA, -1}, SND_DEFAULT_ENABLE},
{SNDCARD_GUS16, {CONFIG_GUS16_BASE, CONFIG_GUS16_IRQ, CONFIG_GUS16_DMA, -1}, SND_DEFAULT_ENABLE},
#endif
{SNDCARD_GUS, {GUS_BASE, GUS_IRQ, GUS_DMA, GUS_DMA2}, SND_DEFAULT_ENABLE},
{SNDCARD_GUS, {CONFIG_GUS_BASE, CONFIG_GUS_IRQ, CONFIG_GUS_DMA, CONFIG_GUS_DMA2}, SND_DEFAULT_ENABLE},
#endif
#if defined(CONFIG_YM3812)
......
......@@ -14,10 +14,10 @@ if [ "$CONFIG_LOWLEVEL_SOUND" = "y" ]; then
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
CONFIG_AEDSP16_BASE $CONFIG_SB_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
CONFIG_AEDSP16_SB_IRQ $CONFIG_SB_IRQ
int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_SB_DMA $CONFIG_SB_DMA
fi
fi
......@@ -25,10 +25,10 @@ if [ "$CONFIG_LOWLEVEL_SOUND" = "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
hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220
int 'Audio Excel DSP 16 IRQ 5, 7, 9, 10, 11' \
AEDSP16_MSS_IRQ $MSS_IRQ
int 'Audio Excel DSP 16 DMA 0, 1 or 3' AEDSP16_MSS_DMA $MSS_DMA
CONFIG_AEDSP16_MSS_IRQ $CONFIG_MSS_IRQ
int 'Audio Excel DSP 16 DMA 0, 1 or 3' CONFIG_AEDSP16_MSS_DMA $CONFIG_MSS_DMA
fi
fi
......@@ -38,10 +38,10 @@ if [ "$CONFIG_LOWLEVEL_SOUND" = "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
hex 'I/O base for Audio Excel DSP 16 220 or 240' CONFIG_AEDSP16_BASE 220
fi
int 'MPU401 IRQ for Audio Excel DSP 16 5, 7, 9, 10 or 0 (disable)' \
AEDSP16_MPU_IRQ $MPU_IRQ
CONFIG_AEDSP16_MPU_IRQ $CONFIG_MPU_IRQ
fi
fi
......
......@@ -33,7 +33,7 @@
* Sanity checks
*/
#if !defined(AEDSP16_BASE)
#if !defined(CONFIG_AEDSP16_BASE)
# undef CONFIG_AEDSP16
#else
# if defined(MODULE) && defined(CONFIG_AEDSP16_MODULE)
......@@ -1181,8 +1181,8 @@ static int init_aedsp16_mss(void)
if (ae_config.init & INIT_MSS)
return FALSE;
/*
* We must check the AEDSP16_BASE region too because these are the I/O ports
* to access card's control registers.
* We must check the CONFIG_AEDSP16_BASE region too because these are the I/O
* ports to access card's control registers.
*/
if (!(ae_config.init & INIT_MPU401)) {
if (check_region(ae_config.base_io, IOBASE_REGION_SIZE)) {
......@@ -1193,8 +1193,8 @@ static int init_aedsp16_mss(void)
}
/*
* We must allocate the AEDSP16_BASE region too because these are the I/O ports
* to access card's control registers.
* We must allocate the CONFIG_AEDSP16_BASE region too because these are the
* I/O ports to access card's control registers.
*/
if (!(ae_config.init & INIT_MPU401))
request_region(ae_config.base_io, IOBASE_REGION_SIZE,
......@@ -1229,8 +1229,8 @@ static int init_aedsp16_mpu(void)
return FALSE;
/*
* We must check the AEDSP16_BASE region too because these are the I/O ports
* to access card's control registers.
* We must check the CONFIG_AEDSP16_BASE region too because these are the I/O
* ports to access card's control registers.
*/
if (!(ae_config.init & (INIT_MSS | INIT_SBPRO))) {
if (check_region(ae_config.base_io, IOBASE_REGION_SIZE)) {
......@@ -1271,19 +1271,19 @@ int init_aedsp16(void)
int initialized = FALSE;
#if !defined(MODULE)
ae_config.base_io = AEDSP16_BASE;
ae_config.base_io = CONFIG_AEDSP16_BASE;
#if defined(CONFIG_AEDSP16_SBPRO)
ae_config.irq = AEDSP16_SBC_IRQ;
ae_config.dma = AEDSP16_SBC_DMA;
ae_config.irq = CONFIG_AEDSP16_SB_IRQ;
ae_config.dma = CONFIG_AEDSP16_SB_DMA;
#endif
#if defined(CONFIG_AEDSP16_MSS)
ae_config.mss_base = MSS_BASE;
ae_config.irq = AEDSP16_MSS_IRQ;
ae_config.dma = AEDSP16_MSS_DMA;
ae_config.mss_base = CONFIG_MSS_BASE;
ae_config.irq = CONFIG_AEDSP16_MSS_IRQ;
ae_config.dma = CONFIG_AEDSP16_MSS_DMA;
#endif
#if defined(CONFIG_AEDSP16_MPU401)
ae_config.mpu_base = MPU_BASE;
ae_config.mpu_irq = AEDSP16_MPU_IRQ;
ae_config.mpu_base = CONFIG_MPU_BASE;
ae_config.mpu_irq = CONFIG_AEDSP16_MPU_IRQ;
#endif
#endif /* !MODULE */
DBG(("Initializing BASE[0x%x] IRQ[%d] DMA[%d] MIRQ[%d]\n",
......
......@@ -41,7 +41,7 @@ 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 MAUI_HAVE_BOOT
#ifdef CONFIG_MAUI_HAVE_BOOT
#include "maui_boot.h"
#else
static unsigned char *maui_os = NULL;
......
......@@ -54,7 +54,7 @@
#include "coproc.h"
#ifdef PSS_HAVE_BOOT
#ifdef CONFIG_PSS_HAVE_BOOT
#include "pss_boot.h"
#else
static unsigned char *pss_synth = NULL;
......
......@@ -1503,14 +1503,14 @@ probe_softsyn(struct address_info *hw_config)
devc->bits = 16;
devc->max_playahead = 32;
#ifdef SOFTOSS_RATE
devc->speed = SOFTOSS_RATE;
#ifdef CONFIG_SOFTOSS_RATE
devc->speed = CONFIG_SOFTOSS_RATE;
#else
devc->speed = 32000;
#endif
#ifdef SOFTOSS_VOICES
devc->default_max_voices = SOFTOSS_VOICES;
#ifdef CONFIG_SOFTOSS_VOICES
devc->default_max_voices = CONFIG_SOFTOSS_VOICES;
#else
devc->default_max_voices = 32;
#endif
......
......@@ -12,7 +12,7 @@
#include "local.h.master"
#include <linux/config.h>
#include "os.h"
#include "soundvers.h"
......@@ -43,20 +43,20 @@
#define FM_MONO 0x388 /* This is the I/O address used by AdLib */
#ifndef PAS_BASE
#define PAS_BASE 0x388
#ifndef CONFIG_PAS_BASE
#define CONFIG_PAS_BASE 0x388
#endif
#if defined(SB16_DMA) && !defined(SB_DMA2)
# define SB_DMA2 SB16_DMA
#if defined(CONFIG_SB16_DMA) && !defined(CONFIG_SB_DMA2)
# define CONFIG_SB_DMA2 CONFIG_SB16_DMA
#endif
#if defined(SB16MIDI_BASE) && !defined(SB_MPU_BASE)
# define SB_MPU_BASE SB16MIDI_BASE
#if defined(SB16MIDI_BASE) && !defined(CONFIG_SB_MPU_BASE)
# define CONFIG_SB_MPU_BASE SB16MIDI_BASE
#endif
#ifndef SB_MPU_IRQ
# define SB_MPU_IRQ SBC_IRQ
#ifndef CONFIG_SB_MPU_IRQ
# define CONFIG_SB_MPU_IRQ CONFIG_SB_IRQ
#endif
/* SEQ_MAX_QUEUE is the maximum number of sequencer events buffered by the
......
......@@ -964,7 +964,7 @@ int init_module(void)
}
if (mpu_irq == -1 && mpu_io != -1)
{
printk(KERN_ERR "MPU_IRQ must be specified if MPU_IO is set.\n");
printk(KERN_ERR "CONFIG_MPU_IRQ must be specified if CONFIG_MPU_IO is set.\n");
return -EINVAL;
}
config.irq = irq;
......
......@@ -27,7 +27,7 @@
#endif
#endif
#ifdef TRIX_HAVE_BOOT
#ifdef CONFIG_TRIX_HAVE_BOOT
#include "trix_boot.h"
#else
static unsigned char *trix_boot = NULL;
......@@ -506,12 +506,12 @@ init_module(void)
if (sb_io != -1 && (sb_irq == -1 || sb_dma == -1))
{
printk(KERN_INFO "SB_IRQ and SB_DMA must be specified if SB_IO is set.\n");
printk(KERN_INFO "CONFIG_SB_IRQ and CONFIG_SB_DMA must be specified if SB_IO is set.\n");
return -EINVAL;
}
if (mpu_io != -1 && mpu_irq == -1)
{
printk(KERN_INFO "MPU_IRQ must be specified if MPU_IO is set.\n");
printk(KERN_INFO "CONFIG_MPU_IRQ must be specified if MPU_IO is set.\n");
return -EINVAL;
}
if (!trix_boot)
......
......@@ -20,9 +20,9 @@
#include "ufs_swab.h"
/*
* NOTE! unlike strncmp, ext2_match returns 1 for success, 0 for failure.
* stolen from ext2fs
* NOTE2: flags *is* used, through this is hidden by macros like SWAB16.
* NOTE1: unlike strncmp, ufs_match returns 1 for success, 0 for failure
* (stolen from ext2fs.)
* NOTE2: flags *is* used, though this is hidden by macros like NAMLEN.
*/
static int ufs_match (int len, const char * const name, struct ufs_direct * d, __u32 flags)
{
......
......@@ -1761,12 +1761,15 @@ int vfat_rename(struct inode *old_dir,struct dentry *old_dentry,
new_inode->i_mtime = old_inode->i_mtime;
new_inode->i_atime = old_inode->i_atime;
new_inode->i_ctime = old_inode->i_ctime;
new_inode->i_nlink = old_inode->i_nlink;
new_inode->i_op = old_inode->i_op;
MSDOS_I(new_inode)->i_ctime_ms = MSDOS_I(old_inode)->i_ctime_ms;
MSDOS_I(new_inode)->i_start = MSDOS_I(old_inode)->i_start;
MSDOS_I(new_inode)->i_logstart = MSDOS_I(old_inode)->i_logstart;
MSDOS_I(new_inode)->i_attrs = MSDOS_I(old_inode)->i_attrs;
fat_cache_inval_inode(old_inode);
mark_inode_dirty(new_inode);
old_dir->i_version = ++event;
......
......@@ -200,7 +200,8 @@ static inline void flush_tlb_range(struct mm_struct *mm,
* memory.
*/
#define _PAGE_PRESENT 0x001
#define _PAGE_RW 0x002
#define _PAGE_PROTNONE 0x002 /* If not present */
#define _PAGE_RW 0x002 /* If present */
#define _PAGE_USER 0x004
#define _PAGE_WT 0x008
#define _PAGE_PCD 0x010
......@@ -213,7 +214,7 @@ static inline void flush_tlb_range(struct mm_struct *mm,
#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
#define PAGE_NONE __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED)
#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
#define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
......@@ -291,7 +292,7 @@ do { \
} while (0)
#define pte_none(x) (!pte_val(x))
#define pte_present(x) (pte_val(x) & _PAGE_PRESENT)
#define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE))
#define pte_clear(xp) do { pte_val(*(xp)) = 0; } while (0)
#define pmd_none(x) (!pmd_val(x))
......@@ -489,9 +490,9 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
{
}
#define SWP_TYPE(entry) (((entry) >> 1) & 0x7f)
#define SWP_TYPE(entry) (((entry) >> 2) & 0x3f)
#define SWP_OFFSET(entry) ((entry) >> 8)
#define SWP_ENTRY(type,offset) (((type) << 1) | ((offset) << 8))
#define SWP_ENTRY(type,offset) (((type) << 2) | ((offset) << 8))
#define module_map vmalloc
#define module_unmap vfree
......
......@@ -128,13 +128,6 @@ struct old_sigaction {
void (*sa_restorer)(void);
};
struct sigaction {
__sighandler_t sa_handler;
unsigned long sa_flags;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
struct k_sigaction {
struct sigaction sa;
};
......
......@@ -124,8 +124,8 @@ extern long ppc_cs4232_dma, ppc_cs4232_dma2;
#define SND_DMA2 ppc_cs4232_dma2
#else
#ifdef CONFIG_MSS
#define SND_DMA1 MSS_DMA
#define SND_DMA2 MSS_DMA2
#define SND_DMA1 CONFIG_MSS_DMA
#define SND_DMA2 CONFIG_MSS_DMA2
#else
#define SND_DMA1 -1
#define SND_DMA2 -1
......
......@@ -6,8 +6,6 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_fs_i.h,v 1.2 1996/05/03 04:02:25 davem Exp $
*
* NeXTstep support added on February 5th 1998 by
* Niels Kristian Bech Jensen <nkbj@image.dk>.
*/
......
......@@ -6,8 +6,6 @@
* Laboratory for Computer Science Research Computing Facility
* Rutgers, The State University of New Jersey
*
* $Id: ufs_fs_sb.h,v 1.6 1996/06/01 15:31:08 ecd Exp $
*
* NeXTstep support added on February 5th 1998 by
* Niels Kristian Bech Jensen <nkbj@image.dk>.
*/
......
......@@ -877,12 +877,14 @@ static inline void handle_pte_fault(struct task_struct *tsk,
do_no_page(tsk, vma, address, write_access, pte, entry);
return;
}
set_pte(pte, pte_mkyoung(entry));
entry = pte_mkyoung(entry);
set_pte(pte, entry);
flush_tlb_page(vma, address);
if (!write_access)
return;
if (pte_write(entry)) {
set_pte(pte, pte_mkdirty(entry));
entry = pte_mkdirty(entry);
set_pte(pte, entry);
flush_tlb_page(vma, address);
return;
}
......
......@@ -1323,7 +1323,7 @@ void dev_set_promiscuity(struct device *dev, int inc)
#endif
dev_mc_upload(dev);
printk(KERN_INFO "device %s %s promiscuous mode\n",
dev->name, (dev->flags&IFF_PROMISC) ? "entered" : "leaved");
dev->name, (dev->flags&IFF_PROMISC) ? "entered" : "left");
}
}
......
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