Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
07e73e00
Commit
07e73e00
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 2.1.120pre2
parent
ed651326
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
383 additions
and
198 deletions
+383
-198
CREDITS
CREDITS
+10
-11
Documentation/networking/wavelan.txt
Documentation/networking/wavelan.txt
+3
-0
Documentation/sound/AudioExcelDSP16
Documentation/sound/AudioExcelDSP16
+101
-0
MAINTAINERS
MAINTAINERS
+7
-1
arch/i386/kernel/io_apic.c
arch/i386/kernel/io_apic.c
+17
-18
arch/i386/kernel/irq.c
arch/i386/kernel/irq.c
+13
-15
arch/i386/kernel/irq.h
arch/i386/kernel/irq.h
+5
-7
arch/i386/kernel/smp.c
arch/i386/kernel/smp.c
+1
-1
drivers/block/ide-pmac.c
drivers/block/ide-pmac.c
+6
-2
drivers/block/ide.c
drivers/block/ide.c
+3
-3
drivers/block/nbd.c
drivers/block/nbd.c
+18
-5
drivers/block/swim3.c
drivers/block/swim3.c
+1
-1
drivers/char/bttv.c
drivers/char/bttv.c
+27
-17
drivers/char/bttv.h
drivers/char/bttv.h
+8
-2
drivers/char/pc_keyb.c
drivers/char/pc_keyb.c
+38
-31
drivers/char/pc_keyb.h
drivers/char/pc_keyb.h
+1
-1
drivers/char/pms.c
drivers/char/pms.c
+55
-41
drivers/char/saa5249.c
drivers/char/saa5249.c
+4
-0
drivers/net/de4x5.c
drivers/net/de4x5.c
+46
-30
drivers/net/pcnet32.c
drivers/net/pcnet32.c
+6
-5
drivers/pnp/parport_probe.c
drivers/pnp/parport_probe.c
+3
-3
drivers/sound/lowlevel/awe_compat.h
drivers/sound/lowlevel/awe_compat.h
+1
-1
fs/hpfs/hpfs_fs.c
fs/hpfs/hpfs_fs.c
+2
-0
fs/isofs/inode.c
fs/isofs/inode.c
+1
-1
fs/isofs/namei.c
fs/isofs/namei.c
+2
-1
include/linux/nbd.h
include/linux/nbd.h
+3
-0
scripts/Configure
scripts/Configure
+1
-1
No files found.
CREDITS
View file @
07e73e00
...
@@ -212,12 +212,14 @@ S: Nexus Electronics Ltd
...
@@ -212,12 +212,14 @@ S: Nexus Electronics Ltd
S: 10 St Barnabas Road, Cambridge CB1 2BY
S: 10 St Barnabas Road, Cambridge CB1 2BY
S: United Kingdom
S: United Kingdom
N: Thomas Bogend
oe
rfer
N: Thomas Bogendrfer
E: tsbogend@alpha.franken.de
E: tsbogend@alpha.franken.de
D: PCnet32 driver
D: PCnet32 driver, SONIC driver, JAZZ_ESP driver
D: newport abscon driver, g364 framebuffer driver
D: strace for Linux/Alpha
D: strace for Linux/Alpha
S: Baumgartenweg 5
D: Linux/MIPS hacker
S: 91452 Wilhermsdorf
S: Schafhofstr. 40
S: 90556 Cadolzburg
S: Germany
S: Germany
N: Bill Bogstad
N: Bill Bogstad
...
@@ -1445,14 +1447,11 @@ S: USA
...
@@ -1445,14 +1447,11 @@ S: USA
N: Eric S. Raymond
N: Eric S. Raymond
E: esr@thyrsus.com
E: esr@thyrsus.com
W: http://www.ccil.org/~esr/home.html
W: http://www.tuxedo.org/~esr/
D: ncurses library co-maintainer
D: terminfo master file maintainer
D: terminfo master file maintainer
D: Distributions HOWTO editor
D: Editor: Installation HOWTO, Distributions HOWTO, XFree86 HOWTO
D: Instigator, FHS standard
D: Author: fetchmail, Emacs VC mode, Emacs GUD mode
D: Keeper of the Jargon File and curator of the Retrocomputing Museum
S: 6 Karen Drive
D: Author, Emacs VC and GUD modes
S: 22 South Warren Avenue
S: Malvern, Pennsylvania 19355
S: Malvern, Pennsylvania 19355
S: USA
S: USA
...
...
Documentation/networking/wavelan.txt
View file @
07e73e00
Sun Jul 2 01:38:33 EST 1995
Sun Jul 2 01:38:33 EST 1995
See also: http://www-uk.hpl.hp.com/people/jt/Linux/Wavelan.html
1. At present the driver autoprobes for a WaveLAN card only at I/O address
1. At present the driver autoprobes for a WaveLAN card only at I/O address
0x390. The version of the card that I use (NCR) supports four I/O addresses
0x390. The version of the card that I use (NCR) supports four I/O addresses
(selectable via a pair of DIP switches). If you want the driver to
(selectable via a pair of DIP switches). If you want the driver to
...
...
Documentation/sound/AudioExcelDSP16
0 → 100644
View file @
07e73e00
Driver
------
Informations about Audio Excel DSP 16 driver can be found in the source
file lowlevel/aedsp16.c
Please, read the head of the source before using it. It contain useful
informations.
Configuration
-------------
The Audio Excel configuration, is now done with the standard Linux setup.
You have to configure the sound card (Sound Blaster or Microsoft Sound System)
and, if you want it, the Roland MPU-401 (do not use the Sound Blaster MPU-401,
SB-MPU401) in the main driver menu. Activate the lowlevel drivers then select
the Audio Excel hardware that you want to initialize. Check the IRQ/DMA/MIRQ
of the Audio Excel initialization: it must be the same as the SBPRO (or MSS)
setup. If the parameters are different, correct it.
I you own a Gallant's audio card based on SC-6600, activate the SC-6600 support.
If you want to change the configuration of the sound board, be sure to
check off all the configuration items before re-configure it.
Module parameters
-----------------
To use this driver as a module, you must configure some module parameters, to
set up I/O addresses, IRQ lines and DMA channels. Some parameters are
mandatory while some others are optional. Here a list of parameters you can
use with this module:
Name Description
==== ===========
MANDATORY
io I/O base address (0x220 or 0x240)
irq irq line (5, 7, 9, 10 or 11)
dma dma channel (0, 1 or 3)
OPTIONAL
mss_base I/O base address for activate MSS mode (default SBPRO)
(0x530 or 0xE80)
mpu_base I/O base address for activate MPU-401 mode
(0x300, 0x310, 0x320 or 0x330)
mpu_irq MPU-401 irq line (5, 7, 9, 10 or 0)
The /etc/conf.modules will have lines like this:
options opl3 io=0x388
options ad1848 io=0x530 irq=11 dma=3
options aedsp16 io=0x220 irq=11 dma=3 mss_base=0x530
Where the aedsp16 options are the options for this driver while opl3 and
ad1848 are the corresponding options for the MSS and OPL3 modules.
Loading MSS and OPL3 needs to pre load the aedsp16 module to set up correctly
the sound card. Installation dependancies must be written in the conf.modules
file:
pre-install ad1848 modprobe aedsp16
pre-install opl3 modprobe aedsp16
Then you must load the sound modules stack in this order:
sound -> aedsp16 -> [ ad1848, opl3 ]
With the above configuration, loading ad1848 or opl3 modules, will
automatically load all the sound stack.
Sound cards supported
---------------------
This driver supports the SC-6000 and SC-6600 based Gallant's sound card.
It don't support the Audio Excel DSP 16 III (try the SC-6600 code).
I'm working on the III version of the card: if someone have useful
informations about it, please let me know.
For all the non-supported audio cards, you have to boot MS-DOS (or WIN95)
activating the audio card with the MS-DOS device driver, then you have to
<ctrl>-<alt>-<del> and boot Linux.
Follow these steps:
1) Compile Linux kernel with standard sound driver, using the emulation
you want, with the parameters of your audio card,
e.g. Microsoft Sound System irq10 dma3
2) Install your new kernel as the default boot kernel.
3) Boot MS-DOS and configure the audio card with the boot time device
driver, for MSS irq10 dma3 in our example.
4) <ctrl>-<alt>-<del> and boot Linux. This will mantain the DOS configuration
and will boot the new kernel with sound driver. The sound driver will find
the audio card and will recognize and attach it.
Reports on User successes
-------------------------
> Date: Mon, 29 Jul 1996 08:35:40 +0100
> From: Mr S J Greenaway <sjg95@unixfe.rl.ac.uk>
> To: riccardo@cdc8g5.cdc.polimi.it (Riccardo Facchetti)
> Subject: Re: Audio Excel DSP 16 initialization code
>
> Just to let you know got my Audio Excel (emulating a MSS) working
> with my original SB16, thanks for the driver!
Last revised: 20 August 1998
Riccardo Facchetti
fizban@tin.it
MAINTAINERS
View file @
07e73e00
...
@@ -504,7 +504,7 @@ W: http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html
...
@@ -504,7 +504,7 @@ W: http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html
S: Maintained
S: Maintained
PCNET32 NETWORK DRIVER
PCNET32 NETWORK DRIVER
P: Thomas Bogend
oe
rfer
P: Thomas Bogendrfer
M: tsbogend@alpha.franken.de
M: tsbogend@alpha.franken.de
L: linux-net@vger.rutgers.edu
L: linux-net@vger.rutgers.edu
S: Maintained
S: Maintained
...
@@ -563,6 +563,12 @@ M: torvalds@transmeta.com
...
@@ -563,6 +563,12 @@ M: torvalds@transmeta.com
L: linux-smp@vger.rutgers.edu
L: linux-smp@vger.rutgers.edu
S: Maintained
S: Maintained
SONIC NETWORK DRIVER
P: Thomas Bogendoerfer
M: tsbogend@alpha.franken.de
L: linux-net@vger.rutgers.edu
S: Maintained
SOUND
SOUND
P: Alan Cox
P: Alan Cox
M: alan@redhat.com
M: alan@redhat.com
...
...
arch/i386/kernel/io_apic.c
View file @
07e73e00
...
@@ -921,9 +921,10 @@ static int __init timer_irq_works(void)
...
@@ -921,9 +921,10 @@ static int __init timer_irq_works(void)
static
inline
void
self_IPI
(
unsigned
int
irq
)
static
inline
void
self_IPI
(
unsigned
int
irq
)
{
{
irq_desc_t
*
desc
=
irq_desc
+
irq
;
irq_desc_t
*
desc
=
irq_desc
+
irq
;
unsigned
int
status
=
desc
->
status
;
if
(
desc
->
events
&&
!
desc
->
ipi
)
{
if
(
(
status
&
(
IRQ_PENDING
|
IRQ_REPLAY
))
==
IRQ_PENDING
)
{
desc
->
ipi
=
1
;
desc
->
status
=
status
|
IRQ_REPLAY
;
send_IPI
(
APIC_DEST_SELF
,
IO_APIC_VECTOR
(
irq
));
send_IPI
(
APIC_DEST_SELF
,
IO_APIC_VECTOR
(
irq
));
}
}
}
}
...
@@ -960,6 +961,7 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
...
@@ -960,6 +961,7 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
{
{
irq_desc_t
*
desc
=
irq_desc
+
irq
;
irq_desc_t
*
desc
=
irq_desc
+
irq
;
struct
irqaction
*
action
;
struct
irqaction
*
action
;
unsigned
int
status
;
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
...
@@ -968,19 +970,19 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
...
@@ -968,19 +970,19 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
* and do not need to be masked.
* and do not need to be masked.
*/
*/
ack_APIC_irq
();
ack_APIC_irq
();
desc
->
ipi
=
0
;
status
=
desc
->
status
&
~
IRQ_REPLAY
;
desc
->
events
=
1
;
status
|=
IRQ_PENDING
;
/*
/*
* If the IRQ is disabled for whatever reason, we cannot
* If the IRQ is disabled for whatever reason, we cannot
* use the action we have.
* use the action we have.
*/
*/
action
=
NULL
;
action
=
NULL
;
if
(
!
(
desc
->
status
&
(
IRQ_DISABLED
|
IRQ_INPROGRESS
)))
{
if
(
!
(
status
&
(
IRQ_DISABLED
|
IRQ_INPROGRESS
)))
{
action
=
desc
->
action
;
action
=
desc
->
action
;
desc
->
status
=
IRQ_INPROGRESS
;
status
&=
~
IRQ_PENDING
;
desc
->
events
=
0
;
}
}
desc
->
status
=
status
|
IRQ_INPROGRESS
;
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
/*
/*
...
@@ -996,18 +998,15 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
...
@@ -996,18 +998,15 @@ static void do_edge_ioapic_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
* pending events.
* pending events.
*/
*/
for
(;;)
{
for
(;;)
{
int
pending
;
handle_IRQ_event
(
irq
,
regs
);
handle_IRQ_event
(
irq
,
regs
);
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
pending
=
desc
->
events
;
if
(
!
(
desc
->
status
&
IRQ_PENDING
))
desc
->
events
=
0
;
if
(
!
pending
)
break
;
break
;
desc
->
status
&=
~
IRQ_PENDING
;
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
}
}
desc
->
status
&=
IRQ_DISABLED
;
desc
->
status
&=
~
IRQ_INPROGRESS
;
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
irq_exit
(
cpu
,
irq
);
irq_exit
(
cpu
,
irq
);
...
@@ -1018,6 +1017,7 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
...
@@ -1018,6 +1017,7 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
{
{
irq_desc_t
*
desc
=
irq_desc
+
irq
;
irq_desc_t
*
desc
=
irq_desc
+
irq
;
struct
irqaction
*
action
;
struct
irqaction
*
action
;
unsigned
int
status
;
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
/*
/*
...
@@ -1029,18 +1029,17 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
...
@@ -1029,18 +1029,17 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
* So this all has to be within the spinlock.
* So this all has to be within the spinlock.
*/
*/
mask_IO_APIC_irq
(
irq
);
mask_IO_APIC_irq
(
irq
);
status
=
desc
->
status
&
~
IRQ_REPLAY
;
desc
->
ipi
=
0
;
/*
/*
* If the IRQ is disabled for whatever reason, we must
* If the IRQ is disabled for whatever reason, we must
* not enter the IRQ action.
* not enter the IRQ action.
*/
*/
action
=
NULL
;
action
=
NULL
;
if
(
!
(
desc
->
status
&
(
IRQ_DISABLED
|
IRQ_INPROGRESS
)))
{
if
(
!
(
status
&
(
IRQ_DISABLED
|
IRQ_INPROGRESS
)))
{
action
=
desc
->
action
;
action
=
desc
->
action
;
desc
->
status
=
IRQ_INPROGRESS
;
}
}
desc
->
status
=
status
|
IRQ_INPROGRESS
;
ack_APIC_irq
();
ack_APIC_irq
();
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
...
@@ -1055,7 +1054,7 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
...
@@ -1055,7 +1054,7 @@ static void do_level_ioapic_IRQ(unsigned int irq, int cpu,
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
desc
->
status
&=
~
IRQ_INPROGRESS
;
desc
->
status
&=
~
IRQ_INPROGRESS
;
if
(
!
desc
->
status
)
if
(
!
(
desc
->
status
&
IRQ_DISABLED
)
)
unmask_IO_APIC_irq
(
irq
);
unmask_IO_APIC_irq
(
irq
);
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
...
...
arch/i386/kernel/irq.c
View file @
07e73e00
...
@@ -105,8 +105,8 @@ static struct hw_interrupt_type i8259A_irq_type = {
...
@@ -105,8 +105,8 @@ static struct hw_interrupt_type i8259A_irq_type = {
};
};
irq_desc_t
irq_desc
[
NR_IRQS
]
=
{
irq_desc_t
irq_desc
[
NR_IRQS
]
=
{
[
0
...
15
]
=
{
0
,
0
,
0
,
&
i8259A_irq_type
,
},
/* default to standard ISA IRQs */
[
0
...
15
]
=
{
0
,
&
i8259A_irq_type
,
},
/* default to standard ISA IRQs */
[
16
...
63
]
=
{
0
,
0
,
0
,
&
no_irq_type
,
},
/* 'high' PCI IRQs filled in on demand */
[
16
...
63
]
=
{
0
,
&
no_irq_type
,
},
/* 'high' PCI IRQs filled in on demand */
};
};
int
irq_vector
[
NR_IRQS
]
=
{
IRQ0_TRAP_VECTOR
,
0
};
int
irq_vector
[
NR_IRQS
]
=
{
IRQ0_TRAP_VECTOR
,
0
};
...
@@ -663,7 +663,8 @@ static void do_8259A_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
...
@@ -663,7 +663,8 @@ static void do_8259A_IRQ(unsigned int irq, int cpu, struct pt_regs * regs)
if
(
handle_IRQ_event
(
irq
,
regs
))
{
if
(
handle_IRQ_event
(
irq
,
regs
))
{
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
if
(
!
(
irq_desc
[
irq
].
status
&=
IRQ_DISABLED
))
irq_desc
[
irq
].
status
&=
~
IRQ_INPROGRESS
;
if
(
!
(
irq_desc
[
irq
].
status
&
IRQ_DISABLED
))
enable_8259A_irq
(
irq
);
enable_8259A_irq
(
irq
);
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
}
}
...
@@ -683,10 +684,6 @@ void disable_irq(unsigned int irq)
...
@@ -683,10 +684,6 @@ void disable_irq(unsigned int irq)
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
irq_controller_lock
,
flags
);
spin_lock_irqsave
(
&
irq_controller_lock
,
flags
);
/*
* At this point we may actually have a pending interrupt being active
* on another CPU. So don't touch the IRQ_INPROGRESS bit..
*/
irq_desc
[
irq
].
status
|=
IRQ_DISABLED
;
irq_desc
[
irq
].
status
|=
IRQ_DISABLED
;
irq_desc
[
irq
].
handler
->
disable
(
irq
);
irq_desc
[
irq
].
handler
->
disable
(
irq
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
...
@@ -793,6 +790,7 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new)
...
@@ -793,6 +790,7 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new)
*
p
=
new
;
*
p
=
new
;
if
(
!
shared
)
{
if
(
!
shared
)
{
irq_desc
[
irq
].
status
=
0
;
#ifdef __SMP__
#ifdef __SMP__
if
(
IO_APIC_IRQ
(
irq
))
{
if
(
IO_APIC_IRQ
(
irq
))
{
/*
/*
...
@@ -803,11 +801,10 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new)
...
@@ -803,11 +801,10 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new)
if
(
irq
<
16
)
{
if
(
irq
<
16
)
{
disable_8259A_irq
(
irq
);
disable_8259A_irq
(
irq
);
if
(
i8259A_irq_pending
(
irq
))
if
(
i8259A_irq_pending
(
irq
))
irq_desc
[
irq
].
events
=
1
;
irq_desc
[
irq
].
status
=
IRQ_PENDING
;
}
}
}
}
#endif
#endif
irq_desc
[
irq
].
status
=
0
;
irq_desc
[
irq
].
handler
->
enable
(
irq
);
irq_desc
[
irq
].
handler
->
enable
(
irq
);
}
}
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
...
@@ -863,8 +860,10 @@ void free_irq(unsigned int irq, void *dev_id)
...
@@ -863,8 +860,10 @@ void free_irq(unsigned int irq, void *dev_id)
/* Found it - now free it */
/* Found it - now free it */
*
p
=
action
->
next
;
*
p
=
action
->
next
;
kfree
(
action
);
kfree
(
action
);
if
(
!
irq_desc
[
irq
].
action
)
if
(
!
irq_desc
[
irq
].
action
)
{
irq_desc
[
irq
].
status
|=
IRQ_DISABLED
;
irq_desc
[
irq
].
handler
->
disable
(
irq
);
irq_desc
[
irq
].
handler
->
disable
(
irq
);
}
goto
out
;
goto
out
;
}
}
printk
(
"Trying to free free IRQ%d
\n
"
,
irq
);
printk
(
"Trying to free free IRQ%d
\n
"
,
irq
);
...
@@ -891,7 +890,7 @@ unsigned long probe_irq_on (void)
...
@@ -891,7 +890,7 @@ unsigned long probe_irq_on (void)
spin_lock_irq
(
&
irq_controller_lock
);
spin_lock_irq
(
&
irq_controller_lock
);
for
(
i
=
NR_IRQS
-
1
;
i
>
0
;
i
--
)
{
for
(
i
=
NR_IRQS
-
1
;
i
>
0
;
i
--
)
{
if
(
!
irq_desc
[
i
].
action
)
{
if
(
!
irq_desc
[
i
].
action
)
{
irq_desc
[
i
].
status
=
0
;
irq_desc
[
i
].
status
&=
~
IRQ_INPROGRESS
;
irq_desc
[
i
].
handler
->
enable
(
i
);
irq_desc
[
i
].
handler
->
enable
(
i
);
irqs
|=
(
1
<<
i
);
irqs
|=
(
1
<<
i
);
}
}
...
@@ -948,10 +947,9 @@ __initfunc(void init_IRQ(void))
...
@@ -948,10 +947,9 @@ __initfunc(void init_IRQ(void))
outb_p
(
LATCH
&
0xff
,
0x40
);
/* LSB */
outb_p
(
LATCH
&
0xff
,
0x40
);
/* LSB */
outb
(
LATCH
>>
8
,
0x40
);
/* MSB */
outb
(
LATCH
>>
8
,
0x40
);
/* MSB */
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
{
for
(
i
=
0
;
i
<
NR_IRQS
;
i
++
)
irq_desc
[
i
].
events
=
0
;
irq_desc
[
i
].
status
=
IRQ_DISABLED
;
irq_desc
[
i
].
status
=
0
;
}
/*
/*
* 16 old-style INTA-cycle interrupt gates:
* 16 old-style INTA-cycle interrupt gates:
*/
*/
...
...
arch/i386/kernel/irq.h
View file @
07e73e00
...
@@ -16,12 +16,12 @@ struct hw_interrupt_type {
...
@@ -16,12 +16,12 @@ struct hw_interrupt_type {
/*
/*
* Status: reason for being disabled: somebody has
* IRQ line status.
* done a "disable_irq()" or we must not re-enter the
* already executing irq..
*/
*/
#define IRQ_INPROGRESS 1
#define IRQ_INPROGRESS 1
/* IRQ handler active - do not enter! */
#define IRQ_DISABLED 2
#define IRQ_DISABLED 2
/* IRQ disabled - do not enter! */
#define IRQ_PENDING 4
/* IRQ pending - replay on enable */
#define IRQ_REPLAY 8
/* IRQ has been replayed but not acked yet */
/*
/*
* This is the "IRQ descriptor", which contains various information
* This is the "IRQ descriptor", which contains various information
...
@@ -32,8 +32,6 @@ struct hw_interrupt_type {
...
@@ -32,8 +32,6 @@ struct hw_interrupt_type {
*/
*/
typedef
struct
{
typedef
struct
{
unsigned
int
status
;
/* IRQ status - IRQ_INPROGRESS, IRQ_DISABLED */
unsigned
int
status
;
/* IRQ status - IRQ_INPROGRESS, IRQ_DISABLED */
unsigned
int
events
;
/* Do we have any pending events? */
unsigned
int
ipi
;
/* Have we sent off the pending IPI? */
struct
hw_interrupt_type
*
handler
;
/* handle/enable/disable functions */
struct
hw_interrupt_type
*
handler
;
/* handle/enable/disable functions */
struct
irqaction
*
action
;
/* IRQ action list */
struct
irqaction
*
action
;
/* IRQ action list */
unsigned
int
unused
[
3
];
unsigned
int
unused
[
3
];
...
...
arch/i386/kernel/smp.c
View file @
07e73e00
...
@@ -371,7 +371,7 @@ __initfunc(static int smp_read_mpc(struct mp_config_table *mpc))
...
@@ -371,7 +371,7 @@ __initfunc(static int smp_read_mpc(struct mp_config_table *mpc))
/*
/*
* we use the first one only currently
* we use the first one only currently
*/
*/
if
(
!
ioapics
)
if
(
ioapics
==
1
)
mp_ioapic_addr
=
m
->
mpc_apicaddr
;
mp_ioapic_addr
=
m
->
mpc_apicaddr
;
}
}
mpt
+=
sizeof
(
*
m
);
mpt
+=
sizeof
(
*
m
);
...
...
drivers/block/ide-pmac.c
View file @
07e73e00
...
@@ -38,8 +38,12 @@ static int pmac_ide_dmaproc(ide_dma_action_t func, ide_drive_t *drive);
...
@@ -38,8 +38,12 @@ static int pmac_ide_dmaproc(ide_dma_action_t func, ide_drive_t *drive);
static
int
pmac_ide_build_dmatable
(
ide_drive_t
*
drive
,
int
wr
);
static
int
pmac_ide_build_dmatable
(
ide_drive_t
*
drive
,
int
wr
);
#endif
/* CONFIG_BLK_DEV_IDEDMA_PMAC */
#endif
/* CONFIG_BLK_DEV_IDEDMA_PMAC */
__initfunc
(
void
/*
pmac_ide_init_hwif_ports
(
ide_ioreg_t
*
p
,
ide_ioreg_t
base
,
int
*
irq
))
* N.B. this can't be an initfunc, because the media-bay task can
* call ide_[un]register at any time.
*/
void
pmac_ide_init_hwif_ports
(
ide_ioreg_t
*
p
,
ide_ioreg_t
base
,
int
*
irq
)
{
{
int
i
;
int
i
;
...
...
drivers/block/ide.c
View file @
07e73e00
...
@@ -1657,7 +1657,7 @@ void ide_unregister (unsigned int index)
...
@@ -1657,7 +1657,7 @@ void ide_unregister (unsigned int index)
ide_drive_t
*
drive
,
*
d
;
ide_drive_t
*
drive
,
*
d
;
ide_hwif_t
*
hwif
,
*
g
;
ide_hwif_t
*
hwif
,
*
g
;
ide_hwgroup_t
*
hwgroup
;
ide_hwgroup_t
*
hwgroup
;
int
irq_count
=
0
,
unit
;
int
irq_count
=
0
,
unit
,
i
;
unsigned
long
flags
;
unsigned
long
flags
;
if
(
index
>=
MAX_HWIFS
)
if
(
index
>=
MAX_HWIFS
)
...
@@ -1704,8 +1704,8 @@ void ide_unregister (unsigned int index)
...
@@ -1704,8 +1704,8 @@ void ide_unregister (unsigned int index)
* the hwgroup if we were the only member
* the hwgroup if we were the only member
*/
*/
d
=
hwgroup
->
drive
;
d
=
hwgroup
->
drive
;
for
(
i
ndex
=
0
;
index
<
MAX_DRIVES
;
++
index
)
{
for
(
i
=
0
;
i
<
MAX_DRIVES
;
++
i
)
{
drive
=
&
hwif
->
drives
[
i
ndex
];
drive
=
&
hwif
->
drives
[
i
];
if
(
!
drive
->
present
)
if
(
!
drive
->
present
)
continue
;
continue
;
while
(
hwgroup
->
drive
->
next
!=
drive
)
while
(
hwgroup
->
drive
->
next
!=
drive
)
...
...
drivers/block/nbd.c
View file @
07e73e00
...
@@ -61,13 +61,20 @@ static int requests_out;
...
@@ -61,13 +61,20 @@ static int requests_out;
static
int
nbd_open
(
struct
inode
*
inode
,
struct
file
*
file
)
static
int
nbd_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
int
dev
;
int
dev
;
struct
nbd_device
*
nbdev
;
if
(
!
inode
)
if
(
!
inode
)
return
-
EINVAL
;
return
-
EINVAL
;
dev
=
MINOR
(
inode
->
i_rdev
);
dev
=
MINOR
(
inode
->
i_rdev
);
if
(
dev
>=
MAX_NBD
)
if
(
dev
>=
MAX_NBD
)
return
-
ENODEV
;
return
-
ENODEV
;
nbdev
=
&
nbd_dev
[
dev
];
nbd_dev
[
dev
].
refcnt
++
;
nbd_dev
[
dev
].
refcnt
++
;
if
(
!
(
nbdev
->
flags
&
NBD_INITIALISED
))
{
nbdev
->
queue_lock
=
MUTEX
;
nbdev
->
flags
|=
NBD_INITIALISED
;
}
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
return
0
;
return
0
;
}
}
...
@@ -82,6 +89,7 @@ static int nbd_xmit(int send, struct socket *sock, char *buf, int size)
...
@@ -82,6 +89,7 @@ static int nbd_xmit(int send, struct socket *sock, char *buf, int size)
struct
msghdr
msg
;
struct
msghdr
msg
;
struct
iovec
iov
;
struct
iovec
iov
;
unsigned
long
flags
;
unsigned
long
flags
;
sigset_t
oldset
;
oldfs
=
get_fs
();
oldfs
=
get_fs
();
set_fs
(
get_ds
());
set_fs
(
get_ds
());
...
@@ -94,8 +102,6 @@ static int nbd_xmit(int send, struct socket *sock, char *buf, int size)
...
@@ -94,8 +102,6 @@ static int nbd_xmit(int send, struct socket *sock, char *buf, int size)
do
{
do
{
sigset_t
oldset
;
iov
.
iov_base
=
buf
;
iov
.
iov_base
=
buf
;
iov
.
iov_len
=
size
;
iov
.
iov_len
=
size
;
msg
.
msg_name
=
NULL
;
msg
.
msg_name
=
NULL
;
...
@@ -209,16 +215,18 @@ void nbd_do_it(struct nbd_device *lo)
...
@@ -209,16 +215,18 @@ void nbd_do_it(struct nbd_device *lo)
req
=
nbd_read_stat
(
lo
);
req
=
nbd_read_stat
(
lo
);
if
(
!
req
)
if
(
!
req
)
return
;
return
;
down
(
&
lo
->
queue_lock
);
#ifdef PARANOIA
#ifdef PARANOIA
if
(
req
!=
lo
->
tail
)
{
if
(
req
!=
lo
->
tail
)
{
printk
(
KERN_ALERT
"NBD: I have problem...
\n
"
);
printk
(
KERN_ALERT
"NBD: I have problem...
\n
"
);
}
}
if
(
lo
!=
&
nbd_dev
[
MINOR
(
req
->
rq_dev
)])
{
if
(
lo
!=
&
nbd_dev
[
MINOR
(
req
->
rq_dev
)])
{
printk
(
KERN_ALERT
"NBD: request corrupted!
\n
"
);
printk
(
KERN_ALERT
"NBD: request corrupted!
\n
"
);
continue
;
goto
next
;
}
}
if
(
lo
->
magic
!=
LO_MAGIC
)
{
if
(
lo
->
magic
!=
LO_MAGIC
)
{
printk
(
KERN_ALERT
"NBD: nbd_dev[] corrupted: Not enough magic
\n
"
);
printk
(
KERN_ALERT
"NBD: nbd_dev[] corrupted: Not enough magic
\n
"
);
up
(
&
lo
->
queue_lock
);
return
;
return
;
}
}
#endif
#endif
...
@@ -231,6 +239,8 @@ void nbd_do_it(struct nbd_device *lo)
...
@@ -231,6 +239,8 @@ void nbd_do_it(struct nbd_device *lo)
lo
->
head
=
NULL
;
lo
->
head
=
NULL
;
}
}
lo
->
tail
=
lo
->
tail
->
next
;
lo
->
tail
=
lo
->
tail
->
next
;
next:
up
(
&
lo
->
queue_lock
);
}
}
}
}
...
@@ -291,7 +301,7 @@ static void do_nbd_request(void)
...
@@ -291,7 +301,7 @@ static void do_nbd_request(void)
lo
=
&
nbd_dev
[
dev
];
lo
=
&
nbd_dev
[
dev
];
if
(
!
lo
->
file
)
if
(
!
lo
->
file
)
FAIL
(
"Request when not-ready."
);
FAIL
(
"Request when not-ready."
);
if
((
req
->
cmd
==
WRITE
)
&&
(
lo
->
flags
&
&
NBD_READ_ONLY
))
if
((
req
->
cmd
==
WRITE
)
&&
(
lo
->
flags
&
NBD_READ_ONLY
))
FAIL
(
"Write on read-only"
);
FAIL
(
"Write on read-only"
);
#ifdef PARANOIA
#ifdef PARANOIA
if
(
lo
->
magic
!=
LO_MAGIC
)
if
(
lo
->
magic
!=
LO_MAGIC
)
...
@@ -301,6 +311,9 @@ static void do_nbd_request(void)
...
@@ -301,6 +311,9 @@ static void do_nbd_request(void)
req
->
errors
=
0
;
req
->
errors
=
0
;
CURRENT
=
CURRENT
->
next
;
CURRENT
=
CURRENT
->
next
;
req
->
next
=
NULL
;
req
->
next
=
NULL
;
spin_unlock_irq
(
&
io_request_lock
);
down
(
&
lo
->
queue_lock
);
if
(
lo
->
head
==
NULL
)
{
if
(
lo
->
head
==
NULL
)
{
lo
->
head
=
req
;
lo
->
head
=
req
;
lo
->
tail
=
req
;
lo
->
tail
=
req
;
...
@@ -309,8 +322,8 @@ static void do_nbd_request(void)
...
@@ -309,8 +322,8 @@ static void do_nbd_request(void)
lo
->
head
=
req
;
lo
->
head
=
req
;
}
}
spin_unlock_irq
(
&
io_request_lock
);
nbd_send_req
(
lo
->
sock
,
req
);
/* Why does this block? */
nbd_send_req
(
lo
->
sock
,
req
);
/* Why does this block? */
up
(
&
lo
->
queue_lock
);
spin_lock_irq
(
&
io_request_lock
);
spin_lock_irq
(
&
io_request_lock
);
continue
;
continue
;
...
...
drivers/block/swim3.c
View file @
07e73e00
...
@@ -969,7 +969,7 @@ static struct file_operations floppy_fops = {
...
@@ -969,7 +969,7 @@ static struct file_operations floppy_fops = {
NULL
,
/* mmap */
NULL
,
/* mmap */
floppy_open
,
/* open */
floppy_open
,
/* open */
NULL
,
/* flush */
NULL
,
/* flush */
floppy_release
,
/* release *
floppy_release
,
/* release *
/
block_fsync
,
/* fsync */
block_fsync
,
/* fsync */
NULL
,
/* fasync */
NULL
,
/* fasync */
floppy_check_change
,
/* check_media_change */
floppy_check_change
,
/* check_media_change */
...
...
drivers/char/bttv.c
View file @
07e73e00
...
@@ -85,7 +85,7 @@ static unsigned int remap[BTTV_MAX]; /* remap Bt848 */
...
@@ -85,7 +85,7 @@ static unsigned int remap[BTTV_MAX]; /* remap Bt848 */
static
unsigned
int
radio
[
BTTV_MAX
];
static
unsigned
int
radio
[
BTTV_MAX
];
static
unsigned
int
card
[
BTTV_MAX
]
=
{
0
,
0
,
static
unsigned
int
card
[
BTTV_MAX
]
=
{
0
,
0
,
0
,
0
};
0
,
0
};
static
unsigned
int
pll
[
BTTV_MAX
]
=
{
0
,
0
,
0
,
0
};
static
unsigned
int
pll
[
BTTV_MAX
]
=
{
0
,
0
,
0
,
0
};
static
int
bttv_num
;
/* number of Bt848s in use */
static
int
bttv_num
;
/* number of Bt848s in use */
static
struct
bttv
bttvs
[
BTTV_MAX
];
static
struct
bttv
bttvs
[
BTTV_MAX
];
...
@@ -545,30 +545,25 @@ static int set_pll(struct bttv *btv)
...
@@ -545,30 +545,25 @@ static int set_pll(struct bttv *btv)
int
i
;
int
i
;
unsigned
long
tv
;
unsigned
long
tv
;
if
(
!
btv
->
pll
)
if
(
!
btv
->
pll
.
pll_crystal
)
return
0
;
return
0
;
if
((
btread
(
BT848_IFORM
)
&
BT848_IFORM_XT0
))
if
((
btread
(
BT848_IFORM
)
&
btv
->
pll
.
pll_crystal
))
{
{
/* printk ("switching PLL off\n");*/
/* printk ("switching PLL off\n");*/
btwrite
(
0x00
,
BT848_TGCTRL
);
btwrite
(
0x00
,
BT848_TGCTRL
);
btwrite
(
0x00
,
BT848_PLL_XCI
);
btwrite
(
0x00
,
BT848_PLL_XCI
);
btv
->
pll
&=~
2
;
btv
->
pll
.
pll_crystal
&=~
2
;
return
0
;
return
0
;
}
}
/* do not set pll again if already active */
/* do not set pll again if already active */
if
(
btv
->
pll
&
2
)
if
(
btv
->
pll
.
pll_crystal
&
2
)
return
1
;
return
1
;
/* printk ("setting PLL for PAL/SECAM\n");*/
/* printk ("setting PLL for PAL/SECAM\n");*/
set_pll_freq
(
btv
,
28636363
,
35468950
);
set_pll_freq
(
btv
,
btv
->
pll
.
pll_ifreq
,
btv
->
pll
.
pll_ofreq
);
/*
btwrite(0x00,BT848_TGCTRL);
btwrite(0xf9,BT848_PLL_F_LO);
btwrite(0xdc,BT848_PLL_F_HI);
btwrite(14|BT848_PLL_X,BT848_PLL_XCI);
*/
/*
/*
* Let other people run while the PLL stabilizes
* Let other people run while the PLL stabilizes
*/
*/
...
@@ -587,7 +582,7 @@ static int set_pll(struct bttv *btv)
...
@@ -587,7 +582,7 @@ static int set_pll(struct bttv *btv)
else
else
{
{
btwrite
(
0x08
,
BT848_TGCTRL
);
btwrite
(
0x08
,
BT848_TGCTRL
);
btv
->
pll
|=
2
;
btv
->
pll
.
pll_crystal
|=
2
;
return
1
;
return
1
;
}
}
udelay
(
10000
);
udelay
(
10000
);
...
@@ -1179,7 +1174,7 @@ static void set_freq(struct bttv *btv, unsigned short freq)
...
@@ -1179,7 +1174,7 @@ static void set_freq(struct bttv *btv, unsigned short freq)
audio
(
btv
,
AUDIO_MUTE
);
audio
(
btv
,
AUDIO_MUTE
);
udelay
(
AUDIO_MUTE_DELAY
);
udelay
(
AUDIO_MUTE_DELAY
);
if
(
radio
[
btv
->
nr
]
)
if
(
btv
->
radio
)
{
{
if
(
btv
->
have_tuner
)
if
(
btv
->
have_tuner
)
i2c_control_device
(
&
(
btv
->
i2c
),
I2C_DRIVERID_TUNER
,
i2c_control_device
(
&
(
btv
->
i2c
),
I2C_DRIVERID_TUNER
,
...
@@ -1831,12 +1826,22 @@ static int bttv_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
...
@@ -1831,12 +1826,22 @@ static int bttv_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
return
-
EFAULT
;
return
-
EFAULT
;
break
;
break
;
case
BTTV_FIELDNR
:
case
BTTV_FIELDNR
:
if
(
copy_to_user
((
void
*
)
arg
,
(
void
*
)
&
btv
->
last_field
,
if
(
copy_to_user
((
void
*
)
arg
,
(
void
*
)
&
btv
->
last_field
,
sizeof
(
btv
->
last_field
)))
sizeof
(
btv
->
last_field
)))
return
-
EFAULT
;
return
-
EFAULT
;
break
;
break
;
case
BTTV_PLLSET
:
{
struct
bttv_pll_info
p
;
if
(
copy_from_user
(
&
p
,
(
void
*
)
arg
,
sizeof
(
btv
->
pll
)))
return
-
EFAULT
;
btv
->
pll
.
pll_ifreq
=
p
.
pll_ifreq
;
btv
->
pll
.
pll_ofreq
=
p
.
pll_ofreq
;
btv
->
pll
.
pll_crystal
=
p
.
pll_crystal
;
break
;
}
case
VIDIOCMCAPTURE
:
case
VIDIOCMCAPTURE
:
{
{
struct
video_mmap
vm
;
struct
video_mmap
vm
;
...
@@ -2902,12 +2907,16 @@ int configure_bt848(struct pci_dev *dev, int bttv_num)
...
@@ -2902,12 +2907,16 @@ int configure_bt848(struct pci_dev *dev, int bttv_num)
printk
(
"irq: %d, "
,
btv
->
irq
);
printk
(
"irq: %d, "
,
btv
->
irq
);
printk
(
"memory: 0x%08x.
\n
"
,
btv
->
bt848_adr
);
printk
(
"memory: 0x%08x.
\n
"
,
btv
->
bt848_adr
);
btv
->
pll
=
0
;
btv
->
pll
.
pll_ifreq
=
0
;
btv
->
pll
.
pll_ifreq
=
0
;
btv
->
pll
.
pll_crystal
=
0
;
if
(
pll
[
btv
->
nr
])
if
(
pll
[
btv
->
nr
])
if
(
!
(
btv
->
id
==
848
&&
btv
->
revision
==
0x11
))
if
(
!
(
btv
->
id
==
848
&&
btv
->
revision
==
0x11
))
{
{
printk
(
KERN_INFO
"bttv%d: internal PLL, single crystal operation enabled
\n
"
,
bttv_num
);
printk
(
KERN_INFO
"bttv%d: internal PLL, single crystal operation enabled
\n
"
,
bttv_num
);
btv
->
pll
=
1
;
btv
->
pll
.
pll_ofreq
=
28636363
;
btv
->
pll
.
pll_ifreq
=
35468950
;
btv
->
pll
.
pll_crystal
=
BT848_IFORM_XT1
;
}
}
btv
->
bt848_mem
=
ioremap
(
btv
->
bt848_adr
,
0x1000
);
btv
->
bt848_mem
=
ioremap
(
btv
->
bt848_adr
,
0x1000
);
...
@@ -3088,3 +3097,4 @@ void cleanup_module(void)
...
@@ -3088,3 +3097,4 @@ void cleanup_module(void)
* tab-width: 8
* tab-width: 8
* End:
* End:
*/
*/
drivers/char/bttv.h
View file @
07e73e00
...
@@ -57,6 +57,12 @@ struct bttv_window
...
@@ -57,6 +57,12 @@ struct bttv_window
};
};
struct
bttv_pll_info
{
unsigned
int
pll_ifreq
;
/* PLL input frequency */
unsigned
int
pll_ofreq
;
/* PLL output frequency */
unsigned
int
pll_crystal
;
/* Crystal used for input */
};
struct
bttv
struct
bttv
{
{
struct
video_device
video_dev
;
struct
video_device
video_dev
;
...
@@ -130,14 +136,13 @@ struct bttv
...
@@ -130,14 +136,13 @@ struct bttv
int
grab
;
int
grab
;
int
grabcount
;
int
grabcount
;
int
pll
;
struct
bttv_pll_info
pll
;
unsigned
int
Fsc
;
unsigned
int
Fsc
;
unsigned
int
field
;
unsigned
int
field
;
unsigned
int
last_field
;
/* number of last grabbed field */
unsigned
int
last_field
;
/* number of last grabbed field */
int
i2c_command
;
int
i2c_command
;
int
triton1
;
int
triton1
;
};
};
#endif
#endif
/*The following should be done in more portable way. It depends on define
/*The following should be done in more portable way. It depends on define
...
@@ -161,6 +166,7 @@ struct bttv
...
@@ -161,6 +166,7 @@ struct bttv
#define BTTV_WRITEE _IOR('v', BASE_VIDIOCPRIVATE+1, char [256])
#define BTTV_WRITEE _IOR('v', BASE_VIDIOCPRIVATE+1, char [256])
#define BTTV_GRAB _IOR('v' , BASE_VIDIOCPRIVATE+2, struct gbuf)
#define BTTV_GRAB _IOR('v' , BASE_VIDIOCPRIVATE+2, struct gbuf)
#define BTTV_FIELDNR _IOR('v' , BASE_VIDIOCPRIVATE+2, unsigned int)
#define BTTV_FIELDNR _IOR('v' , BASE_VIDIOCPRIVATE+2, unsigned int)
#define BTTV_PLLSET _IOW('v' , BASE_VIDIOCPRIVATE+3, struct bttv_pll_info)
#define BTTV_UNKNOWN 0x00
#define BTTV_UNKNOWN 0x00
...
...
drivers/char/pc_keyb.c
View file @
07e73e00
...
@@ -62,34 +62,41 @@ unsigned char pckbd_sysrq_xlate[128] =
...
@@ -62,34 +62,41 @@ unsigned char pckbd_sysrq_xlate[128] =
__initfunc
(
static
int
kbd_wait_for_input
(
void
))
__initfunc
(
static
int
kbd_wait_for_input
(
void
))
{
{
int
status
,
data
;
long
timeout
=
KBD_INIT_TIMEOUT
;
unsigned
long
start
=
jiffies
;
int
retval
=
-
1
;
do
{
goto
in_loop
;
status
=
inb
(
KBD_STATUS_REG
);
for
(;;)
{
unsigned
char
status
,
data
;
/*
if
(
--
timeout
<
0
)
* Wait for input data to become available. This bit will
break
;
* then be cleared by the following read of the DATA
mdelay
(
1
);
* register.
in_loop:
*/
status
=
inb
(
KBD_STATUS_REG
);
if
(
!
(
status
&
KBD_STAT_OBF
))
/*
* Wait for input data to become available. This bit will
* then be cleared by the following read of the DATA
* register.
*/
if
(
!
(
status
&
KBD_STAT_OBF
))
continue
;
continue
;
data
=
inb
(
KBD_DATA_REG
);
data
=
inb
(
KBD_DATA_REG
);
/*
/*
* Check to see if a timeout error has occurred. This means
* Check to see if a timeout error has occurred. This means
* that transmission was started but did not complete in the
* that transmission was started but did not complete in the
* normal time cycle. PERR is set when a parity error occurred
* normal time cycle. PERR is set when a parity error occurred
* in the last transmission.
* in the last transmission.
*/
*/
if
(
status
&
(
KBD_STAT_GTO
|
KBD_STAT_PERR
))
{
if
(
status
&
(
KBD_STAT_GTO
|
KBD_STAT_PERR
))
continue
;
continue
;
}
return
(
data
&
0xff
);
retval
=
data
;
}
while
(
jiffies
-
start
<
KBD_INIT_TIMEOUT
);
break
;
return
-
1
;
/* timed-out if fell through to here... */
}
return
retval
;
}
}
__initfunc
(
static
void
kbd_write
(
int
address
,
int
data
))
__initfunc
(
static
void
kbd_write
(
int
address
,
int
data
))
...
@@ -144,14 +151,14 @@ __initfunc(static char *initialize_kbd2(void))
...
@@ -144,14 +151,14 @@ __initfunc(static char *initialize_kbd2(void))
* Set up to try again if the keyboard asks for RESEND.
* Set up to try again if the keyboard asks for RESEND.
*/
*/
do
{
do
{
kbd_write
(
KBD_DATA_REG
,
KBD_CMD_RESET
);
kbd_write
(
KBD_DATA_REG
,
KBD_CMD_RESET
);
status
=
kbd_wait_for_input
();
status
=
kbd_wait_for_input
();
if
(
status
==
KBD_REPLY_ACK
)
if
(
status
==
KBD_REPLY_ACK
)
break
;
break
;
else
if
(
status
!=
KBD_REPLY_RESEND
)
else
if
(
status
!=
KBD_REPLY_RESEND
)
return
"Keyboard reset failed, no ACK"
;
return
"Keyboard reset failed, no ACK"
;
}
while
(
1
);
}
while
(
1
);
if
(
kbd_wait_for_input
()
!=
KBD_REPLY_POR
)
if
(
kbd_wait_for_input
()
!=
KBD_REPLY_POR
)
return
"Keyboard reset failed, no POR"
;
return
"Keyboard reset failed, no POR"
;
...
@@ -174,9 +181,9 @@ __initfunc(static char *initialize_kbd2(void))
...
@@ -174,9 +181,9 @@ __initfunc(static char *initialize_kbd2(void))
kbd_write
(
KBD_CNTL_REG
,
KBD_CCMD_WRITE_MODE
);
kbd_write
(
KBD_CNTL_REG
,
KBD_CCMD_WRITE_MODE
);
kbd_write
(
KBD_DATA_REG
,
KBD_MODE_KBD_INT
kbd_write
(
KBD_DATA_REG
,
KBD_MODE_KBD_INT
|
KBD_MODE_SYS
|
KBD_MODE_SYS
|
KBD_MODE_DISABLE_MOUSE
|
KBD_MODE_DISABLE_MOUSE
|
KBD_MODE_KCC
);
|
KBD_MODE_KCC
);
/* ibm powerpc portables need this to use scan-code set 1 -- Cort */
/* ibm powerpc portables need this to use scan-code set 1 -- Cort */
kbd_write
(
KBD_CNTL_REG
,
KBD_CCMD_READ_MODE
);
kbd_write
(
KBD_CNTL_REG
,
KBD_CCMD_READ_MODE
);
...
@@ -439,7 +446,7 @@ static int do_acknowledge(unsigned char scancode)
...
@@ -439,7 +446,7 @@ static int do_acknowledge(unsigned char scancode)
int
pckbd_pretranslate
(
unsigned
char
scancode
,
char
raw_mode
)
int
pckbd_pretranslate
(
unsigned
char
scancode
,
char
raw_mode
)
{
{
if
(
scancode
==
0xff
)
{
if
(
scancode
==
0xff
)
{
/* in scancode mode 1, my ESC key generates 0xff */
/* in scancode mode 1, my ESC key generates 0xff */
/* the calculator keys on a FOCUS 9000 generate 0xff */
/* the calculator keys on a FOCUS 9000 generate 0xff */
#ifndef KBD_IS_FOCUS_9000
#ifndef KBD_IS_FOCUS_9000
#ifdef KBD_REPORT_ERR
#ifdef KBD_REPORT_ERR
...
...
drivers/char/pc_keyb.h
View file @
07e73e00
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
#define KBD_REPORT_TIMEOUTS
/* Report keyboard timeouts */
#define KBD_REPORT_TIMEOUTS
/* Report keyboard timeouts */
#undef KBD_IS_FOCUS_9000
/* We have the brain-damaged FOCUS-9000 keyboard */
#undef KBD_IS_FOCUS_9000
/* We have the brain-damaged FOCUS-9000 keyboard */
#define KBD_INIT_TIMEOUT
HZ
/* Timeout in jiffie
s for initializing the keyboard */
#define KBD_INIT_TIMEOUT
1000
/* Timeout in m
s for initializing the keyboard */
#define KBC_TIMEOUT 250
/* Timeout in ms for sending to keyboard controller */
#define KBC_TIMEOUT 250
/* Timeout in ms for sending to keyboard controller */
#define KBD_TIMEOUT 1000
/* Timeout in ms for keyboard command acknowledge */
#define KBD_TIMEOUT 1000
/* Timeout in ms for keyboard command acknowledge */
...
...
drivers/char/pms.c
View file @
07e73e00
...
@@ -255,20 +255,6 @@ static void pms_brightness(short brightness)
...
@@ -255,20 +255,6 @@ static void pms_brightness(short brightness)
}
}
}
}
static
void
pms_hstart
(
short
start
)
{
switch
(
decoder
)
{
case
PHILIPS1
:
i2c_write
(
0x8A
,
0x05
,
start
);
i2c_write
(
0x8A
,
0x18
,
start
);
break
;
case
PHILIPS2
:
i2c_write
(
0x42
,
0x05
,
start
);
i2c_write
(
0x42
,
0x18
,
start
);
break
;
}
}
static
void
pms_format
(
short
format
)
static
void
pms_format
(
short
format
)
{
{
...
@@ -303,6 +289,29 @@ static void pms_format(short format)
...
@@ -303,6 +289,29 @@ static void pms_format(short format)
}
}
}
}
#ifdef FOR_FUTURE_EXPANSION
/*
* These features of the PMS card are not currently exposes. They
* could become a private v4l ioctl for PMSCONFIG or somesuch if
* people need it. We also don't yet use the PMS interrupt.
*/
static
void
pms_hstart
(
short
start
)
{
switch
(
decoder
)
{
case
PHILIPS1
:
i2c_write
(
0x8A
,
0x05
,
start
);
i2c_write
(
0x8A
,
0x18
,
start
);
break
;
case
PHILIPS2
:
i2c_write
(
0x42
,
0x05
,
start
);
i2c_write
(
0x42
,
0x18
,
start
);
break
;
}
}
/*
/*
* Bandpass filters
* Bandpass filters
*/
*/
...
@@ -347,14 +356,6 @@ static void pms_vertnoise(short noise)
...
@@ -347,14 +356,6 @@ static void pms_vertnoise(short noise)
i2c_andor
(
0x42
,
0x10
,
0xFC
,
noise
&
3
);
i2c_andor
(
0x42
,
0x10
,
0xFC
,
noise
&
3
);
}
}
static
void
pms_secamcross
(
short
cross
)
{
if
(
decoder
==
PHILIPS2
)
i2c_andor
(
0x8A
,
0x0F
,
0xDF
,
(
cross
&
1
)
<<
5
);
else
if
(
decoder
==
PHILIPS1
)
i2c_andor
(
0x42
,
0x0F
,
0xDF
,
(
cross
&
1
)
<<
5
);
}
static
void
pms_forcecolour
(
short
colour
)
static
void
pms_forcecolour
(
short
colour
)
{
{
if
(
decoder
==
PHILIPS2
)
if
(
decoder
==
PHILIPS2
)
...
@@ -409,20 +410,6 @@ static void pms_killcolour(short colour)
...
@@ -409,20 +410,6 @@ static void pms_killcolour(short colour)
}
}
}
}
static
void
pms_swsense
(
short
sense
)
{
if
(
decoder
==
PHILIPS2
)
{
i2c_write
(
0x8A
,
0x0A
,
sense
);
i2c_write
(
0x8A
,
0x0B
,
sense
);
}
else
if
(
decoder
==
PHILIPS1
)
{
i2c_write
(
0x42
,
0x0A
,
sense
);
i2c_write
(
0x42
,
0x0B
,
sense
);
}
}
static
void
pms_chromagain
(
short
chroma
)
static
void
pms_chromagain
(
short
chroma
)
{
{
if
(
decoder
==
PHILIPS2
)
if
(
decoder
==
PHILIPS2
)
...
@@ -446,6 +433,38 @@ static void pms_spacialcomph(short data)
...
@@ -446,6 +433,38 @@ static void pms_spacialcomph(short data)
mvv_write
(
0x3A
,
data
);
mvv_write
(
0x3A
,
data
);
}
}
static
void
pms_vstart
(
short
start
)
{
mvv_write
(
0x16
,
start
);
mvv_write
(
0x17
,
(
start
>>
8
)
&
0x01
);
}
#endif
static
void
pms_secamcross
(
short
cross
)
{
if
(
decoder
==
PHILIPS2
)
i2c_andor
(
0x8A
,
0x0F
,
0xDF
,
(
cross
&
1
)
<<
5
);
else
if
(
decoder
==
PHILIPS1
)
i2c_andor
(
0x42
,
0x0F
,
0xDF
,
(
cross
&
1
)
<<
5
);
}
static
void
pms_swsense
(
short
sense
)
{
if
(
decoder
==
PHILIPS2
)
{
i2c_write
(
0x8A
,
0x0A
,
sense
);
i2c_write
(
0x8A
,
0x0B
,
sense
);
}
else
if
(
decoder
==
PHILIPS1
)
{
i2c_write
(
0x42
,
0x0A
,
sense
);
i2c_write
(
0x42
,
0x0B
,
sense
);
}
}
static
void
pms_framerate
(
short
frr
)
static
void
pms_framerate
(
short
frr
)
{
{
int
fps
=
(
standard
==
1
)
?
30
:
25
;
int
fps
=
(
standard
==
1
)
?
30
:
25
;
...
@@ -586,11 +605,6 @@ static void pms_resolution(short width, short height)
...
@@ -586,11 +605,6 @@ static void pms_resolution(short width, short height)
mvv_write
(
0x33
,
MVVMEMORYWIDTH
);
mvv_write
(
0x33
,
MVVMEMORYWIDTH
);
}
}
static
void
pms_vstart
(
short
start
)
{
mvv_write
(
0x16
,
start
);
mvv_write
(
0x17
,
(
start
>>
8
)
&
0x01
);
}
/*
/*
* Set Input
* Set Input
...
...
drivers/char/saa5249.c
View file @
07e73e00
...
@@ -172,6 +172,9 @@ static int saa5249_attach(struct i2c_device *device)
...
@@ -172,6 +172,9 @@ static int saa5249_attach(struct i2c_device *device)
kfree
(
vd
);
kfree
(
vd
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
memset
(
t
,
0
,
sizeof
(
*
t
));
for
(
pgbuf
=
0
;
pgbuf
<
NUM_DAUS
;
pgbuf
++
)
for
(
pgbuf
=
0
;
pgbuf
<
NUM_DAUS
;
pgbuf
++
)
{
{
memset
(
t
->
vdau
[
pgbuf
].
pgbuf
,
' '
,
sizeof
(
t
->
vdau
[
0
].
pgbuf
));
memset
(
t
->
vdau
[
pgbuf
].
pgbuf
,
' '
,
sizeof
(
t
->
vdau
[
0
].
pgbuf
));
...
@@ -680,6 +683,7 @@ static struct video_device saa_template=
...
@@ -680,6 +683,7 @@ static struct video_device saa_template=
saa5249_release
,
saa5249_release
,
saa5249_read
,
saa5249_read
,
saa5249_write
,
saa5249_write
,
NULL
,
/* poll */
saa5249_ioctl
,
saa5249_ioctl
,
NULL
,
NULL
,
NULL
,
NULL
,
...
...
drivers/net/de4x5.c
View file @
07e73e00
...
@@ -399,11 +399,21 @@
...
@@ -399,11 +399,21 @@
from report & fix by <paubert@iram.es>.
from report & fix by <paubert@iram.es>.
Fix probe bug with EISA & PCI cards present from
Fix probe bug with EISA & PCI cards present from
report by <eirik@netcom.com>.
report by <eirik@netcom.com>.
0.541 24-Aug-98 Fix compiler problems associated with i386-string
ops from multiple bug reports and temporary fix
from <paubert@iram.es>.
Fix pci_probe() to correctly emulate the old
pcibios_find_class() function.
Add an_exception() for old ZYNX346 and fix compile
warning on PPC & SPARC, from <ecd@skynet.be>.
Fix lastPCI to correctly work with compiled in
kernels and modules from bug report by
<Zlatko.Calusic@CARNet.hr> et al.
=========================================================================
=========================================================================
*/
*/
static
const
char
*
version
=
"de4x5.c:V0.54
0 1998/7/5
davies@maniac.ultranet.com
\n
"
;
static
const
char
*
version
=
"de4x5.c:V0.54
1 1998/8/24
davies@maniac.ultranet.com
\n
"
;
#include <linux/config.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
...
@@ -954,6 +964,7 @@ static void SetMulticastFilter(struct device *dev);
...
@@ -954,6 +964,7 @@ static void SetMulticastFilter(struct device *dev);
static
int
get_hw_addr
(
struct
device
*
dev
);
static
int
get_hw_addr
(
struct
device
*
dev
);
static
void
srom_repair
(
struct
device
*
dev
,
int
card
);
static
void
srom_repair
(
struct
device
*
dev
,
int
card
);
static
int
test_bad_enet
(
struct
device
*
dev
,
int
status
);
static
int
test_bad_enet
(
struct
device
*
dev
,
int
status
);
static
int
an_exception
(
struct
bus_type
*
lp
);
#if !defined(__sparc_v9__) && !defined(__powerpc__)
#if !defined(__sparc_v9__) && !defined(__powerpc__)
static
void
eisa_probe
(
struct
device
*
dev
,
u_long
iobase
);
static
void
eisa_probe
(
struct
device
*
dev
,
u_long
iobase
);
#endif
#endif
...
@@ -1013,6 +1024,7 @@ static int num_de4x5s = 0;
...
@@ -1013,6 +1024,7 @@ static int num_de4x5s = 0;
static
int
cfrv
=
0
,
useSROM
=
0
;
static
int
cfrv
=
0
,
useSROM
=
0
;
static
int
lastPCI
=
-
1
;
static
int
lastPCI
=
-
1
;
static
struct
device
*
lastModule
=
NULL
;
static
struct
device
*
lastModule
=
NULL
;
static
struct
pci_dev
*
pdev
=
NULL
;
/*
/*
** List the SROM infoleaf functions and chipsets
** List the SROM infoleaf functions and chipsets
...
@@ -2103,7 +2115,6 @@ pci_probe(struct device *dev, u_long ioaddr))
...
@@ -2103,7 +2115,6 @@ pci_probe(struct device *dev, u_long ioaddr))
u_int
irq
=
0
,
device
,
class
=
DE4X5_CLASS_CODE
;
u_int
irq
=
0
,
device
,
class
=
DE4X5_CLASS_CODE
;
u_long
iobase
=
0
;
/* Clear upper 32 bits in Alphas */
u_long
iobase
=
0
;
/* Clear upper 32 bits in Alphas */
struct
bus_type
*
lp
=
&
bus
;
struct
bus_type
*
lp
=
&
bus
;
struct
pci_dev
*
pdev
=
NULL
;
if
(
lastPCI
==
NO_MORE_PCI
)
return
;
if
(
lastPCI
==
NO_MORE_PCI
)
return
;
...
@@ -2123,7 +2134,7 @@ pci_probe(struct device *dev, u_long ioaddr))
...
@@ -2123,7 +2134,7 @@ pci_probe(struct device *dev, u_long ioaddr))
dnum
=
0
;
dnum
=
0
;
}
}
for
(
index
=
lastPCI
+
1
;
(
pdev
=
pci_find_class
(
class
,
pdev
))
!=
NULL
;
index
++
)
{
for
(
index
=
lastPCI
+
1
;
(
pdev
=
pci_find_class
(
class
,
pdev
))
!=
NULL
;
index
++
)
{
dev_num
=
PCI_SLOT
(
pdev
->
devfn
);
dev_num
=
PCI_SLOT
(
pdev
->
devfn
);
pb
=
pdev
->
bus
->
number
;
pb
=
pdev
->
bus
->
number
;
if
((
pbus
||
dnum
)
&&
((
pbus
!=
pb
)
||
(
dnum
!=
dev_num
)))
continue
;
if
((
pbus
||
dnum
)
&&
((
pbus
!=
pb
)
||
(
dnum
!=
dev_num
)))
continue
;
...
@@ -2185,10 +2196,8 @@ pci_probe(struct device *dev, u_long ioaddr))
...
@@ -2185,10 +2196,8 @@ pci_probe(struct device *dev, u_long ioaddr))
dev
->
irq
=
irq
;
dev
->
irq
=
irq
;
if
((
status
=
de4x5_hw_init
(
dev
,
iobase
))
==
0
)
{
if
((
status
=
de4x5_hw_init
(
dev
,
iobase
))
==
0
)
{
num_de4x5s
++
;
num_de4x5s
++
;
if
(
loading_module
)
{
lastPCI
=
index
;
link_modules
(
lastModule
,
dev
);
if
(
loading_module
)
link_modules
(
lastModule
,
dev
);
lastPCI
=
index
;
}
return
;
return
;
}
}
}
else
if
(
ioaddr
!=
0
)
{
}
else
if
(
ioaddr
!=
0
)
{
...
@@ -2209,27 +2218,26 @@ pci_probe(struct device *dev, u_long ioaddr))
...
@@ -2209,27 +2218,26 @@ pci_probe(struct device *dev, u_long ioaddr))
** For single port cards this is a time waster...
** For single port cards this is a time waster...
*/
*/
__initfunc
(
static
void
__initfunc
(
static
void
srom_search
(
struct
pci_dev
*
p
dev
))
srom_search
(
struct
pci_dev
*
dev
))
{
{
u_char
pb
;
u_char
pb
;
u_short
vendor
,
status
;
u_short
vendor
,
status
;
u_int
irq
=
0
,
device
,
class
=
DE4X5_CLASS_CODE
;
u_int
irq
=
0
,
device
;
u_long
iobase
=
0
;
/* Clear upper 32 bits in Alphas */
u_long
iobase
=
0
;
/* Clear upper 32 bits in Alphas */
int
i
,
j
;
int
i
,
j
;
struct
bus_type
*
lp
=
&
bus
;
struct
bus_type
*
lp
=
&
bus
;
while
((
pdev
=
pci_find_class
(
class
,
pdev
))
!=
NULL
)
{
for
(;
(
dev
=
dev
->
sibling
)
!=
NULL
;)
{
if
(
lp
->
bus_num
!=
pdev
->
bus
->
number
)
return
;
pb
=
dev
->
bus
->
number
;
pb
=
pdev
->
bus
->
number
;
vendor
=
dev
->
vendor
;
vendor
=
pdev
->
vendor
;
device
=
dev
->
device
<<
8
;
device
=
pdev
->
device
<<
8
;
if
(
!
(
is_DC21040
||
is_DC21041
||
is_DC21140
||
is_DC2114x
))
continue
;
if
(
!
(
is_DC21040
||
is_DC21041
||
is_DC21140
||
is_DC2114x
))
continue
;
/* Get the chip configuration revision register */
/* Get the chip configuration revision register */
pcibios_read_config_dword
(
pb
,
p
dev
->
devfn
,
PCI_REVISION_ID
,
&
cfrv
);
pcibios_read_config_dword
(
pb
,
dev
->
devfn
,
PCI_REVISION_ID
,
&
cfrv
);
/* Set the device number information */
/* Set the device number information */
lp
->
device
=
PCI_SLOT
(
p
dev
->
devfn
);
lp
->
device
=
PCI_SLOT
(
dev
->
devfn
);
lp
->
bus_num
=
pb
;
lp
->
bus_num
=
pb
;
/* Set the chipset information */
/* Set the chipset information */
...
@@ -2237,14 +2245,14 @@ srom_search(struct pci_dev *pdev))
...
@@ -2237,14 +2245,14 @@ srom_search(struct pci_dev *pdev))
lp
->
chipset
=
device
;
lp
->
chipset
=
device
;
/* Get the board I/O address (64 bits on sparc64) */
/* Get the board I/O address (64 bits on sparc64) */
iobase
=
p
dev
->
base_address
[
0
]
&
CBIO_MASK
;
iobase
=
dev
->
base_address
[
0
]
&
CBIO_MASK
;
/* Fetch the IRQ to be used */
/* Fetch the IRQ to be used */
irq
=
p
dev
->
irq
;
irq
=
dev
->
irq
;
if
((
irq
==
0
)
||
(
irq
==
0xff
)
||
((
int
)
irq
==
-
1
))
continue
;
if
((
irq
==
0
)
||
(
irq
==
0xff
)
||
((
int
)
irq
==
-
1
))
continue
;
/* Check if I/O accesses are enabled */
/* Check if I/O accesses are enabled */
pcibios_read_config_word
(
pb
,
p
dev
->
devfn
,
PCI_COMMAND
,
&
status
);
pcibios_read_config_word
(
pb
,
dev
->
devfn
,
PCI_COMMAND
,
&
status
);
if
(
!
(
status
&
PCI_COMMAND_IO
))
continue
;
if
(
!
(
status
&
PCI_COMMAND_IO
))
continue
;
/* Search for a valid SROM attached to this DECchip */
/* Search for a valid SROM attached to this DECchip */
...
@@ -4204,7 +4212,9 @@ test_bad_enet(struct device *dev, int status)
...
@@ -4204,7 +4212,9 @@ test_bad_enet(struct device *dev, int status)
if
(
dev
->
dev_addr
[
i
]
!=
0
)
break
;
if
(
dev
->
dev_addr
[
i
]
!=
0
)
break
;
}
}
for
(
i
=
0
;
i
<
ETH_ALEN
;
i
++
)
last
.
addr
[
i
]
=
dev
->
dev_addr
[
i
];
for
(
i
=
0
;
i
<
ETH_ALEN
;
i
++
)
last
.
addr
[
i
]
=
dev
->
dev_addr
[
i
];
dev
->
irq
=
last
.
irq
;
if
(
!
an_exception
(
lp
))
{
dev
->
irq
=
last
.
irq
;
}
status
=
0
;
status
=
0
;
}
}
...
@@ -4218,6 +4228,20 @@ test_bad_enet(struct device *dev, int status)
...
@@ -4218,6 +4228,20 @@ test_bad_enet(struct device *dev, int status)
return
status
;
return
status
;
}
}
/*
** List of board exceptions with correctly wired IRQs
*/
static
int
an_exception
(
struct
bus_type
*
lp
)
{
if
((
*
(
u_short
*
)
lp
->
srom
.
sub_vendor_id
==
0x00c0
)
&&
(
*
(
u_short
*
)
lp
->
srom
.
sub_system_id
==
0x95e0
))
{
return
-
1
;
}
return
0
;
}
/*
/*
** SROM Read
** SROM Read
*/
*/
...
@@ -5788,14 +5812,12 @@ static int
...
@@ -5788,14 +5812,12 @@ static int
count_adapters
(
void
)
count_adapters
(
void
)
{
{
int
i
,
j
=
0
;
int
i
,
j
=
0
;
char
name
[
DE4X5_STRLEN
];
u_char
pb
,
dev_fn
;
u_short
vendor
;
u_short
vendor
;
u_int
class
=
DE4X5_CLASS_CODE
;
u_int
class
=
DE4X5_CLASS_CODE
;
u_int
device
;
u_int
device
;
struct
pci_dev
*
pdev
;
#if !defined(__sparc_v9__) && !defined(__powerpc__)
#if !defined(__sparc_v9__) && !defined(__powerpc__)
char
name
[
DE4X5_STRLEN
];
u_long
iobase
=
0x1000
;
u_long
iobase
=
0x1000
;
for
(
i
=
1
;
i
<
MAX_EISA_SLOTS
;
i
++
,
iobase
+=
EISA_SLOT_INC
)
{
for
(
i
=
1
;
i
<
MAX_EISA_SLOTS
;
i
++
,
iobase
+=
EISA_SLOT_INC
)
{
...
@@ -5804,13 +5826,7 @@ count_adapters(void)
...
@@ -5804,13 +5826,7 @@ count_adapters(void)
#endif
#endif
if
(
!
pcibios_present
())
return
j
;
if
(
!
pcibios_present
())
return
j
;
for
(
i
=
0
;
for
(
i
=
0
;
(
pdev
=
pci_find_class
(
class
,
pdev
))
!=
NULL
;
i
++
)
{
(
pcibios_find_class
(
class
,
i
,
&
pb
,
&
dev_fn
)
!=
PCIBIOS_DEVICE_NOT_FOUND
);
i
++
)
{
for
(
pdev
=
pci_devices
;
pdev
;
pdev
=
pdev
->
next
)
{
if
((
pdev
->
bus
->
number
==
pb
)
&&
(
pdev
->
devfn
==
dev_fn
))
break
;
}
vendor
=
pdev
->
vendor
;
vendor
=
pdev
->
vendor
;
device
=
pdev
->
device
<<
8
;
device
=
pdev
->
device
<<
8
;
if
(
is_DC21040
||
is_DC21041
||
is_DC21140
||
is_DC2114x
)
j
++
;
if
(
is_DC21040
||
is_DC21041
||
is_DC21140
||
is_DC2114x
)
j
++
;
...
...
drivers/net/pcnet32.c
View file @
07e73e00
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
* This driver is for PCnet32 and PCnetPCI based ethercards
* This driver is for PCnet32 and PCnetPCI based ethercards
*/
*/
static
const
char
*
version
=
"pcnet32.c:v1.0
0 30.5
.98 tsbogend@alpha.franken.de
\n
"
;
static
const
char
*
version
=
"pcnet32.c:v1.0
1 29.8
.98 tsbogend@alpha.franken.de
\n
"
;
#include <linux/config.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
...
@@ -98,6 +98,9 @@ static const int rx_copybreak = 200;
...
@@ -98,6 +98,9 @@ static const int rx_copybreak = 200;
* back port to 2.0.x
* back port to 2.0.x
* v1.00: added some stuff from Donald Becker's 2.0.34 version
* v1.00: added some stuff from Donald Becker's 2.0.34 version
* added support for byte counters in net_dev_stats
* added support for byte counters in net_dev_stats
* v1.01: do ring dumps, only when debugging the driver
* increased the transmit timeout
*
*/
*/
...
@@ -573,15 +576,14 @@ pcnet32_start_xmit(struct sk_buff *skb, struct device *dev)
...
@@ -573,15 +576,14 @@ pcnet32_start_xmit(struct sk_buff *skb, struct device *dev)
/* Transmitter timeout, serious problems. */
/* Transmitter timeout, serious problems. */
if
(
dev
->
tbusy
)
{
if
(
dev
->
tbusy
)
{
int
tickssofar
=
jiffies
-
dev
->
trans_start
;
int
tickssofar
=
jiffies
-
dev
->
trans_start
;
if
(
tickssofar
<
20
)
if
(
tickssofar
<
HZ
/
2
)
return
1
;
return
1
;
outw
(
0
,
ioaddr
+
PCNET32_ADDR
);
outw
(
0
,
ioaddr
+
PCNET32_ADDR
);
printk
(
"%s: transmit timed out, status %4.4x, resetting.
\n
"
,
printk
(
"%s: transmit timed out, status %4.4x, resetting.
\n
"
,
dev
->
name
,
inw
(
ioaddr
+
PCNET32_DATA
));
dev
->
name
,
inw
(
ioaddr
+
PCNET32_DATA
));
outw
(
0x0004
,
ioaddr
+
PCNET32_DATA
);
outw
(
0x0004
,
ioaddr
+
PCNET32_DATA
);
lp
->
stats
.
tx_errors
++
;
lp
->
stats
.
tx_errors
++
;
#ifndef final_version
if
(
pcnet32_debug
>
2
)
{
{
int
i
;
int
i
;
printk
(
" Ring data dump: dirty_tx %d cur_tx %d%s cur_rx %d."
,
printk
(
" Ring data dump: dirty_tx %d cur_tx %d%s cur_rx %d."
,
lp
->
dirty_tx
,
lp
->
cur_tx
,
lp
->
tx_full
?
" (full)"
:
""
,
lp
->
dirty_tx
,
lp
->
cur_tx
,
lp
->
tx_full
?
" (full)"
:
""
,
...
@@ -596,7 +598,6 @@ pcnet32_start_xmit(struct sk_buff *skb, struct device *dev)
...
@@ -596,7 +598,6 @@ pcnet32_start_xmit(struct sk_buff *skb, struct device *dev)
lp
->
tx_ring
[
i
].
misc
,
(
unsigned
)
lp
->
tx_ring
[
i
].
status
);
lp
->
tx_ring
[
i
].
misc
,
(
unsigned
)
lp
->
tx_ring
[
i
].
status
);
printk
(
"
\n
"
);
printk
(
"
\n
"
);
}
}
#endif
pcnet32_restart
(
dev
,
0x0042
);
pcnet32_restart
(
dev
,
0x0042
);
dev
->
tbusy
=
0
;
dev
->
tbusy
=
0
;
...
...
drivers/pnp/parport_probe.c
View file @
07e73e00
...
@@ -6,9 +6,6 @@
...
@@ -6,9 +6,6 @@
*/
*/
#include <linux/tasks.h>
#include <linux/tasks.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <linux/parport.h>
#include <linux/parport.h>
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/errno.h>
...
@@ -21,7 +18,10 @@
...
@@ -21,7 +18,10 @@
#include <linux/lp.h>
#include <linux/lp.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
#undef DEBUG_PROBE
#undef DEBUG_PROBE
static
inline
int
read_nibble
(
struct
parport
*
port
)
static
inline
int
read_nibble
(
struct
parport
*
port
)
...
...
drivers/sound/lowlevel/awe_compat.h
View file @
07e73e00
...
@@ -92,7 +92,7 @@ static void *my_realloc(void *buf, int oldsize, int size)
...
@@ -92,7 +92,7 @@ static void *my_realloc(void *buf, int oldsize, int size)
get_user(target, (unsigned char*)&((addr)[offs]))
get_user(target, (unsigned char*)&((addr)[offs]))
#define GET_SHORT_FROM_USER(target,addr,offs) \
#define GET_SHORT_FROM_USER(target,addr,offs) \
get_user(target, (unsigned short*)&((addr)[offs]))
get_user(target, (unsigned short*)&((addr)[offs]))
#ifdef AWE_OSS38
#ifdef AWE_OSS38
_AND_IM_A_BANANA
#define IOCTL_TO_USER(target,offs,source,count) \
#define IOCTL_TO_USER(target,offs,source,count) \
memcpy(target, (source)+(offs), count)
memcpy(target, (source)+(offs), count)
#define IO_WRITE_CHECK(cmd) (_SIOC_DIR(cmd) & _IOC_WRITE)
#define IO_WRITE_CHECK(cmd) (_SIOC_DIR(cmd) & _IOC_WRITE)
...
...
fs/hpfs/hpfs_fs.c
View file @
07e73e00
...
@@ -159,6 +159,7 @@ static const struct file_operations hpfs_file_ops =
...
@@ -159,6 +159,7 @@ static const struct file_operations hpfs_file_ops =
NULL
,
/* ioctl - default */
NULL
,
/* ioctl - default */
generic_file_mmap
,
/* mmap */
generic_file_mmap
,
/* mmap */
NULL
,
/* no special open is needed */
NULL
,
/* no special open is needed */
NULL
,
/* flush */
NULL
,
/* release */
NULL
,
/* release */
file_fsync
,
/* fsync */
file_fsync
,
/* fsync */
};
};
...
@@ -203,6 +204,7 @@ static const struct file_operations hpfs_dir_ops =
...
@@ -203,6 +204,7 @@ static const struct file_operations hpfs_dir_ops =
NULL
,
/* ioctl - default */
NULL
,
/* ioctl - default */
NULL
,
/* mmap */
NULL
,
/* mmap */
NULL
,
/* no special open code */
NULL
,
/* no special open code */
NULL
,
/* flush */
NULL
,
/* no special release code */
NULL
,
/* no special release code */
file_fsync
,
/* fsync */
file_fsync
,
/* fsync */
};
};
...
...
fs/isofs/inode.c
View file @
07e73e00
...
@@ -295,7 +295,7 @@ static int parse_options(char *options, struct iso9660_options * popt)
...
@@ -295,7 +295,7 @@ static int parse_options(char *options, struct iso9660_options * popt)
{
{
char
*
this_char
,
*
value
;
char
*
this_char
,
*
value
;
popt
->
map
=
'
a
'
;
popt
->
map
=
'
n
'
;
popt
->
rock
=
'y'
;
popt
->
rock
=
'y'
;
popt
->
joliet
=
'y'
;
popt
->
joliet
=
'y'
;
popt
->
cruft
=
'n'
;
popt
->
cruft
=
'n'
;
...
...
fs/isofs/namei.c
View file @
07e73e00
...
@@ -160,7 +160,8 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry, unsigned long *ino)
...
@@ -160,7 +160,8 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry, unsigned long *ino)
dpnt
=
de
->
name
;
dpnt
=
de
->
name
;
if
(
dir
->
i_sb
->
u
.
isofs_sb
.
s_rock
||
if
(
dir
->
i_sb
->
u
.
isofs_sb
.
s_rock
||
dir
->
i_sb
->
u
.
isofs_sb
.
s_joliet_level
)
{
dir
->
i_sb
->
u
.
isofs_sb
.
s_joliet_level
||
dir
->
i_sb
->
u
.
isofs_sb
.
s_mapping
==
'a'
)
{
if
(
!
page
)
{
if
(
!
page
)
{
page
=
(
unsigned
char
*
)
page
=
(
unsigned
char
*
)
__get_free_page
(
GFP_KERNEL
);
__get_free_page
(
GFP_KERNEL
);
...
...
include/linux/nbd.h
View file @
07e73e00
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#ifdef MAJOR_NR
#ifdef MAJOR_NR
#include <linux/locks.h>
#include <linux/locks.h>
#include <asm/semaphore.h>
#define LOCAL_END_REQUEST
#define LOCAL_END_REQUEST
...
@@ -42,11 +43,13 @@ struct nbd_device {
...
@@ -42,11 +43,13 @@ struct nbd_device {
int
harderror
;
/* Code of hard error */
int
harderror
;
/* Code of hard error */
#define NBD_READ_ONLY 0x0001
#define NBD_READ_ONLY 0x0001
#define NBD_WRITE_NOCHK 0x0002
#define NBD_WRITE_NOCHK 0x0002
#define NBD_INITIALISED 0x0004
struct
socket
*
sock
;
struct
socket
*
sock
;
struct
file
*
file
;
/* If == NULL, device is not ready, yet */
struct
file
*
file
;
/* If == NULL, device is not ready, yet */
int
magic
;
/* FIXME: not if debugging is off */
int
magic
;
/* FIXME: not if debugging is off */
struct
request
*
head
;
/* Requests are added here... */
struct
request
*
head
;
/* Requests are added here... */
struct
request
*
tail
;
struct
request
*
tail
;
struct
semaphore
queue_lock
;
};
};
/* This now IS in some kind of include file... */
/* This now IS in some kind of include file... */
...
...
scripts/Configure
View file @
07e73e00
...
@@ -126,7 +126,7 @@ function readln () {
...
@@ -126,7 +126,7 @@ function readln () {
else
else
echo
-n
"
$1
"
echo
-n
"
$1
"
[
-z
"
$3
"
]
&&
echo
-n
"(NEW) "
[
-z
"
$3
"
]
&&
echo
-n
"(NEW) "
IFS
=
'@'
read
ans
</dev/tty
||
exit
1
IFS
=
'@'
read
ans
||
exit
1
[
-z
"
$ans
"
]
&&
ans
=
$2
[
-z
"
$ans
"
]
&&
ans
=
$2
fi
fi
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment