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
4774cf7a
Commit
4774cf7a
authored
May 02, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/bk/linux-2.6.6
into intel.com:/home/lenb/src/linux-acpi-test-2.6.6
parents
9f7a3b76
357f6536
Changes
34
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
490 additions
and
343 deletions
+490
-343
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+10
-4
arch/i386/kernel/acpi/boot.c
arch/i386/kernel/acpi/boot.c
+16
-3
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/dmi_scan.c
+74
-73
arch/i386/kernel/io_apic.c
arch/i386/kernel/io_apic.c
+7
-11
arch/i386/kernel/mpparse.c
arch/i386/kernel/mpparse.c
+16
-24
arch/i386/kernel/setup.c
arch/i386/kernel/setup.c
+11
-2
arch/i386/mach-default/setup.c
arch/i386/mach-default/setup.c
+3
-1
arch/i386/mach-es7000/setup.c
arch/i386/mach-es7000/setup.c
+4
-3
arch/i386/mach-voyager/setup.c
arch/i386/mach-voyager/setup.c
+3
-1
arch/i386/pci/acpi.c
arch/i386/pci/acpi.c
+0
-1
arch/i386/pci/irq.c
arch/i386/pci/irq.c
+1
-4
arch/x86_64/kernel/Makefile
arch/x86_64/kernel/Makefile
+1
-1
arch/x86_64/kernel/i8259.c
arch/x86_64/kernel/i8259.c
+3
-1
arch/x86_64/kernel/io_apic.c
arch/x86_64/kernel/io_apic.c
+6
-10
arch/x86_64/kernel/mpparse.c
arch/x86_64/kernel/mpparse.c
+15
-22
arch/x86_64/kernel/setup.c
arch/x86_64/kernel/setup.c
+6
-4
drivers/acpi/ac.c
drivers/acpi/ac.c
+3
-0
drivers/acpi/asus_acpi.c
drivers/acpi/asus_acpi.c
+68
-53
drivers/acpi/battery.c
drivers/acpi/battery.c
+12
-3
drivers/acpi/button.c
drivers/acpi/button.c
+36
-1
drivers/acpi/fan.c
drivers/acpi/fan.c
+3
-0
drivers/acpi/osl.c
drivers/acpi/osl.c
+12
-15
drivers/acpi/pci_irq.c
drivers/acpi/pci_irq.c
+1
-1
drivers/acpi/pci_link.c
drivers/acpi/pci_link.c
+103
-96
drivers/acpi/pci_root.c
drivers/acpi/pci_root.c
+9
-1
drivers/acpi/processor.c
drivers/acpi/processor.c
+12
-0
drivers/acpi/scan.c
drivers/acpi/scan.c
+8
-3
drivers/acpi/thermal.c
drivers/acpi/thermal.c
+7
-0
drivers/acpi/toshiba_acpi.c
drivers/acpi/toshiba_acpi.c
+5
-0
include/acpi/acpiosxf.h
include/acpi/acpiosxf.h
+3
-3
include/asm-i386/acpi.h
include/asm-i386/acpi.h
+15
-1
include/asm-ia64/acpi.h
include/asm-ia64/acpi.h
+1
-0
include/asm-x86_64/acpi.h
include/asm-x86_64/acpi.h
+15
-1
include/linux/acpi.h
include/linux/acpi.h
+1
-0
No files found.
Documentation/kernel-parameters.txt
View file @
4774cf7a
...
...
@@ -102,13 +102,14 @@ running once the system is up.
acpi= [HW,ACPI] Advanced Configuration and Power Interface
Format: { force | off | ht | strict }
force -- enables ACPI for systems with default off
off -- disabled ACPI for systems with default on
force -- enable ACPI if default was off
off -- disable ACPI if default was on
noirq -- do not use ACPI for IRQ routing
ht -- run only enough ACPI to enable Hyper Threading
strict -- Be less tolerant of platforms that are not
strictly ACPI specification compliant.
See also Documentation/pm.txt
.
See also Documentation/pm.txt
, pci=noacpi
acpi_sleep= [HW,ACPI] Sleep options
Format: { s3_bios, s3_mode }
...
...
@@ -133,6 +134,10 @@ running once the system is up.
acpi_serialize [HW,ACPI] force serialization of AML methods
acpi_skip_timer_override [HW,ACPI]
Recognize and ignore IRQ0/pin2 Interrupt Override.
For broken nForce2 BIOS resulting in XT-PIC timer.
ad1816= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma2>
See also Documentation/sound/oss/AD1816.
...
...
@@ -842,7 +847,8 @@ running once the system is up.
and Omnibook XE3 notebooks. This will
have no effect if ACPI IRQ routing is
enabled.
noacpi [IA-32] Do not use ACPI for IRQ routing.
noacpi [IA-32] Do not use ACPI for IRQ routing
or for PCI scanning.
pcmv= [HW,PCMCIA] BadgePAD 4
...
...
arch/i386/kernel/acpi/boot.c
View file @
4774cf7a
...
...
@@ -53,7 +53,13 @@ static inline int ioapic_setup_disabled(void) { return 0; }
#define PREFIX "ACPI: "
#ifdef CONFIG_ACPI_PCI
int
acpi_noirq
__initdata
;
/* skip ACPI IRQ initialization */
int
acpi_pci_disabled
__initdata
;
/* skip ACPI PCI scan and IRQ initialization */
#else
int
acpi_noirq
__initdata
=
1
;
int
acpi_pci_disabled
__initdata
=
1
;
#endif
int
acpi_ht
__initdata
=
1
;
/* enable HT */
int
acpi_lapic
;
...
...
@@ -62,6 +68,7 @@ int acpi_strict;
acpi_interrupt_flags
acpi_sci_flags
__initdata
;
int
acpi_sci_override_gsi
__initdata
;
int
acpi_skip_timer_override
__initdata
;
#ifdef CONFIG_X86_LOCAL_APIC
static
u64
acpi_lapic_addr
__initdata
=
APIC_DEFAULT_PHYS_BASE
;
...
...
@@ -329,6 +336,12 @@ acpi_parse_int_src_ovr (
return
0
;
}
if
(
acpi_skip_timer_override
&&
intsrc
->
bus_irq
==
0
&&
intsrc
->
global_irq
==
2
)
{
printk
(
PREFIX
"BIOS IRQ0 pin2 override ignored.
\n
"
);
return
0
;
}
mp_override_legacy_irq
(
intsrc
->
bus_irq
,
intsrc
->
flags
.
polarity
,
...
...
@@ -653,9 +666,6 @@ acpi_parse_madt_ioapic_entries(void)
return
count
;
}
/* Build a default routing table for legacy (ISA) interrupts. */
mp_config_acpi_legacy_irqs
();
count
=
acpi_table_parse_madt
(
ACPI_MADT_INT_SRC_OVR
,
acpi_parse_int_src_ovr
,
NR_IRQ_VECTORS
);
if
(
count
<
0
)
{
printk
(
KERN_ERR
PREFIX
"Error parsing interrupt source overrides entry
\n
"
);
...
...
@@ -670,6 +680,9 @@ acpi_parse_madt_ioapic_entries(void)
if
(
!
acpi_sci_override_gsi
)
acpi_sci_ioapic_setup
(
acpi_fadt
.
sci_int
,
0
,
0
);
/* Fill in identity legacy mapings where no override */
mp_config_acpi_legacy_irqs
();
count
=
acpi_table_parse_madt
(
ACPI_MADT_NMI_SRC
,
acpi_parse_nmi_src
,
NR_IRQ_VECTORS
);
if
(
count
<
0
)
{
printk
(
KERN_ERR
PREFIX
"Error parsing NMI SRC entry
\n
"
);
...
...
arch/i386/kernel/dmi_scan.c
View file @
4774cf7a
...
...
@@ -412,30 +412,6 @@ static __init int swab_apm_power_in_minutes(struct dmi_blacklist *d)
return
0
;
}
/*
* The Intel 440GX hall of shame.
*
* On many (all we have checked) of these boxes the $PIRQ table is wrong.
* The MP1.4 table is right however and so SMP kernels tend to work.
*/
static
__init
int
broken_pirq
(
struct
dmi_blacklist
*
d
)
{
printk
(
KERN_INFO
" *** Possibly defective BIOS detected (irqtable)
\n
"
);
printk
(
KERN_INFO
" *** Many BIOSes matching this signature have incorrect IRQ routing tables.
\n
"
);
printk
(
KERN_INFO
" *** If you see IRQ problems, in particular SCSI resets and hangs at boot
\n
"
);
printk
(
KERN_INFO
" *** contact your hardware vendor and ask about updates.
\n
"
);
printk
(
KERN_INFO
" *** Building an SMP kernel may evade the bug some of the time.
\n
"
);
#ifdef CONFIG_X86_IO_APIC
{
extern
int
skip_ioapic_setup
;
skip_ioapic_setup
=
0
;
}
#endif
return
0
;
}
/*
* ASUS K7V-RM has broken ACPI table defining sleep modes
*/
...
...
@@ -552,15 +528,35 @@ static __init __attribute__((unused)) int force_acpi_ht(struct dmi_blacklist *d)
}
return
0
;
}
/*
* early nForce2 reference BIOS shipped with a
* bogus ACPI IRQ0 -> pin2 interrupt override -- ignore it
*/
static
__init
int
ignore_timer_override
(
struct
dmi_blacklist
*
d
)
{
extern
int
acpi_skip_timer_override
;
printk
(
KERN_NOTICE
"%s detected: BIOS IRQ0 pin2 override"
" will be ignored
\n
"
,
d
->
ident
);
acpi_skip_timer_override
=
1
;
return
0
;
}
#endif
#ifdef CONFIG_ACPI_PCI
static
__init
int
disable_acpi_irq
(
struct
dmi_blacklist
*
d
)
{
printk
(
KERN_NOTICE
"%s detected: force use of acpi=noirq
\n
"
,
d
->
ident
);
acpi_noirq_set
();
return
0
;
}
static
__init
int
disable_acpi_pci
(
struct
dmi_blacklist
*
d
)
{
printk
(
KERN_NOTICE
"%s detected: force use of pci=noacpi
\n
"
,
d
->
ident
);
acpi_
noirq_set
();
acpi_
disable_pci
();
return
0
;
}
}
#endif
/*
...
...
@@ -815,52 +811,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
NO_MATCH
,
NO_MATCH
}
},
/* Problem Intel 440GX bioses */
{
broken_pirq
,
"SABR1 Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"SABR1"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"l44GX Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"L440GX0.86B.0094.P10"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"l44GX Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"L440GX0.86B.0115.P12"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"l44GX Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"L440GX0.86B.0120.P12"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"l44GX Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"L440GX0.86B.0125.P13"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"l44GX Bios"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"Intel Corporation"
),
MATCH
(
DMI_BIOS_VERSION
,
"L440GX0.86B.0066.P07.9906041405"
),
NO_MATCH
,
NO_MATCH
}
},
{
broken_pirq
,
"IBM xseries 370"
,
{
/* Bad $PIR */
MATCH
(
DMI_BIOS_VENDOR
,
"IBM"
),
MATCH
(
DMI_BIOS_VERSION
,
"MMKT33AUS"
),
NO_MATCH
,
NO_MATCH
}
},
/* Intel in disguise - In this case they can't hide and they don't run
too well either... */
{
broken_pirq
,
"Dell PowerEdge 8450"
,
{
/* Bad $PIR */
MATCH
(
DMI_PRODUCT_NAME
,
"Dell PowerEdge 8450"
),
NO_MATCH
,
NO_MATCH
,
NO_MATCH
}
},
{
broken_acpi_Sx
,
"ASUS K7V-RM"
,
{
/* Bad ACPI Sx table */
MATCH
(
DMI_BIOS_VERSION
,
"ASUS K7V-RM ACPI BIOS Revision 1003A"
),
MATCH
(
DMI_BOARD_NAME
,
"<K7V-RM>"
),
...
...
@@ -1018,6 +968,49 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
MATCH
(
DMI_BOARD_VENDOR
,
"IBM"
),
MATCH
(
DMI_PRODUCT_NAME
,
"eserver xSeries 440"
),
NO_MATCH
,
NO_MATCH
}},
/*
* Systems with nForce2 BIOS timer override bug
* nVidia claims all nForce have timer on pin0,
* and applying this workaround is a NOP on fixed BIOS,
* so prospects are good for replacing these entries
* with something to key of chipset PCI-ID.
*/
{
ignore_timer_override
,
"Abit NF7-S v2"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"http://www.abit.com.tw/"
),
MATCH
(
DMI_BOARD_NAME
,
"NF7-S/NF7,NF7-V (nVidia-nForce2)"
),
MATCH
(
DMI_BIOS_VERSION
,
"6.00 PG"
),
MATCH
(
DMI_BIOS_DATE
,
"03/24/2004"
)
}},
{
ignore_timer_override
,
"Asus A7N8X v2"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC."
),
MATCH
(
DMI_BOARD_NAME
,
"A7N8X2.0"
),
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7N8X2.0 Deluxe ACPI BIOS Rev 1007"
),
MATCH
(
DMI_BIOS_DATE
,
"10/06/2003"
)
}},
{
ignore_timer_override
,
"Asus A7N8X-X"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC."
),
MATCH
(
DMI_BOARD_NAME
,
"A7N8X-X"
),
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7N8X-X ACPI BIOS Rev 1009"
),
MATCH
(
DMI_BIOS_DATE
,
"2/3/2004"
)
}},
{
ignore_timer_override
,
"MSI K7N2-Delta"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"MICRO-STAR INTERNATIONAL CO., LTD"
),
MATCH
(
DMI_BOARD_NAME
,
"MS-6570"
),
MATCH
(
DMI_BIOS_VERSION
,
"6.00 PG"
),
MATCH
(
DMI_BIOS_DATE
,
"03/29/2004"
)
}},
{
ignore_timer_override
,
"Shuttle SN41G2"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"Shuttle Inc"
),
MATCH
(
DMI_BOARD_NAME
,
"FN41"
),
MATCH
(
DMI_BIOS_VERSION
,
"6.00 PG"
),
MATCH
(
DMI_BIOS_DATE
,
"01/14/2004"
)
}},
{
ignore_timer_override
,
"Shuttle AN35N"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"Shuttle Inc"
),
MATCH
(
DMI_BOARD_NAME
,
"AN35"
),
MATCH
(
DMI_BIOS_VERSION
,
"6.00 PG"
),
MATCH
(
DMI_BIOS_DATE
,
"12/05/2003"
)
}},
#endif // CONFIG_ACPI_BOOT
#ifdef CONFIG_ACPI_PCI
...
...
@@ -1025,13 +1018,21 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
* Boxes that need ACPI PCI IRQ routing disabled
*/
{
disable_acpi_
pci
,
"ASUS A7V"
,
{
{
disable_acpi_
irq
,
"ASUS A7V"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC"
),
MATCH
(
DMI_BOARD_NAME
,
"<A7V>"
),
/* newer BIOS, Revision 1011, does work */
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7V ACPI BIOS Revision 1007"
),
NO_MATCH
}},
/*
* Boxes that need ACPI PCI IRQ routing and PCI scan disabled
*/
{
disable_acpi_pci
,
"ASUS PR-DLS"
,
{
/* _BBN 0 bug */
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC."
),
MATCH
(
DMI_BOARD_NAME
,
"PR-DLS"
),
MATCH
(
DMI_BIOS_VERSION
,
"ASUS PR-DLS ACPI BIOS Revision 1010"
),
MATCH
(
DMI_BIOS_DATE
,
"03/21/2003"
)
}},
#endif
{
NULL
,
}
...
...
arch/i386/kernel/io_apic.c
View file @
4774cf7a
...
...
@@ -2266,18 +2266,10 @@ static inline void check_timer(void)
/*
*
* IRQ's that are handled by the
old PIC in all cases:
* IRQ's that are handled by the
PIC in the MPS IOAPIC case.
* - IRQ2 is the cascade IRQ, and cannot be a io-apic IRQ.
* Linux doesn't really care, as it's not actually used
* for any interrupt handling anyway.
* - There used to be IRQ13 here as well, but all
* MPS-compliant must not use it for FPU coupling and we
* want to use exception 16 anyway. And there are
* systems who connect it to an I/O APIC for other uses.
* Thus we don't mark it special any longer.
*
* Additionally, something is definitely wrong with irq9
* on PIIX4 boards.
*/
#define PIC_IRQS (1 << PIC_CASCADE_IR)
...
...
@@ -2285,7 +2277,11 @@ void __init setup_IO_APIC(void)
{
enable_IO_APIC
();
io_apic_irqs
=
~
PIC_IRQS
;
if
(
acpi_ioapic
)
io_apic_irqs
=
~
0
;
/* all IRQs go through IOAPIC */
else
io_apic_irqs
=
~
PIC_IRQS
;
printk
(
"ENABLING IO-APIC IRQs
\n
"
);
/*
...
...
@@ -2455,7 +2451,7 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a
entry
.
vector
=
assign_irq_vector
(
irq
);
printk
(
KERN_DEBUG
"IOAPIC[%d]: Set PCI routing entry (%d-%d -> 0x%x -> "
D
printk
(
KERN_DEBUG
"IOAPIC[%d]: Set PCI routing entry (%d-%d -> 0x%x -> "
"IRQ %d Mode:%i Active:%i)
\n
"
,
ioapic
,
mp_ioapics
[
ioapic
].
mpc_apicid
,
pin
,
entry
.
vector
,
irq
,
edge_level
,
active_high_low
);
...
...
arch/i386/kernel/mpparse.c
View file @
4774cf7a
...
...
@@ -929,8 +929,6 @@ void __init mp_override_legacy_irq (
u32
gsi
)
{
struct
mpc_config_intsrc
intsrc
;
int
i
=
0
;
int
found
=
0
;
int
ioapic
=
-
1
;
int
pin
=
-
1
;
...
...
@@ -963,23 +961,9 @@ void __init mp_override_legacy_irq (
(
intsrc
.
mpc_irqflag
>>
2
)
&
3
,
intsrc
.
mpc_srcbus
,
intsrc
.
mpc_srcbusirq
,
intsrc
.
mpc_dstapic
,
intsrc
.
mpc_dstirq
);
/*
* If an existing [IOAPIC.PIN -> IRQ] routing entry exists we override it.
* Otherwise create a new entry (e.g. gsi == 2).
*/
for
(
i
=
0
;
i
<
mp_irq_entries
;
i
++
)
{
if
((
mp_irqs
[
i
].
mpc_srcbus
==
intsrc
.
mpc_srcbus
)
&&
(
mp_irqs
[
i
].
mpc_srcbusirq
==
intsrc
.
mpc_srcbusirq
))
{
mp_irqs
[
i
]
=
intsrc
;
found
=
1
;
break
;
}
}
if
(
!
found
)
{
mp_irqs
[
mp_irq_entries
]
=
intsrc
;
if
(
++
mp_irq_entries
==
MAX_IRQ_SOURCES
)
panic
(
"Max # of irq sources exceeded!
\n
"
);
}
mp_irqs
[
mp_irq_entries
]
=
intsrc
;
if
(
++
mp_irq_entries
==
MAX_IRQ_SOURCES
)
panic
(
"Max # of irq sources exceeded!
\n
"
);
return
;
}
...
...
@@ -1010,13 +994,20 @@ void __init mp_config_acpi_legacy_irqs (void)
intsrc
.
mpc_dstapic
=
mp_ioapics
[
ioapic
].
mpc_apicid
;
/*
* Use the default configuration for the IRQs 0-15.
These may be
* Use the default configuration for the IRQs 0-15.
Unless
* overriden by (MADT) interrupt source override entries.
*/
for
(
i
=
0
;
i
<
16
;
i
++
)
{
int
idx
;
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
if
(
mp_irqs
[
idx
].
mpc_srcbus
==
MP_ISA_BUS
&&
(
mp_irqs
[
idx
].
mpc_srcbusirq
==
i
||
mp_irqs
[
idx
].
mpc_dstirq
==
i
))
break
;
if
(
i
==
2
)
continue
;
/* Don't connect IRQ2
*/
if
(
i
dx
!=
mp_irq_entries
)
continue
;
/* IRQ already used
*/
intsrc
.
mpc_irqtype
=
mp_INT
;
intsrc
.
mpc_srcbusirq
=
i
;
/* Identity mapped */
...
...
@@ -1111,11 +1102,12 @@ void __init mp_parse_prt (void)
if
(
!
io_apic_set_pci_routing
(
ioapic
,
ioapic_pin
,
gsi
,
edge_level
,
active_high_low
))
{
acpi_gsi_to_irq
(
gsi
,
&
entry
->
irq
);
}
printk
(
KERN_DEBUG
"%02x:%02x:%02x[%c] -> %d-%d -> IRQ %d
\n
"
,
printk
(
KERN_DEBUG
"%02x:%02x:%02x[%c] -> %d-%d -> IRQ %d
%s %s
\n
"
,
entry
->
id
.
segment
,
entry
->
id
.
bus
,
entry
->
id
.
device
,
(
'A'
+
entry
->
pin
),
mp_ioapic_routing
[
ioapic
].
apic_id
,
ioapic_pin
,
entry
->
irq
);
entry
->
irq
,
edge_level
?
"level"
:
"edge"
,
active_high_low
?
"low"
:
"high"
);
}
print_IO_APIC
();
...
...
arch/i386/kernel/setup.c
View file @
4774cf7a
...
...
@@ -583,9 +583,13 @@ static void __init parse_cmdline_early (char ** cmdline_p)
disable_acpi
();
acpi_ht
=
1
;
}
/* "pci=noacpi" disable
s ACPI interrupt routing
*/
/* "pci=noacpi" disable
ACPI IRQ routing and PCI scan
*/
else
if
(
!
memcmp
(
from
,
"pci=noacpi"
,
10
))
{
acpi_disable_pci
();
}
/* "acpi=noirq" disables ACPI interrupt routing */
else
if
(
!
memcmp
(
from
,
"acpi=noirq"
,
10
))
{
acpi_noirq_set
();
}
...
...
@@ -601,6 +605,11 @@ static void __init parse_cmdline_early (char ** cmdline_p)
else
if
(
!
memcmp
(
from
,
"acpi_sci=low"
,
12
))
acpi_sci_flags
.
polarity
=
3
;
#ifdef CONFIG_X86_IO_APIC
else
if
(
!
memcmp
(
from
,
"acpi_skip_timer_override"
,
24
))
acpi_skip_timer_override
=
1
;
#endif
#ifdef CONFIG_X86_LOCAL_APIC
/* disable IO-APIC */
else
if
(
!
memcmp
(
from
,
"noapic"
,
6
))
...
...
arch/i386/mach-default/setup.c
View file @
4774cf7a
...
...
@@ -7,6 +7,7 @@
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <asm/acpi.h>
#include <asm/arch_hooks.h>
/**
...
...
@@ -43,7 +44,8 @@ void __init intr_init_hook(void)
apic_intr_init
();
#endif
setup_irq
(
2
,
&
irq2
);
if
(
!
acpi_ioapic
)
setup_irq
(
2
,
&
irq2
);
}
/**
...
...
arch/i386/mach-es7000/setup.c
View file @
4774cf7a
...
...
@@ -7,6 +7,7 @@
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <asm/acpi.h>
#include <asm/arch_hooks.h>
/**
...
...
@@ -17,8 +18,7 @@
* the "ordinary" interrupt call gates. For legacy reasons, the ISA
* interrupts should be initialised here if the machine emulates a PC
* in any way.
**/
void
__init
pre_intr_init_hook
(
void
)
**/
void
__init
pre_intr_init_hook
(
void
)
{
init_ISA_irqs
();
}
...
...
@@ -43,7 +43,8 @@ void __init intr_init_hook(void)
apic_intr_init
();
#endif
setup_irq
(
2
,
&
irq2
);
if
(
!
acpi_ioapic
)
setup_irq
(
2
,
&
irq2
);
}
/**
...
...
arch/i386/mach-voyager/setup.c
View file @
4774cf7a
...
...
@@ -6,6 +6,7 @@
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <asm/acpi.h>
#include <asm/arch_hooks.h>
void
__init
pre_intr_init_hook
(
void
)
...
...
@@ -24,7 +25,8 @@ void __init intr_init_hook(void)
smp_intr_init
();
#endif
setup_irq
(
2
,
&
irq2
);
if
(
!
acpi_ioapic
)
setup_irq
(
2
,
&
irq2
);
}
void
__init
pre_setup_arch_hook
(
void
)
...
...
arch/i386/pci/acpi.c
View file @
4774cf7a
...
...
@@ -21,7 +21,6 @@ static int __init pci_acpi_init(void)
if
(
!
acpi_noirq
)
{
if
(
!
acpi_pci_irq_init
())
{
printk
(
KERN_INFO
"PCI: Using ACPI for IRQ routing
\n
"
);
printk
(
KERN_INFO
"PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
\n
"
);
pcibios_scanned
++
;
pcibios_enable_irq
=
acpi_pci_irq_enable
;
}
else
...
...
arch/i386/pci/irq.c
View file @
4774cf7a
...
...
@@ -453,15 +453,12 @@ static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
static
__init
int
intel_router_probe
(
struct
irq_router
*
r
,
struct
pci_dev
*
router
,
u16
device
)
{
#if 0 /* Let's see what chip this is supposed to be ... */
/* We must not touch 440GX even if we have tables. 440GX has
different IRQ routing weirdness */
/* 440GX has a proprietary PIRQ router -- don't use it */
if
(
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82443GX_0
,
NULL
)
||
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82443GX_2
,
NULL
))
return
0
;
#endif
switch
(
device
)
{
...
...
arch/x86_64/kernel/Makefile
View file @
4774cf7a
...
...
@@ -8,7 +8,7 @@ obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_x86_64.o
\
x8664_ksyms.o i387.o syscall.o vsyscall.o
\
setup64.o bootflag.o e820.o reboot.o warmreboot.o
obj-y
+=
mce.o
acpi/
obj-y
+=
mce.o
obj-$(CONFIG_MTRR)
+=
../../i386/kernel/cpu/mtrr/
obj-$(CONFIG_ACPI_BOOT)
+=
acpi/
...
...
arch/x86_64/kernel/i8259.c
View file @
4774cf7a
...
...
@@ -13,6 +13,7 @@
#include <linux/kernel_stat.h>
#include <linux/sysdev.h>
#include <asm/acpi.h>
#include <asm/atomic.h>
#include <asm/system.h>
#include <asm/io.h>
...
...
@@ -490,5 +491,6 @@ void __init init_IRQ(void)
*/
setup_timer
();
setup_irq
(
2
,
&
irq2
);
if
(
!
acpi_ioapic
)
setup_irq
(
2
,
&
irq2
);
}
arch/x86_64/kernel/io_apic.c
View file @
4774cf7a
...
...
@@ -1740,18 +1740,10 @@ static inline void check_timer(void)
/*
*
* IRQ's that are handled by the
old PIC in all cases:
* IRQ's that are handled by the
PIC in the MPS IOAPIC case.
* - IRQ2 is the cascade IRQ, and cannot be a io-apic IRQ.
* Linux doesn't really care, as it's not actually used
* for any interrupt handling anyway.
* - There used to be IRQ13 here as well, but all
* MPS-compliant must not use it for FPU coupling and we
* want to use exception 16 anyway. And there are
* systems who connect it to an I/O APIC for other uses.
* Thus we don't mark it special any longer.
*
* Additionally, something is definitely wrong with irq9
* on PIIX4 boards.
*/
#define PIC_IRQS (1<<2)
...
...
@@ -1759,7 +1751,11 @@ void __init setup_IO_APIC(void)
{
enable_IO_APIC
();
io_apic_irqs
=
~
PIC_IRQS
;
if
(
acpi_ioapic
)
io_apic_irqs
=
~
0
;
/* all IRQs go through IOAPIC */
else
io_apic_irqs
=
~
PIC_IRQS
;
printk
(
"ENABLING IO-APIC IRQs
\n
"
);
/*
...
...
arch/x86_64/kernel/mpparse.c
View file @
4774cf7a
...
...
@@ -784,8 +784,6 @@ void __init mp_override_legacy_irq (
u32
gsi
)
{
struct
mpc_config_intsrc
intsrc
;
int
i
=
0
;
int
found
=
0
;
int
ioapic
=
-
1
;
int
pin
=
-
1
;
...
...
@@ -818,23 +816,9 @@ void __init mp_override_legacy_irq (
(
intsrc
.
mpc_irqflag
>>
2
)
&
3
,
intsrc
.
mpc_srcbus
,
intsrc
.
mpc_srcbusirq
,
intsrc
.
mpc_dstapic
,
intsrc
.
mpc_dstirq
);
/*
* If an existing [IOAPIC.PIN -> IRQ] routing entry exists we override it.
* Otherwise create a new entry (e.g. gsi == 2).
*/
for
(
i
=
0
;
i
<
mp_irq_entries
;
i
++
)
{
if
((
mp_irqs
[
i
].
mpc_srcbus
==
intsrc
.
mpc_srcbus
)
&&
(
mp_irqs
[
i
].
mpc_srcbusirq
==
intsrc
.
mpc_srcbusirq
))
{
mp_irqs
[
i
]
=
intsrc
;
found
=
1
;
break
;
}
}
if
(
!
found
)
{
mp_irqs
[
mp_irq_entries
]
=
intsrc
;
if
(
++
mp_irq_entries
==
MAX_IRQ_SOURCES
)
panic
(
"Max # of irq sources exceeded!
\n
"
);
}
mp_irqs
[
mp_irq_entries
]
=
intsrc
;
if
(
++
mp_irq_entries
==
MAX_IRQ_SOURCES
)
panic
(
"Max # of irq sources exceeded!
\n
"
);
return
;
}
...
...
@@ -865,13 +849,22 @@ void __init mp_config_acpi_legacy_irqs (void)
intsrc
.
mpc_dstapic
=
mp_ioapics
[
ioapic
].
mpc_apicid
;
/*
* Use the default configuration for the IRQs 0-15.
These may be
* Use the default configuration for the IRQs 0-15.
Unless
* overridden by (MADT) interrupt source override entries.
*/
for
(
i
=
0
;
i
<
16
;
i
++
)
{
int
idx
;
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
if
(
mp_irqs
[
idx
].
mpc_srcbus
==
MP_ISA_BUS
&&
(
mp_irqs
[
idx
].
mpc_srcbusirq
==
i
||
mp_irqs
[
idx
].
mpc_dstirq
==
i
))
break
;
if
(
i
==
2
)
continue
;
/* Don't connect IRQ2 */
if
(
idx
!=
mp_irq_entries
)
{
printk
(
KERN_DEBUG
"ACPI: IRQ%d used by override.
\n
"
,
i
);
continue
;
/* IRQ already used */
}
intsrc
.
mpc_irqtype
=
mp_INT
;
intsrc
.
mpc_srcbusirq
=
i
;
/* Identity mapped */
...
...
arch/x86_64/kernel/setup.c
View file @
4774cf7a
...
...
@@ -65,8 +65,8 @@ struct cpuinfo_x86 boot_cpu_data;
unsigned
long
mmu_cr4_features
;
EXPORT_SYMBOL_GPL
(
mmu_cr4_features
);
int
acpi_disabled
=
0
;
int
acpi_disabled
;
EXPORT_SYMBOL
(
acpi_disabled
);
#ifdef CONFIG_ACPI_BOOT
extern
int
__initdata
acpi_ht
;
extern
acpi_interrupt_flags
acpi_sci_flags
;
...
...
@@ -242,7 +242,7 @@ static __init void parse_cmdline_early (char ** cmdline_p)
#ifdef CONFIG_ACPI_BOOT
/* "acpi=off" disables both ACPI table parsing and interpreter init */
if
(
!
memcmp
(
from
,
"acpi=off"
,
8
))
acpi_disabled
=
1
;
disable_acpi
()
;
if
(
!
memcmp
(
from
,
"acpi=force"
,
10
))
{
/* add later when we do DMI horrors: */
...
...
@@ -256,7 +256,9 @@ static __init void parse_cmdline_early (char ** cmdline_p)
acpi_ht
=
1
;
}
else
if
(
!
memcmp
(
from
,
"pci=noacpi"
,
10
))
acpi_noirq_set
();
acpi_disable_pci
();
else
if
(
!
memcmp
(
from
,
"acpi=noirq"
,
10
))
acpi_noirq_set
();
else
if
(
!
memcmp
(
from
,
"acpi_sci=edge"
,
13
))
acpi_sci_flags
.
trigger
=
1
;
...
...
drivers/acpi/ac.c
View file @
4774cf7a
...
...
@@ -158,6 +158,7 @@ acpi_ac_add_fs (
acpi_ac_dir
);
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
}
/* 'state' [R] */
...
...
@@ -170,6 +171,7 @@ acpi_ac_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_ac_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VALUE
(
0
);
...
...
@@ -320,6 +322,7 @@ acpi_ac_init (void)
acpi_ac_dir
=
proc_mkdir
(
ACPI_AC_CLASS
,
acpi_root_dir
);
if
(
!
acpi_ac_dir
)
return_VALUE
(
-
ENODEV
);
acpi_ac_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_ac_driver
);
if
(
result
<
0
)
{
...
...
drivers/acpi/asus_acpi.c
View file @
4774cf7a
...
...
@@ -41,7 +41,7 @@
#include <acpi/acpi_drivers.h>
#include <acpi/acpi_bus.h>
#define ASUS_ACPI_VERSION "0.2
7
"
#define ASUS_ACPI_VERSION "0.2
8
"
#define PROC_ASUS "asus" //the directory
#define PROC_MLED "mled"
...
...
@@ -125,12 +125,11 @@ struct asus_hotk {
L5x
,
//L5800C
L8L
,
//L8400L
M1A
,
//M1300A
M2E
,
//M2400E
M2E
,
//M2400E, L4400L
P30
,
//Samsung P30
S1x
,
//S1300A, but also L1400B and M2400A (L84F)
S2x
,
//S200 (J1 reported), Victor MP-XP7210
//TODO A1370D does not seem to have an ATK device
// L8400 model doesn't have ATK
xxN
,
//M2400N, M3700N, S1300N (Centrino)
xxN
,
//M2400N, M3700N, M6800N, S1300N, S5200N (Centrino)
END_MODEL
}
model
;
//Models currently supported
u16
event_count
[
128
];
//count for each event TODO make this better
...
...
@@ -140,6 +139,7 @@ struct asus_hotk {
#define A1x_PREFIX "\\_SB.PCI0.ISA.EC0."
#define L3C_PREFIX "\\_SB.PCI0.PX40.ECD0."
#define M1A_PREFIX "\\_SB.PCI0.PX40.EC0."
#define P30_PREFIX "\\_SB.PCI0.LPCB.EC0."
#define S1x_PREFIX "\\_SB.PCI0.PX40."
#define S2x_PREFIX A1x_PREFIX
#define xxN_PREFIX "\\_SB.PCI0.SBRG.EC0."
...
...
@@ -166,7 +166,7 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_lcd_switch
=
A1x_PREFIX
"_Q10"
,
.
lcd_status
=
"
\\
BKLI"
,
.
brightness_up
=
A1x_PREFIX
"_Q0E"
,
.
brightness_down
=
A1x_PREFIX
"_Q0F"
,
.
brightness_down
=
A1x_PREFIX
"_Q0F"
},
{
...
...
@@ -176,11 +176,8 @@ static struct model_data model_conf[END_MODEL] = {
.
wled_status
=
"
\\
SG66"
,
.
mt_lcd_switch
=
"
\\
Q10"
,
.
lcd_status
=
"
\\
BAOF"
,
.
brightness_up
=
"
\\
Q0E"
,
.
brightness_down
=
"
\\
Q0F"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
brightness_status
=
"
\\
CMOD"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
INFB"
},
...
...
@@ -217,11 +214,8 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_wled
=
"WLED"
,
.
mt_lcd_switch
=
L3C_PREFIX
"_Q10"
,
.
lcd_status
=
"
\\
GL32"
,
.
brightness_up
=
L3C_PREFIX
"_Q0F"
,
.
brightness_down
=
L3C_PREFIX
"_Q0E"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
brightness_status
=
"
\\
BLVL"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
_SB.PCI0.PCI1.VGAC.NMAP"
},
...
...
@@ -233,11 +227,8 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_wled
=
"WLED"
,
.
mt_lcd_switch
=
"
\\
Q10"
,
.
lcd_status
=
"
\\
BKLG"
,
.
brightness_up
=
"
\\
Q0E"
,
.
brightness_down
=
"
\\
Q0F"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
brightness_status
=
"
\\
BLVL"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
INFB"
},
...
...
@@ -257,14 +248,10 @@ static struct model_data model_conf[END_MODEL] = {
{
.
name
=
"L5x"
,
.
mt_mled
=
"MLED"
,
// .mt_wled = "WLED",
// .wled_status = "\\WRED",
/* Present, but not controlled by ACPI */
/* WLED present, but not controlled by ACPI */
.
mt_tled
=
"TLED"
,
.
mt_lcd_switch
=
"
\\
Q0D"
,
.
lcd_status
=
"
\\
BAOF"
,
.
brightness_up
=
"
\\
Q0C"
,
.
brightness_down
=
"
\\
Q0B"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
display_set
=
"SDSP"
,
...
...
@@ -294,14 +281,24 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_wled
=
"WLED"
,
.
mt_lcd_switch
=
"
\\
Q10"
,
.
lcd_status
=
"
\\
GP06"
,
.
brightness_up
=
"
\\
Q0E"
,
.
brightness_down
=
"
\\
Q0F"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
INFB"
},
{
.
name
=
"P30"
,
.
mt_wled
=
"WLED"
,
.
mt_lcd_switch
=
P30_PREFIX
"_Q0E"
,
.
lcd_status
=
"
\\
BKLT"
,
.
brightness_up
=
P30_PREFIX
"_Q68"
,
.
brightness_down
=
P30_PREFIX
"_Q69"
,
.
brightness_get
=
"GPLV"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
DNXT"
},
{
.
name
=
"S1x"
,
.
mt_mled
=
"MLED"
,
...
...
@@ -309,11 +306,8 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_wled
=
"WLED"
,
.
mt_lcd_switch
=
S1x_PREFIX
"Q10"
,
.
lcd_status
=
"
\\
PNOF"
,
.
brightness_up
=
S1x_PREFIX
"Q0F"
,
.
brightness_down
=
S1x_PREFIX
"Q0E"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
brightness_status
=
"
\\
BRIT"
,
.
brightness_get
=
"GPLV"
},
{
...
...
@@ -323,22 +317,17 @@ static struct model_data model_conf[END_MODEL] = {
.
mt_lcd_switch
=
S2x_PREFIX
"_Q10"
,
.
lcd_status
=
"
\\
BKLI"
,
.
brightness_up
=
S2x_PREFIX
"_Q0B"
,
.
brightness_down
=
S2x_PREFIX
"_Q0A"
,
.
brightness_down
=
S2x_PREFIX
"_Q0A"
},
{
.
name
=
"xxN"
,
.
mt_mled
=
"MLED"
,
// .mt_wled = "WLED",
// .wled_status = "\\PO33",
/* Present, but not controlled by ACPI */
/* WLED present, but not controlled by ACPI */
.
mt_lcd_switch
=
xxN_PREFIX
"_Q10"
,
.
lcd_status
=
"
\\
BKLT"
,
.
brightness_up
=
xxN_PREFIX
"_Q0F"
,
.
brightness_down
=
xxN_PREFIX
"_Q0E"
,
.
brightness_set
=
"SPLV"
,
.
brightness_get
=
"GPLV"
,
.
brightness_status
=
"
\\
LBTN"
,
.
display_set
=
"SDSP"
,
.
display_get
=
"
\\
ADVG"
}
...
...
@@ -663,6 +652,23 @@ proc_write_lcd(struct file *file, const char *buffer,
}
static
int
read_brightness
(
struct
asus_hotk
*
hotk
)
{
int
value
;
if
(
hotk
->
methods
->
brightness_get
)
{
/* SPLV/GPLV laptop */
if
(
!
read_acpi_int
(
hotk
->
handle
,
hotk
->
methods
->
brightness_get
,
&
value
))
printk
(
KERN_WARNING
"Asus ACPI: Error reading brightness
\n
"
);
}
else
if
(
hotk
->
methods
->
brightness_status
)
{
/* For D1 for example */
if
(
!
read_acpi_int
(
NULL
,
hotk
->
methods
->
brightness_status
,
&
value
))
printk
(
KERN_WARNING
"Asus ACPI: Error reading brightness
\n
"
);
}
else
/* No GPLV method */
value
=
hotk
->
brightness
;
return
value
;
}
/*
* Change the brightness level
*/
...
...
@@ -679,7 +685,7 @@ static void set_brightness(int value, struct asus_hotk *hotk)
}
/* No SPLV method if we are here, act as appropriate */
value
-=
hotk
->
brightness
;
value
-=
read_brightness
(
hotk
)
;
while
(
value
!=
0
)
{
status
=
acpi_evaluate_object
(
NULL
,
(
value
>
0
)
?
hotk
->
methods
->
brightness_up
:
...
...
@@ -692,23 +698,6 @@ static void set_brightness(int value, struct asus_hotk *hotk)
return
;
}
static
int
read_brightness
(
struct
asus_hotk
*
hotk
)
{
int
value
;
if
(
hotk
->
methods
->
brightness_get
)
{
/* SPLV/GPLV laptop */
if
(
!
read_acpi_int
(
hotk
->
handle
,
hotk
->
methods
->
brightness_get
,
&
value
))
printk
(
KERN_WARNING
"Asus ACPI: Error reading brightness
\n
"
);
}
else
if
(
hotk
->
methods
->
brightness_status
)
{
/* For D1 for example */
if
(
!
read_acpi_int
(
NULL
,
hotk
->
methods
->
brightness_status
,
&
value
))
printk
(
KERN_WARNING
"Asus ACPI: Error reading brightness
\n
"
);
}
else
/* No GPLV method */
value
=
hotk
->
brightness
;
return
value
;
}
static
int
proc_read_brn
(
char
*
page
,
char
**
start
,
off_t
off
,
int
count
,
int
*
eof
,
void
*
data
)
...
...
@@ -929,12 +918,29 @@ static int __init asus_hotk_get_info(struct asus_hotk *hotk)
return
-
ENODEV
;
}
/*
For testing purposes
*/
/*
This needs to be called for some laptops to init properly
*/
if
(
!
read_acpi_int
(
hotk
->
handle
,
"BSTS"
,
&
bsts_result
))
printk
(
KERN_WARNING
" Error calling BSTS
\n
"
);
else
if
(
bsts_result
)
printk
(
KERN_NOTICE
" BSTS called, 0x%02x returned
\n
"
,
bsts_result
);
/* Samsung P30 has a device with a valid _HID whose INIT does not
* return anything. Catch this one and any similar here */
if
(
buffer
.
pointer
==
NULL
)
{
if
(
asus_info
&&
/* Samsung P30 */
strncmp
(
asus_info
->
oem_table_id
,
"ODEM"
,
4
)
==
0
)
{
hotk
->
model
=
P30
;
printk
(
KERN_NOTICE
" Samsung P30 detected, supported
\n
"
);
}
else
{
hotk
->
model
=
M2E
;
printk
(
KERN_WARNING
" no string returned by INIT
\n
"
);
printk
(
KERN_WARNING
" trying default values, supply "
"the developers with your DSDT
\n
"
);
}
hotk
->
methods
=
&
model_conf
[
hotk
->
model
];
return
AE_OK
;
}
model
=
(
union
acpi_object
*
)
buffer
.
pointer
;
if
(
model
->
type
==
ACPI_TYPE_STRING
)
{
printk
(
KERN_NOTICE
" %s model detected, "
,
model
->
string
.
pointer
);
...
...
@@ -953,12 +959,14 @@ static int __init asus_hotk_get_info(struct asus_hotk *hotk)
hotk
->
model
=
L8L
;
else
if
(
strncmp
(
model
->
string
.
pointer
,
"M2N"
,
3
)
==
0
||
strncmp
(
model
->
string
.
pointer
,
"M3N"
,
3
)
==
0
||
strncmp
(
model
->
string
.
pointer
,
"M6N"
,
3
)
==
0
||
strncmp
(
model
->
string
.
pointer
,
"S1N"
,
3
)
==
0
||
strncmp
(
model
->
string
.
pointer
,
"S5N"
,
3
)
==
0
)
hotk
->
model
=
xxN
;
else
if
(
strncmp
(
model
->
string
.
pointer
,
"M1"
,
2
)
==
0
)
hotk
->
model
=
M1A
;
else
if
(
strncmp
(
model
->
string
.
pointer
,
"M2"
,
2
)
==
0
)
else
if
(
strncmp
(
model
->
string
.
pointer
,
"M2"
,
2
)
==
0
||
strncmp
(
model
->
string
.
pointer
,
"L4E"
,
3
)
==
0
)
hotk
->
model
=
M2E
;
else
if
(
strncmp
(
model
->
string
.
pointer
,
"L2"
,
2
)
==
0
)
hotk
->
model
=
L2D
;
...
...
@@ -994,6 +1002,13 @@ static int __init asus_hotk_get_info(struct asus_hotk *hotk)
else
if
(
strncmp
(
model
->
string
.
pointer
,
"S5N"
,
3
)
==
0
)
hotk
->
methods
->
mt_mled
=
NULL
;
/* S5N has no MLED */
else
if
(
strncmp
(
model
->
string
.
pointer
,
"M6N"
,
3
)
==
0
)
{
hotk
->
methods
->
display_get
=
NULL
;
//TODO
hotk
->
methods
->
lcd_status
=
"
\\
_SB.BKLT"
;
hotk
->
methods
->
mt_wled
=
"WLED"
;
hotk
->
methods
->
wled_status
=
"
\\
_SB.PCI0.SBRG.SG13"
;
/* M6N differs slightly and has a usable WLED */
}
else
if
(
asus_info
)
{
if
(
strncmp
(
asus_info
->
oem_table_id
,
"L1"
,
2
)
==
0
)
hotk
->
methods
->
mled_status
=
NULL
;
...
...
drivers/acpi/battery.c
View file @
4774cf7a
...
...
@@ -486,14 +486,18 @@ acpi_battery_read_state (
else
p
+=
sprintf
(
p
,
"capacity state: critical
\n
"
);
if
((
bst
->
state
&
0x01
)
&&
(
bst
->
state
&
0x02
))
if
((
bst
->
state
&
0x01
)
&&
(
bst
->
state
&
0x02
))
{
p
+=
sprintf
(
p
,
"charging state: charging/discharging
\n
"
);
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Battery Charging and Discharging?
\n
"
));
}
else
if
(
bst
->
state
&
0x01
)
p
+=
sprintf
(
p
,
"charging state: discharging
\n
"
);
else
if
(
bst
->
state
&
0x02
)
p
+=
sprintf
(
p
,
"charging state: charging
\n
"
);
else
p
+=
sprintf
(
p
,
"charging state: unknown
\n
"
);
else
{
p
+=
sprintf
(
p
,
"charging state: charged
\n
"
);
}
if
(
bst
->
present_rate
==
ACPI_BATTERY_VALUE_UNKNOWN
)
p
+=
sprintf
(
p
,
"present rate: unknown
\n
"
);
...
...
@@ -621,6 +625,7 @@ acpi_battery_add_fs (
acpi_battery_dir
);
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
}
/* 'info' [R] */
...
...
@@ -633,6 +638,7 @@ acpi_battery_add_fs (
else
{
entry
->
read_proc
=
acpi_battery_read_info
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'status' [R] */
...
...
@@ -645,6 +651,7 @@ acpi_battery_add_fs (
else
{
entry
->
read_proc
=
acpi_battery_read_state
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'alarm' [R/W] */
...
...
@@ -658,6 +665,7 @@ acpi_battery_add_fs (
entry
->
read_proc
=
acpi_battery_read_alarm
;
entry
->
write_proc
=
acpi_battery_write_alarm
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VALUE
(
0
);
...
...
@@ -809,6 +817,7 @@ acpi_battery_init (void)
acpi_battery_dir
=
proc_mkdir
(
ACPI_BATTERY_CLASS
,
acpi_root_dir
);
if
(
!
acpi_battery_dir
)
return_VALUE
(
-
ENODEV
);
acpi_battery_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_battery_driver
);
if
(
result
<
0
)
{
...
...
drivers/acpi/button.c
View file @
4774cf7a
...
...
@@ -108,6 +108,9 @@ static struct file_operations acpi_button_state_fops = {
-------------------------------------------------------------------------- */
static
struct
proc_dir_entry
*
acpi_button_dir
;
extern
struct
acpi_device
*
acpi_fixed_pwr_button
;
extern
struct
acpi_device
*
acpi_fixed_sleep_button
;
static
int
acpi_button_info_seq_show
(
struct
seq_file
*
seq
,
void
*
offset
)
{
...
...
@@ -187,9 +190,14 @@ acpi_button_add_fs (
break
;
}
if
(
!
entry
)
return_VALUE
(
-
ENODEV
);
entry
->
owner
=
THIS_MODULE
;
acpi_device_dir
(
device
)
=
proc_mkdir
(
acpi_device_bid
(
device
),
entry
);
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
/* 'info' [R] */
entry
=
create_proc_entry
(
ACPI_BUTTON_FILE_INFO
,
...
...
@@ -201,6 +209,7 @@ acpi_button_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_button_info_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* show lid state [R] */
...
...
@@ -214,6 +223,7 @@ acpi_button_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_button_state_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
}
...
...
@@ -225,10 +235,28 @@ static int
acpi_button_remove_fs
(
struct
acpi_device
*
device
)
{
struct
acpi_button
*
button
=
NULL
;
ACPI_FUNCTION_TRACE
(
"acpi_button_remove_fs"
);
button
=
acpi_driver_data
(
device
);
if
(
acpi_device_dir
(
device
))
{
remove_proc_entry
(
acpi_device_bid
(
device
),
acpi_button_dir
);
switch
(
button
->
type
)
{
case
ACPI_BUTTON_TYPE_POWER
:
case
ACPI_BUTTON_TYPE_POWERF
:
remove_proc_entry
(
ACPI_BUTTON_SUBCLASS_POWER
,
acpi_button_dir
);
break
;
case
ACPI_BUTTON_TYPE_SLEEP
:
case
ACPI_BUTTON_TYPE_SLEEPF
:
remove_proc_entry
(
ACPI_BUTTON_SUBCLASS_SLEEP
,
acpi_button_dir
);
break
;
case
ACPI_BUTTON_TYPE_LID
:
remove_proc_entry
(
ACPI_BUTTON_SUBCLASS_LID
,
acpi_button_dir
);
break
;
}
acpi_device_dir
(
device
)
=
NULL
;
}
...
...
@@ -485,6 +513,7 @@ acpi_button_init (void)
acpi_button_dir
=
proc_mkdir
(
ACPI_BUTTON_CLASS
,
acpi_root_dir
);
if
(
!
acpi_button_dir
)
return_VALUE
(
-
ENODEV
);
acpi_button_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_button_driver
);
if
(
result
<
0
)
{
...
...
@@ -501,6 +530,12 @@ acpi_button_exit (void)
{
ACPI_FUNCTION_TRACE
(
"acpi_button_exit"
);
if
(
acpi_fixed_pwr_button
)
acpi_button_remove
(
acpi_fixed_pwr_button
,
ACPI_BUS_TYPE_POWER_BUTTON
);
if
(
acpi_fixed_sleep_button
)
acpi_button_remove
(
acpi_fixed_sleep_button
,
ACPI_BUS_TYPE_SLEEP_BUTTON
);
acpi_bus_unregister_driver
(
&
acpi_button_driver
);
remove_proc_entry
(
ACPI_BUTTON_CLASS
,
acpi_root_dir
);
...
...
drivers/acpi/fan.c
View file @
4774cf7a
...
...
@@ -157,6 +157,7 @@ acpi_fan_add_fs (
acpi_fan_dir
);
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
}
/* 'status' [R/W] */
...
...
@@ -170,6 +171,7 @@ acpi_fan_add_fs (
entry
->
read_proc
=
acpi_fan_read_state
;
entry
->
write_proc
=
acpi_fan_write_state
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VALUE
(
0
);
...
...
@@ -273,6 +275,7 @@ acpi_fan_init (void)
acpi_fan_dir
=
proc_mkdir
(
ACPI_FAN_CLASS
,
acpi_root_dir
);
if
(
!
acpi_fan_dir
)
return_VALUE
(
-
ENODEV
);
acpi_fan_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_fan_driver
);
if
(
result
<
0
)
{
...
...
drivers/acpi/osl.c
View file @
4774cf7a
...
...
@@ -63,7 +63,7 @@ int acpi_in_debugger;
extern
char
line_buf
[
80
];
#endif
/*ENABLE_DEBUGGER*/
static
int
acpi_irq_irq
;
static
unsigned
int
acpi_irq_irq
;
static
OSD_HANDLER
acpi_irq_handler
;
static
void
*
acpi_irq_context
;
...
...
@@ -215,7 +215,8 @@ acpi_os_predefined_override (const struct acpi_predefined_names *init_val,
*
new_val
=
NULL
;
if
(
!
memcmp
(
init_val
->
name
,
"_OS_"
,
4
)
&&
strlen
(
acpi_os_name
))
{
printk
(
KERN_INFO
PREFIX
"Overriding _OS definition
\n
"
);
printk
(
KERN_INFO
PREFIX
"Overriding _OS definition %s
\n
"
,
acpi_os_name
);
*
new_val
=
acpi_os_name
;
}
...
...
@@ -240,23 +241,22 @@ acpi_irq(int irq, void *dev_id, struct pt_regs *regs)
}
acpi_status
acpi_os_install_interrupt_handler
(
u32
irq
,
OSD_HANDLER
handler
,
void
*
context
)
acpi_os_install_interrupt_handler
(
u32
gsi
,
OSD_HANDLER
handler
,
void
*
context
)
{
unsigned
int
irq
;
/*
* Ignore the
irq
from the core, and use the value in our copy of the
* Ignore the
GSI
from the core, and use the value in our copy of the
* FADT. It may not be the same if an interrupt source override exists
* for the SCI.
*/
irq
=
acpi_fadt
.
sci_int
;
#if defined(CONFIG_IA64) || defined(CONFIG_PCI_USE_VECTOR)
irq
=
acpi_irq_to_vector
(
irq
);
if
(
irq
<
0
)
{
printk
(
KERN_ERR
PREFIX
"SCI (ACPI interrupt %d) not registered
\n
"
,
acpi_fadt
.
sci_int
);
gsi
=
acpi_fadt
.
sci_int
;
if
(
acpi_gsi_to_irq
(
gsi
,
&
irq
)
<
0
)
{
printk
(
KERN_ERR
PREFIX
"SCI (ACPI GSI %d) not registered
\n
"
,
gsi
);
return
AE_OK
;
}
#endif
acpi_irq_handler
=
handler
;
acpi_irq_context
=
context
;
if
(
request_irq
(
irq
,
acpi_irq
,
SA_SHIRQ
,
"acpi"
,
acpi_irq
))
{
...
...
@@ -272,9 +272,6 @@ acpi_status
acpi_os_remove_interrupt_handler
(
u32
irq
,
OSD_HANDLER
handler
)
{
if
(
irq
)
{
#if defined(CONFIG_IA64) || defined(CONFIG_PCI_USE_VECTOR)
irq
=
acpi_irq_to_vector
(
irq
);
#endif
free_irq
(
irq
,
acpi_irq
);
acpi_irq_handler
=
NULL
;
acpi_irq_irq
=
0
;
...
...
drivers/acpi/pci_irq.c
View file @
4774cf7a
...
...
@@ -368,7 +368,7 @@ acpi_pci_irq_enable (
if
(
!
irq
)
{
printk
(
KERN_WARNING
PREFIX
"No IRQ known for interrupt pin %c of device %s"
,
(
'A'
+
pin
),
pci_name
(
dev
));
/* Interrupt Line values above 0xF are forbidden */
if
(
dev
->
irq
&&
dev
->
irq
>=
0xF
)
{
if
(
dev
->
irq
&&
(
dev
->
irq
<=
0xF
)
)
{
printk
(
" - using IRQ %d
\n
"
,
dev
->
irq
);
return_VALUE
(
dev
->
irq
);
}
...
...
drivers/acpi/pci_link.c
View file @
4774cf7a
This diff is collapsed.
Click to expand it.
drivers/acpi/pci_root.c
View file @
4774cf7a
...
...
@@ -119,6 +119,7 @@ acpi_pci_root_add (
{
int
result
=
0
;
struct
acpi_pci_root
*
root
=
NULL
;
struct
acpi_pci_root
*
tmp
;
acpi_status
status
=
AE_OK
;
unsigned
long
value
=
0
;
acpi_handle
handle
=
NULL
;
...
...
@@ -186,6 +187,13 @@ acpi_pci_root_add (
goto
end
;
}
/* Some systems have wrong _BBN */
list_for_each_entry
(
tmp
,
&
acpi_pci_roots
,
node
)
{
if
((
tmp
->
id
.
segment
==
root
->
id
.
segment
)
&&
(
tmp
->
id
.
bus
==
root
->
id
.
bus
))
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Wrong _BBN value, please reboot and using option 'pci=noacpi'
\n
"
));
}
/*
* Device & Function
* -----------------
...
...
@@ -272,7 +280,7 @@ static int __init acpi_pci_root_init (void)
{
ACPI_FUNCTION_TRACE
(
"acpi_pci_root_init"
);
if
(
acpi_disabled
)
if
(
acpi_
pci_
disabled
)
return_VALUE
(
0
);
/* DEBUG:
...
...
drivers/acpi/processor.c
View file @
4774cf7a
...
...
@@ -1190,6 +1190,7 @@ acpi_cpufreq_add_file (
entry
->
proc_fops
=
&
acpi_processor_perf_fops
;
entry
->
proc_fops
->
write
=
acpi_processor_write_performance
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VOID
;
}
...
...
@@ -2066,6 +2067,7 @@ acpi_processor_add_fs (
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
}
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
/* 'info' [R] */
entry
=
create_proc_entry
(
ACPI_PROCESSOR_FILE_INFO
,
...
...
@@ -2077,6 +2079,7 @@ acpi_processor_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_processor_info_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'power' [R] */
...
...
@@ -2089,6 +2092,7 @@ acpi_processor_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_processor_power_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'throttling' [R/W] */
...
...
@@ -2102,6 +2106,7 @@ acpi_processor_add_fs (
entry
->
proc_fops
=
&
acpi_processor_throttling_fops
;
entry
->
proc_fops
->
write
=
acpi_processor_write_throttling
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'limit' [R/W] */
...
...
@@ -2115,6 +2120,7 @@ acpi_processor_add_fs (
entry
->
proc_fops
=
&
acpi_processor_limit_fops
;
entry
->
proc_fops
->
write
=
acpi_processor_write_limit
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VALUE
(
0
);
...
...
@@ -2128,6 +2134,11 @@ acpi_processor_remove_fs (
ACPI_FUNCTION_TRACE
(
"acpi_processor_remove_fs"
);
if
(
acpi_device_dir
(
device
))
{
remove_proc_entry
(
ACPI_PROCESSOR_FILE_INFO
,
acpi_device_dir
(
device
));
remove_proc_entry
(
ACPI_PROCESSOR_FILE_POWER
,
acpi_device_dir
(
device
));
remove_proc_entry
(
ACPI_PROCESSOR_FILE_THROTTLING
,
acpi_device_dir
(
device
));
remove_proc_entry
(
ACPI_PROCESSOR_FILE_LIMIT
,
acpi_device_dir
(
device
));
remove_proc_entry
(
acpi_device_bid
(
device
),
acpi_processor_dir
);
acpi_device_dir
(
device
)
=
NULL
;
}
...
...
@@ -2385,6 +2396,7 @@ acpi_processor_init (void)
acpi_processor_dir
=
proc_mkdir
(
ACPI_PROCESSOR_CLASS
,
acpi_root_dir
);
if
(
!
acpi_processor_dir
)
return_VALUE
(
-
ENODEV
);
acpi_processor_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_processor_driver
);
if
(
result
<
0
)
{
...
...
drivers/acpi/scan.c
View file @
4774cf7a
...
...
@@ -15,6 +15,8 @@ ACPI_MODULE_NAME ("scan")
#define STRUCT_TO_INT(s) (*((int*)&s))
extern
struct
acpi_device
*
acpi_root
;
struct
acpi_device
*
acpi_fixed_pwr_button
;
struct
acpi_device
*
acpi_fixed_sleep_button
;
#define ACPI_BUS_CLASS "system_bus"
...
...
@@ -900,10 +902,13 @@ acpi_bus_scan_fixed (
struct
acpi_device
*
root
)
{
int
result
=
0
;
struct
acpi_device
*
device
=
NULL
;
ACPI_FUNCTION_TRACE
(
"acpi_bus_scan_fixed"
);
acpi_fixed_pwr_button
=
NULL
;
acpi_fixed_sleep_button
=
NULL
;
if
(
!
root
)
return_VALUE
(
-
ENODEV
);
...
...
@@ -911,11 +916,11 @@ acpi_bus_scan_fixed (
* Enumerate all fixed-feature devices.
*/
if
(
acpi_fadt
.
pwr_button
==
0
)
result
=
acpi_bus_add
(
&
device
,
acpi_root
,
result
=
acpi_bus_add
(
&
acpi_fixed_pwr_button
,
acpi_root
,
NULL
,
ACPI_BUS_TYPE_POWER_BUTTON
);
if
(
acpi_fadt
.
sleep_button
==
0
)
result
=
acpi_bus_add
(
&
device
,
acpi_root
,
result
=
acpi_bus_add
(
&
acpi_fixed_sleep_button
,
acpi_root
,
NULL
,
ACPI_BUS_TYPE_SLEEP_BUTTON
);
return_VALUE
(
result
);
...
...
drivers/acpi/thermal.c
View file @
4774cf7a
...
...
@@ -1060,6 +1060,7 @@ acpi_thermal_add_fs (
acpi_thermal_dir
);
if
(
!
acpi_device_dir
(
device
))
return_VALUE
(
-
ENODEV
);
acpi_device_dir
(
device
)
->
owner
=
THIS_MODULE
;
}
/* 'state' [R] */
...
...
@@ -1072,6 +1073,7 @@ acpi_thermal_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_thermal_state_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'temperature' [R] */
...
...
@@ -1084,6 +1086,7 @@ acpi_thermal_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_thermal_temp_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'trip_points' [R/W] */
...
...
@@ -1096,6 +1099,7 @@ acpi_thermal_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_thermal_trip_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'cooling_mode' [R/W] */
...
...
@@ -1108,6 +1112,7 @@ acpi_thermal_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_thermal_cooling_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
/* 'polling_frequency' [R/W] */
...
...
@@ -1120,6 +1125,7 @@ acpi_thermal_add_fs (
else
{
entry
->
proc_fops
=
&
acpi_thermal_polling_fops
;
entry
->
data
=
acpi_driver_data
(
device
);
entry
->
owner
=
THIS_MODULE
;
}
return_VALUE
(
0
);
...
...
@@ -1338,6 +1344,7 @@ acpi_thermal_init (void)
acpi_thermal_dir
=
proc_mkdir
(
ACPI_THERMAL_CLASS
,
acpi_root_dir
);
if
(
!
acpi_thermal_dir
)
return_VALUE
(
-
ENODEV
);
acpi_thermal_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
acpi_thermal_driver
);
if
(
result
<
0
)
{
...
...
drivers/acpi/toshiba_acpi.c
View file @
4774cf7a
...
...
@@ -502,6 +502,8 @@ add_device(void)
proc
=
create_proc_read_entry
(
item
->
name
,
S_IFREG
|
S_IRUGO
|
S_IWUSR
,
toshiba_proc_dir
,
(
read_proc_t
*
)
dispatch_read
,
item
);
if
(
proc
)
proc
->
owner
=
THIS_MODULE
;
if
(
proc
&&
item
->
write_func
)
proc
->
write_proc
=
(
write_proc_t
*
)
dispatch_write
;
}
...
...
@@ -525,6 +527,8 @@ toshiba_acpi_init(void)
acpi_status
status
=
AE_OK
;
u32
hci_result
;
if
(
acpi_disabled
)
return
-
ENODEV
;
/* simple device detection: look for HCI method */
if
(
is_valid_acpi_path
(
METHOD_HCI_1
))
method_hci
=
METHOD_HCI_1
;
...
...
@@ -547,6 +551,7 @@ toshiba_acpi_init(void)
if
(
!
toshiba_proc_dir
)
{
status
=
AE_ERROR
;
}
else
{
toshiba_proc_dir
->
owner
=
THIS_MODULE
;
status
=
add_device
();
if
(
ACPI_FAILURE
(
status
))
remove_proc_entry
(
PROC_TOSHIBA
,
acpi_root_dir
);
...
...
include/acpi/acpiosxf.h
View file @
4774cf7a
...
...
@@ -188,14 +188,14 @@ acpi_os_get_physical_address (
acpi_status
acpi_os_install_interrupt_handler
(
u32
interrupt_number
,
OSD_HANDLER
service_routine
,
u32
gsi
,
OSD_HANDLER
service_routine
,
void
*
context
);
acpi_status
acpi_os_remove_interrupt_handler
(
u32
interrupt_number
,
OSD_HANDLER
service_routine
);
OSD_HANDLER
service_routine
);
/*
...
...
include/asm-i386/acpi.h
View file @
4774cf7a
...
...
@@ -109,7 +109,14 @@ extern int acpi_noirq;
extern
int
acpi_strict
;
extern
int
acpi_disabled
;
extern
int
acpi_ht
;
static
inline
void
disable_acpi
(
void
)
{
acpi_disabled
=
1
;
acpi_ht
=
0
;
}
extern
int
acpi_pci_disabled
;
static
inline
void
disable_acpi
(
void
)
{
acpi_disabled
=
1
;
acpi_ht
=
0
;
acpi_pci_disabled
=
1
;
acpi_noirq
=
1
;
}
/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */
#define FIX_ACPI_PAGES 4
...
...
@@ -118,6 +125,7 @@ extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
#ifdef CONFIG_X86_IO_APIC
extern
int
skip_ioapic_setup
;
extern
int
acpi_irq_to_vector
(
u32
irq
);
/* deprecated in favor of acpi_gsi_to_irq */
extern
int
acpi_skip_timer_override
;
static
inline
void
disable_ioapic_setup
(
void
)
{
...
...
@@ -143,9 +151,15 @@ static inline void disable_ioapic_setup(void)
#ifdef CONFIG_ACPI_PCI
static
inline
void
acpi_noirq_set
(
void
)
{
acpi_noirq
=
1
;
}
static
inline
void
acpi_disable_pci
(
void
)
{
acpi_pci_disabled
=
1
;
acpi_noirq_set
();
}
extern
int
acpi_irq_balance_set
(
char
*
str
);
#else
static
inline
void
acpi_noirq_set
(
void
)
{
}
static
inline
void
acpi_disable_pci
(
void
)
{
}
static
inline
int
acpi_irq_balance_set
(
char
*
str
)
{
return
0
;
}
#endif
...
...
include/asm-ia64/acpi.h
View file @
4774cf7a
...
...
@@ -89,6 +89,7 @@ ia64_acpi_release_global_lock (unsigned int *lock)
((Acq) = ia64_acpi_release_global_lock((unsigned int *) GLptr))
#define acpi_disabled 0
/* ACPI always enabled on IA64 */
#define acpi_pci_disabled 0
/* ACPI PCI always enabled on IA64 */
#define acpi_strict 1
/* no ACPI spec workarounds on IA64 */
static
inline
void
disable_acpi
(
void
)
{
}
...
...
include/asm-x86_64/acpi.h
View file @
4774cf7a
...
...
@@ -106,8 +106,15 @@ extern int acpi_ioapic;
extern
int
acpi_noirq
;
extern
int
acpi_strict
;
extern
int
acpi_disabled
;
extern
int
acpi_pci_disabled
;
extern
int
acpi_ht
;
static
inline
void
disable_acpi
(
void
)
{
acpi_disabled
=
1
;
acpi_ht
=
0
;
}
static
inline
void
disable_acpi
(
void
)
{
acpi_disabled
=
1
;
acpi_ht
=
0
;
acpi_pci_disabled
=
1
;
acpi_noirq
=
1
;
}
/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */
#define FIX_ACPI_PAGES 4
...
...
@@ -121,9 +128,15 @@ extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
#ifdef CONFIG_ACPI_PCI
static
inline
void
acpi_noirq_set
(
void
)
{
acpi_noirq
=
1
;
}
static
inline
void
acpi_disable_pci
(
void
)
{
acpi_pci_disabled
=
1
;
acpi_noirq_set
();
}
extern
int
acpi_irq_balance_set
(
char
*
str
);
#else
static
inline
void
acpi_noirq_set
(
void
)
{
}
static
inline
void
acpi_disable_pci
(
void
)
{
}
static
inline
int
acpi_irq_balance_set
(
char
*
str
)
{
return
0
;
}
#endif
...
...
@@ -144,6 +157,7 @@ extern void acpi_reserve_bootmem(void);
#define boot_cpu_physical_apicid boot_cpu_id
extern
int
acpi_disabled
;
extern
int
acpi_pci_disabled
;
#define dmi_broken (0)
#define BROKEN_ACPI_Sx 0x0001
...
...
include/linux/acpi.h
View file @
4774cf7a
...
...
@@ -438,6 +438,7 @@ struct pci_dev;
int
acpi_pci_irq_enable
(
struct
pci_dev
*
dev
);
int
acpi_pci_irq_init
(
void
);
int
acpi_gsi_to_irq
(
u32
gsi
,
unsigned
int
*
irq
);
struct
acpi_pci_driver
{
struct
acpi_pci_driver
*
next
;
...
...
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