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
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
Show 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
;
struct
{
u32
__reserved_2
:
14
,
LTS
:
1
,
LTS
:
1
,
delivery_type
:
1
,
delivery_type
:
1
,
__reserved_1
:
8
,
__reserved_1
:
8
,
ID
:
8
;
ID
:
8
;
}
__attribute__
((
packed
));
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_01
{
union
IO_APIC_reg_01
{
__u32
version
:
8
,
u32
raw
;
struct
{
u32
version
:
8
,
__reserved_2
:
7
,
__reserved_2
:
7
,
PRQ
:
1
,
PRQ
:
1
,
entries
:
8
,
entries
:
8
,
__reserved_1
:
8
;
__reserved_1
:
8
;
}
__attribute__
((
packed
));
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_02
{
union
IO_APIC_reg_02
{
__u32
__reserved_2
:
24
,
u32
raw
;
struct
{
u32
__reserved_2
:
24
,
arbitration
:
4
,
arbitration
:
4
,
__reserved_1
:
4
;
__reserved_1
:
4
;
}
__attribute__
((
packed
));
}
__attribute__
((
packed
))
bits
;
};
struct
IO_APIC_reg_03
{
union
IO_APIC_reg_03
{
__u32
boot_DT
:
1
,
u32
raw
;
struct
{
u32
boot_DT
:
1
,
__reserved_1
:
31
;
__reserved_1
:
31
;
}
__attribute__
((
packed
));
}
__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