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
b3a026dc
Commit
b3a026dc
authored
Apr 27, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/src/linux-acpi-test-2.6.5
into intel.com:/home/lenb/src/linux-acpi-test-2.6.6
parents
32f82c01
62560d62
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
147 additions
and
57 deletions
+147
-57
arch/i386/kernel/setup.c
arch/i386/kernel/setup.c
+2
-0
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
+27
-1
drivers/acpi/fan.c
drivers/acpi/fan.c
+3
-0
drivers/acpi/pci_link.c
drivers/acpi/pci_link.c
+8
-0
drivers/acpi/processor.c
drivers/acpi/processor.c
+12
-0
drivers/acpi/thermal.c
drivers/acpi/thermal.c
+7
-0
drivers/acpi/toshiba_acpi.c
drivers/acpi/toshiba_acpi.c
+5
-0
No files found.
arch/i386/kernel/setup.c
View file @
b3a026dc
...
...
@@ -605,8 +605,10 @@ 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 */
...
...
drivers/acpi/ac.c
View file @
b3a026dc
...
...
@@ -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 @
b3a026dc
...
...
@@ -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 @
b3a026dc
...
...
@@ -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 @
b3a026dc
...
...
@@ -187,9 +187,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 +206,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 +220,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 +232,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 +510,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
)
{
...
...
drivers/acpi/fan.c
View file @
b3a026dc
...
...
@@ -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/pci_link.c
View file @
b3a026dc
...
...
@@ -371,6 +371,10 @@ acpi_pci_link_set (
resource
.
res
.
length
=
sizeof
(
struct
acpi_resource
);
resource
.
res
.
data
.
irq
.
edge_level
=
link
->
irq
.
edge_level
;
resource
.
res
.
data
.
irq
.
active_high_low
=
link
->
irq
.
active_high_low
;
if
(
link
->
irq
.
edge_level
==
ACPI_EDGE_SENSITIVE
)
resource
.
res
.
data
.
irq
.
shared_exclusive
=
ACPI_EXCLUSIVE
;
else
resource
.
res
.
data
.
irq
.
shared_exclusive
=
ACPI_SHARED
;
resource
.
res
.
data
.
irq
.
number_of_interrupts
=
1
;
resource
.
res
.
data
.
irq
.
interrupts
[
0
]
=
irq
;
break
;
...
...
@@ -381,6 +385,10 @@ acpi_pci_link_set (
resource
.
res
.
data
.
extended_irq
.
producer_consumer
=
ACPI_CONSUMER
;
resource
.
res
.
data
.
extended_irq
.
edge_level
=
link
->
irq
.
edge_level
;
resource
.
res
.
data
.
extended_irq
.
active_high_low
=
link
->
irq
.
active_high_low
;
if
(
link
->
irq
.
edge_level
==
ACPI_EDGE_SENSITIVE
)
resource
.
res
.
data
.
irq
.
shared_exclusive
=
ACPI_EXCLUSIVE
;
else
resource
.
res
.
data
.
irq
.
shared_exclusive
=
ACPI_SHARED
;
resource
.
res
.
data
.
extended_irq
.
number_of_interrupts
=
1
;
resource
.
res
.
data
.
extended_irq
.
interrupts
[
0
]
=
irq
;
/* ignore resource_source, it's optional */
...
...
drivers/acpi/processor.c
View file @
b3a026dc
...
...
@@ -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/thermal.c
View file @
b3a026dc
...
...
@@ -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 @
b3a026dc
...
...
@@ -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
);
...
...
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