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
nexedi
linux
Commits
23dabca3
Commit
23dabca3
authored
Jun 25, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/jgarzik/net-drivers-2.5
into home.osdl.org:/home/torvalds/v2.5/linux
parents
89aaa1a6
45fad661
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
210 additions
and
135 deletions
+210
-135
arch/i386/kernel/io_apic.c
arch/i386/kernel/io_apic.c
+69
-69
arch/ppc/kernel/entry.S
arch/ppc/kernel/entry.S
+0
-3
arch/sparc64/defconfig
arch/sparc64/defconfig
+45
-33
drivers/pci/pci.c
drivers/pci/pci.c
+1
-0
drivers/serial/Kconfig
drivers/serial/Kconfig
+25
-1
drivers/serial/sunsab.c
drivers/serial/sunsab.c
+13
-1
drivers/serial/sunsu.c
drivers/serial/sunsu.c
+9
-3
drivers/serial/sunzilog.c
drivers/serial/sunzilog.c
+12
-1
drivers/usb/net/kaweth.c
drivers/usb/net/kaweth.c
+1
-1
include/asm-i386/io_apic.h
include/asm-i386/io_apic.h
+35
-23
No files found.
arch/i386/kernel/io_apic.c
View file @
23dabca3
...
@@ -1272,10 +1272,10 @@ static inline void UNEXPECTED_IO_APIC(void)
...
@@ -1272,10 +1272,10 @@ static inline void UNEXPECTED_IO_APIC(void)
void
__init
print_IO_APIC
(
void
)
void
__init
print_IO_APIC
(
void
)
{
{
int
apic
,
i
;
int
apic
,
i
;
struct
IO_APIC_reg_00
reg_00
;
union
IO_APIC_reg_00
reg_00
;
struct
IO_APIC_reg_01
reg_01
;
union
IO_APIC_reg_01
reg_01
;
struct
IO_APIC_reg_02
reg_02
;
union
IO_APIC_reg_02
reg_02
;
struct
IO_APIC_reg_03
reg_03
;
union
IO_APIC_reg_03
reg_03
;
unsigned
long
flags
;
unsigned
long
flags
;
printk
(
KERN_DEBUG
"number of MP IRQ sources: %d.
\n
"
,
mp_irq_entries
);
printk
(
KERN_DEBUG
"number of MP IRQ sources: %d.
\n
"
,
mp_irq_entries
);
...
@@ -1292,47 +1292,47 @@ void __init print_IO_APIC(void)
...
@@ -1292,47 +1292,47 @@ void __init print_IO_APIC(void)
for
(
apic
=
0
;
apic
<
nr_ioapics
;
apic
++
)
{
for
(
apic
=
0
;
apic
<
nr_ioapics
;
apic
++
)
{
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_00
=
io_apic_read
(
apic
,
0
);
reg_00
.
raw
=
io_apic_read
(
apic
,
0
);
*
(
int
*
)
&
reg_01
=
io_apic_read
(
apic
,
1
);
reg_01
.
raw
=
io_apic_read
(
apic
,
1
);
if
(
reg_01
.
version
>=
0x10
)
if
(
reg_01
.
bits
.
version
>=
0x10
)
*
(
int
*
)
&
reg_02
=
io_apic_read
(
apic
,
2
);
reg_02
.
raw
=
io_apic_read
(
apic
,
2
);
if
(
reg_01
.
version
>=
0x20
)
if
(
reg_01
.
bits
.
version
>=
0x20
)
*
(
int
*
)
&
reg_03
=
io_apic_read
(
apic
,
3
);
reg_03
.
raw
=
io_apic_read
(
apic
,
3
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
printk
(
"
\n
"
);
printk
(
"
\n
"
);
printk
(
KERN_DEBUG
"IO APIC #%d......
\n
"
,
mp_ioapics
[
apic
].
mpc_apicid
);
printk
(
KERN_DEBUG
"IO APIC #%d......
\n
"
,
mp_ioapics
[
apic
].
mpc_apicid
);
printk
(
KERN_DEBUG
".... register #00: %08X
\n
"
,
*
(
int
*
)
&
reg_00
);
printk
(
KERN_DEBUG
".... register #00: %08X
\n
"
,
reg_00
.
raw
);
printk
(
KERN_DEBUG
"....... : physical APIC id: %02X
\n
"
,
reg_00
.
ID
);
printk
(
KERN_DEBUG
"....... : physical APIC id: %02X
\n
"
,
reg_00
.
bits
.
ID
);
printk
(
KERN_DEBUG
"....... : Delivery Type: %X
\n
"
,
reg_00
.
delivery_type
);
printk
(
KERN_DEBUG
"....... : Delivery Type: %X
\n
"
,
reg_00
.
bits
.
delivery_type
);
printk
(
KERN_DEBUG
"....... : LTS : %X
\n
"
,
reg_00
.
LTS
);
printk
(
KERN_DEBUG
"....... : LTS : %X
\n
"
,
reg_00
.
bits
.
LTS
);
if
(
reg_00
.
ID
>=
APIC_BROADCAST_ID
)
if
(
reg_00
.
bits
.
ID
>=
APIC_BROADCAST_ID
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
if
(
reg_00
.
__reserved_1
||
reg_00
.
__reserved_2
)
if
(
reg_00
.
bits
.
__reserved_1
||
reg_00
.
bits
.
__reserved_2
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
printk
(
KERN_DEBUG
".... register #01: %08X
\n
"
,
*
(
int
*
)
&
reg_01
);
printk
(
KERN_DEBUG
".... register #01: %08X
\n
"
,
reg_01
.
raw
);
printk
(
KERN_DEBUG
"....... : max redirection entries: %04X
\n
"
,
reg_01
.
entries
);
printk
(
KERN_DEBUG
"....... : max redirection entries: %04X
\n
"
,
reg_01
.
bits
.
entries
);
if
(
(
reg_01
.
entries
!=
0x0f
)
&&
/* older (Neptune) boards */
if
(
(
reg_01
.
bits
.
entries
!=
0x0f
)
&&
/* older (Neptune) boards */
(
reg_01
.
entries
!=
0x17
)
&&
/* typical ISA+PCI boards */
(
reg_01
.
bits
.
entries
!=
0x17
)
&&
/* typical ISA+PCI boards */
(
reg_01
.
entries
!=
0x1b
)
&&
/* Compaq Proliant boards */
(
reg_01
.
bits
.
entries
!=
0x1b
)
&&
/* Compaq Proliant boards */
(
reg_01
.
entries
!=
0x1f
)
&&
/* dual Xeon boards */
(
reg_01
.
bits
.
entries
!=
0x1f
)
&&
/* dual Xeon boards */
(
reg_01
.
entries
!=
0x22
)
&&
/* bigger Xeon boards */
(
reg_01
.
bits
.
entries
!=
0x22
)
&&
/* bigger Xeon boards */
(
reg_01
.
entries
!=
0x2E
)
&&
(
reg_01
.
bits
.
entries
!=
0x2E
)
&&
(
reg_01
.
entries
!=
0x3F
)
(
reg_01
.
bits
.
entries
!=
0x3F
)
)
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
printk
(
KERN_DEBUG
"....... : PRQ implemented: %X
\n
"
,
reg_01
.
PRQ
);
printk
(
KERN_DEBUG
"....... : PRQ implemented: %X
\n
"
,
reg_01
.
bits
.
PRQ
);
printk
(
KERN_DEBUG
"....... : IO APIC version: %04X
\n
"
,
reg_01
.
version
);
printk
(
KERN_DEBUG
"....... : IO APIC version: %04X
\n
"
,
reg_01
.
bits
.
version
);
if
(
(
reg_01
.
version
!=
0x01
)
&&
/* 82489DX IO-APICs */
if
(
(
reg_01
.
bits
.
version
!=
0x01
)
&&
/* 82489DX IO-APICs */
(
reg_01
.
version
!=
0x10
)
&&
/* oldest IO-APICs */
(
reg_01
.
bits
.
version
!=
0x10
)
&&
/* oldest IO-APICs */
(
reg_01
.
version
!=
0x11
)
&&
/* Pentium/Pro IO-APICs */
(
reg_01
.
bits
.
version
!=
0x11
)
&&
/* Pentium/Pro IO-APICs */
(
reg_01
.
version
!=
0x13
)
&&
/* Xeon IO-APICs */
(
reg_01
.
bits
.
version
!=
0x13
)
&&
/* Xeon IO-APICs */
(
reg_01
.
version
!=
0x20
)
/* Intel P64H (82806 AA) */
(
reg_01
.
bits
.
version
!=
0x20
)
/* Intel P64H (82806 AA) */
)
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
if
(
reg_01
.
__reserved_1
||
reg_01
.
__reserved_2
)
if
(
reg_01
.
bits
.
__reserved_1
||
reg_01
.
bits
.
__reserved_2
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
/*
/*
...
@@ -1340,10 +1340,10 @@ void __init print_IO_APIC(void)
...
@@ -1340,10 +1340,10 @@ void __init print_IO_APIC(void)
* but the value of reg_02 is read as the previous read register
* but the value of reg_02 is read as the previous read register
* value, so ignore it if reg_02 == reg_01.
* value, so ignore it if reg_02 == reg_01.
*/
*/
if
(
reg_01
.
version
>=
0x10
&&
*
(
int
*
)
&
reg_02
!=
*
(
int
*
)
&
reg_01
)
{
if
(
reg_01
.
bits
.
version
>=
0x10
&&
reg_02
.
raw
!=
reg_01
.
raw
)
{
printk
(
KERN_DEBUG
".... register #02: %08X
\n
"
,
*
(
int
*
)
&
reg_02
);
printk
(
KERN_DEBUG
".... register #02: %08X
\n
"
,
reg_02
.
raw
);
printk
(
KERN_DEBUG
"....... : arbitration: %02X
\n
"
,
reg_02
.
arbitration
);
printk
(
KERN_DEBUG
"....... : arbitration: %02X
\n
"
,
reg_02
.
bits
.
arbitration
);
if
(
reg_02
.
__reserved_1
||
reg_02
.
__reserved_2
)
if
(
reg_02
.
bits
.
__reserved_1
||
reg_02
.
bits
.
__reserved_2
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
}
}
...
@@ -1352,11 +1352,11 @@ void __init print_IO_APIC(void)
...
@@ -1352,11 +1352,11 @@ void __init print_IO_APIC(void)
* or reg_03, but the value of reg_0[23] is read as the previous read
* or reg_03, but the value of reg_0[23] is read as the previous read
* register value, so ignore it if reg_03 == reg_0[12].
* register value, so ignore it if reg_03 == reg_0[12].
*/
*/
if
(
reg_01
.
version
>=
0x20
&&
*
(
int
*
)
&
reg_03
!=
*
(
int
*
)
&
reg_02
&&
if
(
reg_01
.
bits
.
version
>=
0x20
&&
reg_03
.
raw
!=
reg_02
.
raw
&&
*
(
int
*
)
&
reg_03
!=
*
(
int
*
)
&
reg_01
)
{
reg_03
.
raw
!=
reg_01
.
raw
)
{
printk
(
KERN_DEBUG
".... register #03: %08X
\n
"
,
*
(
int
*
)
&
reg_03
);
printk
(
KERN_DEBUG
".... register #03: %08X
\n
"
,
reg_03
.
raw
);
printk
(
KERN_DEBUG
"....... : Boot DT : %X
\n
"
,
reg_03
.
boot_DT
);
printk
(
KERN_DEBUG
"....... : Boot DT : %X
\n
"
,
reg_03
.
b
its
.
b
oot_DT
);
if
(
reg_03
.
__reserved_1
)
if
(
reg_03
.
bits
.
__reserved_1
)
UNEXPECTED_IO_APIC
();
UNEXPECTED_IO_APIC
();
}
}
...
@@ -1365,7 +1365,7 @@ void __init print_IO_APIC(void)
...
@@ -1365,7 +1365,7 @@ void __init print_IO_APIC(void)
printk
(
KERN_DEBUG
" NR Log Phy Mask Trig IRR Pol"
printk
(
KERN_DEBUG
" NR Log Phy Mask Trig IRR Pol"
" Stat Dest Deli Vect:
\n
"
);
" Stat Dest Deli Vect:
\n
"
);
for
(
i
=
0
;
i
<=
reg_01
.
entries
;
i
++
)
{
for
(
i
=
0
;
i
<=
reg_01
.
bits
.
entries
;
i
++
)
{
struct
IO_APIC_route_entry
entry
;
struct
IO_APIC_route_entry
entry
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
...
@@ -1546,7 +1546,7 @@ void /*__init*/ print_PIC(void)
...
@@ -1546,7 +1546,7 @@ void /*__init*/ print_PIC(void)
static
void
__init
enable_IO_APIC
(
void
)
static
void
__init
enable_IO_APIC
(
void
)
{
{
struct
IO_APIC_reg_01
reg_01
;
union
IO_APIC_reg_01
reg_01
;
int
i
;
int
i
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -1563,9 +1563,9 @@ static void __init enable_IO_APIC(void)
...
@@ -1563,9 +1563,9 @@ static void __init enable_IO_APIC(void)
*/
*/
for
(
i
=
0
;
i
<
nr_ioapics
;
i
++
)
{
for
(
i
=
0
;
i
<
nr_ioapics
;
i
++
)
{
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_01
=
io_apic_read
(
i
,
1
);
reg_01
.
raw
=
io_apic_read
(
i
,
1
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
nr_ioapic_registers
[
i
]
=
reg_01
.
entries
+
1
;
nr_ioapic_registers
[
i
]
=
reg_01
.
bits
.
entries
+
1
;
}
}
/*
/*
...
@@ -1597,7 +1597,7 @@ void disable_IO_APIC(void)
...
@@ -1597,7 +1597,7 @@ void disable_IO_APIC(void)
#ifndef CONFIG_X86_NUMAQ
#ifndef CONFIG_X86_NUMAQ
static
void
__init
setup_ioapic_ids_from_mpc
(
void
)
static
void
__init
setup_ioapic_ids_from_mpc
(
void
)
{
{
struct
IO_APIC_reg_00
reg_00
;
union
IO_APIC_reg_00
reg_00
;
unsigned
long
phys_id_present_map
;
unsigned
long
phys_id_present_map
;
int
apic
;
int
apic
;
int
i
;
int
i
;
...
@@ -1617,7 +1617,7 @@ static void __init setup_ioapic_ids_from_mpc(void)
...
@@ -1617,7 +1617,7 @@ static void __init setup_ioapic_ids_from_mpc(void)
/* Read the register 0 value */
/* Read the register 0 value */
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_00
=
io_apic_read
(
apic
,
0
);
reg_00
.
raw
=
io_apic_read
(
apic
,
0
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
old_id
=
mp_ioapics
[
apic
].
mpc_apicid
;
old_id
=
mp_ioapics
[
apic
].
mpc_apicid
;
...
@@ -1626,8 +1626,8 @@ static void __init setup_ioapic_ids_from_mpc(void)
...
@@ -1626,8 +1626,8 @@ static void __init setup_ioapic_ids_from_mpc(void)
printk
(
KERN_ERR
"BIOS bug, IO-APIC#%d ID is %d in the MPC table!...
\n
"
,
printk
(
KERN_ERR
"BIOS bug, IO-APIC#%d ID is %d in the MPC table!...
\n
"
,
apic
,
mp_ioapics
[
apic
].
mpc_apicid
);
apic
,
mp_ioapics
[
apic
].
mpc_apicid
);
printk
(
KERN_ERR
"... fixing up to %d. (tell your hw vendor)
\n
"
,
printk
(
KERN_ERR
"... fixing up to %d. (tell your hw vendor)
\n
"
,
reg_00
.
ID
);
reg_00
.
bits
.
ID
);
mp_ioapics
[
apic
].
mpc_apicid
=
reg_00
.
ID
;
mp_ioapics
[
apic
].
mpc_apicid
=
reg_00
.
bits
.
ID
;
}
}
/*
/*
...
@@ -1671,18 +1671,18 @@ static void __init setup_ioapic_ids_from_mpc(void)
...
@@ -1671,18 +1671,18 @@ static void __init setup_ioapic_ids_from_mpc(void)
printk
(
KERN_INFO
"...changing IO-APIC physical APIC ID to %d ..."
,
printk
(
KERN_INFO
"...changing IO-APIC physical APIC ID to %d ..."
,
mp_ioapics
[
apic
].
mpc_apicid
);
mp_ioapics
[
apic
].
mpc_apicid
);
reg_00
.
ID
=
mp_ioapics
[
apic
].
mpc_apicid
;
reg_00
.
bits
.
ID
=
mp_ioapics
[
apic
].
mpc_apicid
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
io_apic_write
(
apic
,
0
,
*
(
int
*
)
&
reg_00
);
io_apic_write
(
apic
,
0
,
reg_00
.
raw
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
/*
/*
* Sanity check
* Sanity check
*/
*/
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_00
=
io_apic_read
(
apic
,
0
);
reg_00
.
raw
=
io_apic_read
(
apic
,
0
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
if
(
reg_00
.
ID
!=
mp_ioapics
[
apic
].
mpc_apicid
)
if
(
reg_00
.
bits
.
ID
!=
mp_ioapics
[
apic
].
mpc_apicid
)
panic
(
"could not set ID!
\n
"
);
panic
(
"could not set ID!
\n
"
);
else
else
printk
(
" ok.
\n
"
);
printk
(
" ok.
\n
"
);
...
@@ -2220,7 +2220,7 @@ late_initcall(io_apic_bug_finalize);
...
@@ -2220,7 +2220,7 @@ late_initcall(io_apic_bug_finalize);
int
__init
io_apic_get_unique_id
(
int
ioapic
,
int
apic_id
)
int
__init
io_apic_get_unique_id
(
int
ioapic
,
int
apic_id
)
{
{
struct
IO_APIC_reg_00
reg_00
;
union
IO_APIC_reg_00
reg_00
;
static
unsigned
long
apic_id_map
=
0
;
static
unsigned
long
apic_id_map
=
0
;
unsigned
long
flags
;
unsigned
long
flags
;
int
i
=
0
;
int
i
=
0
;
...
@@ -2238,13 +2238,13 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
...
@@ -2238,13 +2238,13 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
apic_id_map
=
phys_cpu_present_map
;
apic_id_map
=
phys_cpu_present_map
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_00
=
io_apic_read
(
ioapic
,
0
);
reg_00
.
raw
=
io_apic_read
(
ioapic
,
0
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
if
(
apic_id
>=
IO_APIC_MAX_ID
)
{
if
(
apic_id
>=
IO_APIC_MAX_ID
)
{
printk
(
KERN_WARNING
"IOAPIC[%d]: Invalid apic_id %d, trying "
printk
(
KERN_WARNING
"IOAPIC[%d]: Invalid apic_id %d, trying "
"%d
\n
"
,
ioapic
,
apic_id
,
reg_00
.
ID
);
"%d
\n
"
,
ioapic
,
apic_id
,
reg_00
.
bits
.
ID
);
apic_id
=
reg_00
.
ID
;
apic_id
=
reg_00
.
bits
.
ID
;
}
}
/*
/*
...
@@ -2269,16 +2269,16 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
...
@@ -2269,16 +2269,16 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
apic_id_map
|=
apicid_to_cpu_present
(
apic_id
);
apic_id_map
|=
apicid_to_cpu_present
(
apic_id
);
if
(
reg_00
.
ID
!=
apic_id
)
{
if
(
reg_00
.
bits
.
ID
!=
apic_id
)
{
reg_00
.
ID
=
apic_id
;
reg_00
.
bits
.
ID
=
apic_id
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
io_apic_write
(
ioapic
,
0
,
*
(
int
*
)
&
reg_00
);
io_apic_write
(
ioapic
,
0
,
reg_00
.
raw
);
*
(
int
*
)
&
reg_00
=
io_apic_read
(
ioapic
,
0
);
reg_00
.
raw
=
io_apic_read
(
ioapic
,
0
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
/* Sanity check */
/* Sanity check */
if
(
reg_00
.
ID
!=
apic_id
)
if
(
reg_00
.
bits
.
ID
!=
apic_id
)
panic
(
"IOAPIC[%d]: Unable change apic_id!
\n
"
,
ioapic
);
panic
(
"IOAPIC[%d]: Unable change apic_id!
\n
"
,
ioapic
);
}
}
...
@@ -2290,27 +2290,27 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
...
@@ -2290,27 +2290,27 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
int
__init
io_apic_get_version
(
int
ioapic
)
int
__init
io_apic_get_version
(
int
ioapic
)
{
{
struct
IO_APIC_reg_01
reg_01
;
union
IO_APIC_reg_01
reg_01
;
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_01
=
io_apic_read
(
ioapic
,
1
);
reg_01
.
raw
=
io_apic_read
(
ioapic
,
1
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
return
reg_01
.
version
;
return
reg_01
.
bits
.
version
;
}
}
int
__init
io_apic_get_redir_entries
(
int
ioapic
)
int
__init
io_apic_get_redir_entries
(
int
ioapic
)
{
{
struct
IO_APIC_reg_01
reg_01
;
union
IO_APIC_reg_01
reg_01
;
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
spin_lock_irqsave
(
&
ioapic_lock
,
flags
);
*
(
int
*
)
&
reg_01
=
io_apic_read
(
ioapic
,
1
);
reg_01
.
raw
=
io_apic_read
(
ioapic
,
1
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
spin_unlock_irqrestore
(
&
ioapic_lock
,
flags
);
return
reg_01
.
entries
;
return
reg_01
.
bits
.
entries
;
}
}
...
...
arch/ppc/kernel/entry.S
View file @
23dabca3
...
@@ -200,9 +200,6 @@ ret_from_syscall:
...
@@ -200,9 +200,6 @@ ret_from_syscall:
andi
.
r11
,
r11
,
_TIF_FORCE_NOERROR
andi
.
r11
,
r11
,
_TIF_FORCE_NOERROR
bne
30
f
bne
30
f
neg
r3
,
r3
neg
r3
,
r3
cmpi
0
,
r3
,
ERESTARTNOHAND
bne
22
f
li
r3
,
EINTR
22
:
lwz
r10
,
_CCR
(
r1
)
/*
Set
SO
bit
in
CR
*/
22
:
lwz
r10
,
_CCR
(
r1
)
/*
Set
SO
bit
in
CR
*/
oris
r10
,
r10
,
0x1000
oris
r10
,
r10
,
0x1000
stw
r10
,
_CCR
(
r1
)
stw
r10
,
_CCR
(
r1
)
...
...
arch/sparc64/defconfig
View file @
23dabca3
...
@@ -27,7 +27,7 @@ CONFIG_MODULES=y
...
@@ -27,7 +27,7 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_KMOD=y
#
#
...
@@ -162,7 +162,9 @@ CONFIG_LOGO_SUN_CLUT224=y
...
@@ -162,7 +162,9 @@ CONFIG_LOGO_SUN_CLUT224=y
#
#
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU_CONSOLE=y
CONFIG_SERIAL_SUNSAB=m
CONFIG_SERIAL_SUNSAB=m
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_CORE_CONSOLE=y
...
@@ -197,8 +199,8 @@ CONFIG_BLK_DEV_MD=m
...
@@ -197,8 +199,8 @@ CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID1=m
# CONFIG_MD_RAID5 is not set
CONFIG_MD_RAID5=m
# CONFIG_MD_MULTIPATH is not set
CONFIG_MD_MULTIPATH=m
CONFIG_BLK_DEV_DM=m
CONFIG_BLK_DEV_DM=m
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_RAM is not set
...
@@ -243,26 +245,27 @@ CONFIG_BLK_DEV_ADMA=y
...
@@ -243,26 +245,27 @@ CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=y
CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
CONFIG_BLK_DEV_AMD74XX=m
# CONFIG_BLK_DEV_CMD64X is not set
CONFIG_BLK_DEV_CMD64X=m
# CONFIG_BLK_DEV_TRIFLEX is not set
CONFIG_BLK_DEV_TRIFLEX=m
# CONFIG_BLK_DEV_CY82C693 is not set
CONFIG_BLK_DEV_CY82C693=m
# CONFIG_BLK_DEV_CS5520 is not set
CONFIG_BLK_DEV_CS5520=m
# CONFIG_BLK_DEV_HPT34X is not set
CONFIG_BLK_DEV_HPT34X=m
# CONFIG_BLK_DEV_HPT366 is not set
CONFIG_BLK_DEV_HPT366=m
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_SC1200=m
# CONFIG_BLK_DEV_PIIX is not set
CONFIG_BLK_DEV_PIIX=m
# CONFIG_BLK_DEV_NS87415 is not set
CONFIG_BLK_DEV_NS87415=m
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_OPTI621=m
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
CONFIG_BLK_DEV_PDC202XX_OLD=m
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
CONFIG_BLK_DEV_PDC202XX_NEW=m
# CONFIG_BLK_DEV_SVWKS is not set
CONFIG_BLK_DEV_SVWKS=m
# CONFIG_BLK_DEV_SIIMAGE is not set
CONFIG_BLK_DEV_SIIMAGE=m
# CONFIG_BLK_DEV_SLC90E66 is not set
CONFIG_BLK_DEV_SLC90E66=m
# CONFIG_BLK_DEV_TRM290 is not set
CONFIG_BLK_DEV_TRM290=m
# CONFIG_BLK_DEV_VIA82CXXX is not set
CONFIG_BLK_DEV_VIA82CXXX=m
CONFIG_IDEDMA_AUTO=y
CONFIG_IDEDMA_AUTO=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_IDEDMA_IVB is not set
CONFIG_BLK_DEV_PDC202XX=y
CONFIG_BLK_DEV_IDE_MODES=y
CONFIG_BLK_DEV_IDE_MODES=y
#
#
...
@@ -408,14 +411,18 @@ CONFIG_NETFILTER=y
...
@@ -408,14 +411,18 @@ CONFIG_NETFILTER=y
CONFIG_UNIX=y
CONFIG_UNIX=y
CONFIG_NET_KEY=m
CONFIG_NET_KEY=m
CONFIG_INET=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_ARPD=y
CONFIG_ARPD=y
CONFIG_INET_ECN=y
CONFIG_INET_ECN=y
# CONFIG_SYN_COOKIES is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_IPCOMP=y
...
@@ -436,6 +443,7 @@ CONFIG_IP_NF_MATCH_PKTTYPE=m
...
@@ -436,6 +443,7 @@ CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
...
@@ -553,9 +561,9 @@ CONFIG_BRIDGE_EBT_SNAT=m
...
@@ -553,9 +561,9 @@ CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_MARK_T=m
# CONFIG_X25 is not set
CONFIG_X25=m
# CONFIG_LAPB is not set
CONFIG_LAPB=m
# CONFIG_NET_DIVERT is not set
CONFIG_NET_DIVERT=y
# CONFIG_ECONET is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_FASTROUTE is not set
...
@@ -661,11 +669,13 @@ CONFIG_VIA_RHINE=m
...
@@ -661,11 +669,13 @@ CONFIG_VIA_RHINE=m
#
#
# Ethernet (1000 Mbit)
# Ethernet (1000 Mbit)
#
#
# CONFIG_ACENIC is not set
CONFIG_ACENIC=m
# CONFIG_DL2K is not set
# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_E1000 is not set
CONFIG_DL2K=m
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
CONFIG_MYRI_SBUS=m
CONFIG_MYRI_SBUS=m
# CONFIG_NS83820 is not set
CONFIG_NS83820=m
CONFIG_HAMACHI=m
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_YELLOWFIN=m
CONFIG_R8169=m
CONFIG_R8169=m
...
@@ -710,8 +720,11 @@ CONFIG_NET_RADIO=y
...
@@ -710,8 +720,11 @@ CONFIG_NET_RADIO=y
#
#
# Wireless 802.11b ISA/PCI cards support
# Wireless 802.11b ISA/PCI cards support
#
#
# CONFIG_AIRO is not set
CONFIG_AIRO=m
# CONFIG_HERMES is not set
CONFIG_HERMES=m
CONFIG_PLX_HERMES=m
CONFIG_TMD_HERMES=m
CONFIG_PCI_HERMES=m
CONFIG_NET_WIRELESS=y
CONFIG_NET_WIRELESS=y
#
#
...
@@ -934,7 +947,6 @@ CONFIG_KEYBOARD_SUNKBD=y
...
@@ -934,7 +947,6 @@ CONFIG_KEYBOARD_SUNKBD=y
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_SERIAL=y
CONFIG_MOUSE_SERIAL=y
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
...
...
drivers/pci/pci.c
View file @
23dabca3
...
@@ -747,6 +747,7 @@ struct pci_dev *isa_bridge;
...
@@ -747,6 +747,7 @@ struct pci_dev *isa_bridge;
EXPORT_SYMBOL
(
isa_bridge
);
EXPORT_SYMBOL
(
isa_bridge
);
#endif
#endif
EXPORT_SYMBOL
(
pci_enable_device_bars
);
EXPORT_SYMBOL
(
pci_enable_device
);
EXPORT_SYMBOL
(
pci_enable_device
);
EXPORT_SYMBOL
(
pci_disable_device
);
EXPORT_SYMBOL
(
pci_disable_device
);
EXPORT_SYMBOL
(
pci_max_busnr
);
EXPORT_SYMBOL
(
pci_max_busnr
);
...
...
drivers/serial/Kconfig
View file @
23dabca3
...
@@ -326,6 +326,14 @@ config SERIAL_SUNZILOG
...
@@ -326,6 +326,14 @@ config SERIAL_SUNZILOG
This driver supports the Zilog8530 serial ports found on many Sparc
This driver supports the Zilog8530 serial ports found on many Sparc
systems. Say Y or M if you want to be able to these serial ports.
systems. Say Y or M if you want to be able to these serial ports.
config SERIAL_SUNZILOG_CONSOLE
bool "Console on Sun Zilog8530 serial port"
depends on SERIAL_SUNZILOG=y
help
If you would like to be able to use the Zilog8530 serial port
on your Sparc system as the console, you can do so by answering
Y to this option.
config SERIAL_SUNSU
config SERIAL_SUNSU
tristate "Sun SU serial support"
tristate "Sun SU serial support"
depends on (SPARC32 || SPARC64) && PCI
depends on (SPARC32 || SPARC64) && PCI
...
@@ -334,6 +342,14 @@ config SERIAL_SUNSU
...
@@ -334,6 +342,14 @@ config SERIAL_SUNSU
mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able
mouse on (PCI) UltraSPARC systems. Say Y or M if you want to be able
to these serial ports.
to these serial ports.
config SERIAL_SUNSU_CONSOLE
bool "Console on Sun SU serial port"
depends on SERIAL_SUNSU=y
help
If you would like to be able to use the SU serial port
on your Sparc system as the console, you can do so by answering
Y to this option.
config SERIAL_MUX
config SERIAL_MUX
tristate "Serial MUX support"
tristate "Serial MUX support"
depends on PARISC
depends on PARISC
...
@@ -380,6 +396,14 @@ config SERIAL_SUNSAB
...
@@ -380,6 +396,14 @@ config SERIAL_SUNSAB
(PCI) UltraSPARC systems. Say Y or M if you want to be able to these
(PCI) UltraSPARC systems. Say Y or M if you want to be able to these
serial ports.
serial ports.
config SERIAL_SUNSAB_CONSOLE
bool "Console on Sun Siemens SAB82532 serial port"
depends on SERIAL_SUNSAB=y
help
If you would like to be able to use the SAB82532 serial port
on your Sparc system as the console, you can do so by answering
Y to this option.
config V850E_NB85E_UART
config V850E_NB85E_UART
bool "NEC V850E on-chip UART support"
bool "NEC V850E on-chip UART support"
depends on V850E_NB85E || V850E2_ANNA || V850E_AS85EP1
depends on V850E_NB85E || V850E2_ANNA || V850E_AS85EP1
...
@@ -407,7 +431,7 @@ config SERIAL_CORE
...
@@ -407,7 +431,7 @@ config SERIAL_CORE
config SERIAL_CORE_CONSOLE
config SERIAL_CORE_CONSOLE
bool
bool
depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUN
COR
E || V850E_NB85E_UART_CONSOLE || SERIAL98_CONSOLE
depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUN
ZILOG_CONSOLE || SERIAL_SUNSU_CONSOLE || SERIAL_SUNSAB_CONSOL
E || V850E_NB85E_UART_CONSOLE || SERIAL98_CONSOLE
default y
default y
config SERIAL_68328
config SERIAL_68328
...
...
drivers/serial/sunsab.c
View file @
23dabca3
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/circ_buf.h>
#include <linux/circ_buf.h>
#include <linux/serial.h>
#include <linux/serial.h>
#include <linux/sysrq.h>
#include <linux/console.h>
#include <linux/console.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/slab.h>
...
@@ -38,6 +39,10 @@
...
@@ -38,6 +39,10 @@
#include <asm/oplib.h>
#include <asm/oplib.h>
#include <asm/ebus.h>
#include <asm/ebus.h>
#if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#endif
#include <linux/serial_core.h>
#include <linux/serial_core.h>
#include "suncore.h"
#include "suncore.h"
...
@@ -838,6 +843,8 @@ static struct uart_driver sunsab_reg = {
...
@@ -838,6 +843,8 @@ static struct uart_driver sunsab_reg = {
static
struct
uart_sunsab_port
*
sunsab_ports
;
static
struct
uart_sunsab_port
*
sunsab_ports
;
static
int
num_channels
;
static
int
num_channels
;
#ifdef CONFIG_SERIAL_SUNSAB_CONSOLE
static
__inline__
void
sunsab_console_putchar
(
struct
uart_sunsab_port
*
up
,
char
c
)
static
__inline__
void
sunsab_console_putchar
(
struct
uart_sunsab_port
*
up
,
char
c
)
{
{
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -929,6 +936,7 @@ static struct console sunsab_console = {
...
@@ -929,6 +936,7 @@ static struct console sunsab_console = {
.
index
=
-
1
,
.
index
=
-
1
,
.
data
=
&
sunsab_reg
,
.
data
=
&
sunsab_reg
,
};
};
#define SUNSAB_CONSOLE (&sunsab_console)
static
void
__init
sunsab_console_init
(
void
)
static
void
__init
sunsab_console_init
(
void
)
{
{
...
@@ -949,6 +957,10 @@ static void __init sunsab_console_init(void)
...
@@ -949,6 +957,10 @@ static void __init sunsab_console_init(void)
sunsab_console
.
index
=
i
;
sunsab_console
.
index
=
i
;
register_console
(
&
sunsab_console
);
register_console
(
&
sunsab_console
);
}
}
#else
#define SUNSAB_CONSOLE (NULL)
#define sunsab_console_init() do { } while (0)
#endif
static
void
__init
for_each_sab_edev
(
void
(
*
callback
)(
struct
linux_ebus_device
*
,
void
*
),
void
*
arg
)
static
void
__init
for_each_sab_edev
(
void
(
*
callback
)(
struct
linux_ebus_device
*
,
void
*
),
void
*
arg
)
{
{
...
@@ -1091,7 +1103,7 @@ static int __init sunsab_init(void)
...
@@ -1091,7 +1103,7 @@ static int __init sunsab_init(void)
sunsab_reg
.
minor
=
sunserial_current_minor
;
sunsab_reg
.
minor
=
sunserial_current_minor
;
sunsab_reg
.
nr
=
num_channels
;
sunsab_reg
.
nr
=
num_channels
;
sunsab_reg
.
cons
=
&
sunsab_console
;
sunsab_reg
.
cons
=
SUNSAB_CONSOLE
;
ret
=
uart_register_driver
(
&
sunsab_reg
);
ret
=
uart_register_driver
(
&
sunsab_reg
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
...
...
drivers/serial/sunsu.c
View file @
23dabca3
...
@@ -46,8 +46,7 @@
...
@@ -46,8 +46,7 @@
#include <asm/isa.h>
#include <asm/isa.h>
#endif
#endif
/* #if defined(CONFIG_SERIAL_8250_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) */
#if defined(CONFIG_SERIAL_SUNSU_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#if defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#define SUPPORT_SYSRQ
#endif
#endif
...
@@ -1347,6 +1346,8 @@ static int __init sunsu_kbd_ms_init(void)
...
@@ -1347,6 +1346,8 @@ static int __init sunsu_kbd_ms_init(void)
* ------------------------------------------------------------
* ------------------------------------------------------------
*/
*/
#ifdef CONFIG_SERIAL_SUNSU_CONSOLE
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
/*
/*
...
@@ -1465,6 +1466,7 @@ static struct console sunsu_cons = {
...
@@ -1465,6 +1466,7 @@ static struct console sunsu_cons = {
.
index
=
-
1
,
.
index
=
-
1
,
.
data
=
&
sunsu_reg
,
.
data
=
&
sunsu_reg
,
};
};
#define SUNSU_CONSOLE (&sunsu_cons)
/*
/*
* Register console.
* Register console.
...
@@ -1492,6 +1494,10 @@ static int __init sunsu_serial_console_init(void)
...
@@ -1492,6 +1494,10 @@ static int __init sunsu_serial_console_init(void)
register_console
(
&
sunsu_cons
);
register_console
(
&
sunsu_cons
);
return
0
;
return
0
;
}
}
#else
#define SUNSU_CONSOLE (NULL)
#define sunsu_serial_console_init() do { } while (0)
#endif
static
int
__init
sunsu_serial_init
(
void
)
static
int
__init
sunsu_serial_init
(
void
)
{
{
...
@@ -1522,7 +1528,7 @@ static int __init sunsu_serial_init(void)
...
@@ -1522,7 +1528,7 @@ static int __init sunsu_serial_init(void)
sunserial_current_minor
+=
instance
;
sunserial_current_minor
+=
instance
;
sunsu_reg
.
nr
=
instance
;
sunsu_reg
.
nr
=
instance
;
sunsu_reg
.
cons
=
&
sunsu_cons
;
sunsu_reg
.
cons
=
SUNSU_CONSOLE
;
ret
=
uart_register_driver
(
&
sunsu_reg
);
ret
=
uart_register_driver
(
&
sunsu_reg
);
if
(
ret
<
0
)
if
(
ret
<
0
)
...
...
drivers/serial/sunzilog.c
View file @
23dabca3
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/circ_buf.h>
#include <linux/circ_buf.h>
#include <linux/serial.h>
#include <linux/serial.h>
#include <linux/sysrq.h>
#include <linux/console.h>
#include <linux/console.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#ifdef CONFIG_SERIO
#ifdef CONFIG_SERIO
...
@@ -42,6 +43,10 @@
...
@@ -42,6 +43,10 @@
#endif
#endif
#include <asm/sbus.h>
#include <asm/sbus.h>
#if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#endif
#include <linux/serial_core.h>
#include <linux/serial_core.h>
#include "suncore.h"
#include "suncore.h"
...
@@ -1331,6 +1336,7 @@ static void sunzilog_serio_close(struct serio *serio)
...
@@ -1331,6 +1336,7 @@ static void sunzilog_serio_close(struct serio *serio)
#endif
/* CONFIG_SERIO */
#endif
/* CONFIG_SERIO */
#ifdef CONFIG_SERIAL_SUNZILOG_CONSOLE
static
void
static
void
sunzilog_console_write
(
struct
console
*
con
,
const
char
*
s
,
unsigned
int
count
)
sunzilog_console_write
(
struct
console
*
con
,
const
char
*
s
,
unsigned
int
count
)
{
{
...
@@ -1400,6 +1406,7 @@ static struct console sunzilog_console = {
...
@@ -1400,6 +1406,7 @@ static struct console sunzilog_console = {
.
index
=
-
1
,
.
index
=
-
1
,
.
data
=
&
sunzilog_reg
,
.
data
=
&
sunzilog_reg
,
};
};
#define SUNZILOG_CONSOLE (&sunzilog_console)
static
int
__init
sunzilog_console_init
(
void
)
static
int
__init
sunzilog_console_init
(
void
)
{
{
...
@@ -1422,6 +1429,10 @@ static int __init sunzilog_console_init(void)
...
@@ -1422,6 +1429,10 @@ static int __init sunzilog_console_init(void)
register_console
(
&
sunzilog_console
);
register_console
(
&
sunzilog_console
);
return
0
;
return
0
;
}
}
#else
#define SUNZILOG_CONSOLE (NULL)
#define sunzilog_console_init() do { } while (0)
#endif
/*
/*
* We scan the PROM tree recursively. This is the most reliable way
* We scan the PROM tree recursively. This is the most reliable way
...
@@ -1639,7 +1650,7 @@ static int __init sunzilog_ports_init(void)
...
@@ -1639,7 +1650,7 @@ static int __init sunzilog_ports_init(void)
* in the system.
* in the system.
*/
*/
sunzilog_reg
.
nr
=
NUM_CHANNELS
;
sunzilog_reg
.
nr
=
NUM_CHANNELS
;
sunzilog_reg
.
cons
=
&
sunzilog_console
;
sunzilog_reg
.
cons
=
SUNZILOG_CONSOLE
;
sunzilog_reg
.
minor
=
sunserial_current_minor
;
sunzilog_reg
.
minor
=
sunserial_current_minor
;
sunserial_current_minor
+=
NUM_CHANNELS
;
sunserial_current_minor
+=
NUM_CHANNELS
;
...
...
drivers/usb/net/kaweth.c
View file @
23dabca3
...
@@ -57,10 +57,10 @@
...
@@ -57,10 +57,10 @@
#include <linux/types.h>
#include <linux/types.h>
#include <linux/ethtool.h>
#include <linux/ethtool.h>
#include <linux/pci.h>
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#include <asm/semaphore.h>
#include <asm/byteorder.h>
#include <asm/byteorder.h>
#include <asm/dma-mapping.h>
#define DEBUG
#define DEBUG
...
...
include/asm-i386/io_apic.h
View file @
23dabca3
...
@@ -22,32 +22,44 @@
...
@@ -22,32 +22,44 @@
/*
/*
* The structure of the IO-APIC:
* The structure of the IO-APIC:
*/
*/
struct
IO_APIC_reg_00
{
union
IO_APIC_reg_00
{
__u32
__reserved_2
:
14
,
u32
raw
;
LTS
:
1
,
struct
{
delivery_type
:
1
,
u32
__reserved_2
:
14
,
__reserved_1
:
8
,
LTS
:
1
,
ID
:
8
;
delivery_type
:
1
,
}
__attribute__
((
packed
));
__reserved_1
:
8
,
ID
:
8
;
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_01
{
union
IO_APIC_reg_01
{
__u32
version
:
8
,
u32
raw
;
__reserved_2
:
7
,
struct
{
PRQ
:
1
,
u32
version
:
8
,
entries
:
8
,
__reserved_2
:
7
,
__reserved_1
:
8
;
PRQ
:
1
,
}
__attribute__
((
packed
));
entries
:
8
,
__reserved_1
:
8
;
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_02
{
union
IO_APIC_reg_02
{
__u32
__reserved_2
:
24
,
u32
raw
;
arbitration
:
4
,
struct
{
__reserved_1
:
4
;
u32
__reserved_2
:
24
,
}
__attribute__
((
packed
));
arbitration
:
4
,
__reserved_1
:
4
;
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_03
{
union
IO_APIC_reg_03
{
__u32
boot_DT
:
1
,
u32
raw
;
__reserved_1
:
31
;
struct
{
}
__attribute__
((
packed
));
u32
boot_DT
:
1
,
__reserved_1
:
31
;
}
__attribute__
((
packed
))
bits
;
};
/*
/*
* # of IO-APICs and # of IRQ routing registers
* # of IO-APICs and # of IRQ routing registers
...
...
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