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
f3ce717e
Commit
f3ce717e
authored
Aug 14, 2013
by
Rafael J. Wysocki
Browse files
Options
Browse Files
Download
Plain Diff
Merge back earlier 'acpi-assorted' material
parents
d4e4ab86
e73d3136
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
60 additions
and
450 deletions
+60
-450
Documentation/laptops/asus-laptop.txt
Documentation/laptops/asus-laptop.txt
+4
-4
Documentation/laptops/sony-laptop.txt
Documentation/laptops/sony-laptop.txt
+4
-4
Documentation/laptops/thinkpad-acpi.txt
Documentation/laptops/thinkpad-acpi.txt
+6
-67
drivers/acpi/Kconfig
drivers/acpi/Kconfig
+0
-18
drivers/acpi/ac.c
drivers/acpi/ac.c
+0
-1
drivers/acpi/acpi_pad.c
drivers/acpi/acpi_pad.c
+0
-1
drivers/acpi/acpi_platform.c
drivers/acpi/acpi_platform.c
+13
-11
drivers/acpi/battery.c
drivers/acpi/battery.c
+0
-2
drivers/acpi/bus.c
drivers/acpi/bus.c
+0
-120
drivers/acpi/button.c
drivers/acpi/button.c
+0
-2
drivers/acpi/dock.c
drivers/acpi/dock.c
+1
-1
drivers/acpi/ec.c
drivers/acpi/ec.c
+1
-1
drivers/acpi/event.c
drivers/acpi/event.c
+0
-106
drivers/acpi/internal.h
drivers/acpi/internal.h
+1
-0
drivers/acpi/numa.c
drivers/acpi/numa.c
+1
-1
drivers/acpi/osl.c
drivers/acpi/osl.c
+3
-2
drivers/acpi/processor_core.c
drivers/acpi/processor_core.c
+1
-1
drivers/acpi/processor_driver.c
drivers/acpi/processor_driver.c
+0
-4
drivers/acpi/sbs.c
drivers/acpi/sbs.c
+2
-13
drivers/acpi/scan.c
drivers/acpi/scan.c
+22
-8
drivers/acpi/sleep.c
drivers/acpi/sleep.c
+1
-1
drivers/acpi/thermal.c
drivers/acpi/thermal.c
+0
-3
drivers/acpi/video.c
drivers/acpi/video.c
+0
-10
drivers/char/sonypi.c
drivers/char/sonypi.c
+0
-5
drivers/pci/hotplug/acpiphp_ibm.c
drivers/pci/hotplug/acpiphp_ibm.c
+0
-1
drivers/platform/x86/asus-laptop.c
drivers/platform/x86/asus-laptop.c
+0
-1
drivers/platform/x86/eeepc-laptop.c
drivers/platform/x86/eeepc-laptop.c
+0
-1
drivers/platform/x86/fujitsu-laptop.c
drivers/platform/x86/fujitsu-laptop.c
+0
-4
drivers/platform/x86/panasonic-laptop.c
drivers/platform/x86/panasonic-laptop.c
+0
-3
drivers/platform/x86/sony-laptop.c
drivers/platform/x86/sony-laptop.c
+0
-4
drivers/platform/x86/thinkpad_acpi.c
drivers/platform/x86/thinkpad_acpi.c
+0
-40
include/acpi/acpi_bus.h
include/acpi/acpi_bus.h
+0
-10
No files found.
Documentation/laptops/asus-laptop.txt
View file @
f3ce717e
...
...
@@ -8,8 +8,8 @@ http://acpi4asus.sf.net/
This driver provides support for extra features of ACPI-compatible ASUS laptops.
It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or
VICTOR XP7210 for example). It makes all the extra buttons generate
standard
ACPI events that go through /proc/acpi/events and input
events (like keyboards).
VICTOR XP7210 for example). It makes all the extra buttons generate
input
events (like keyboards).
On some models adds support for changing the display brightness and output,
switching the LCD backlight on and off, and most importantly, allows you to
blink those fancy LEDs intended for reporting mail and wireless status.
...
...
@@ -55,8 +55,8 @@ Usage
DSDT) to me.
That's all, now, all the events generated by the hotkeys of your laptop
should be reported
in your /proc/acpi/event entry
. You can check with
"acpi_
listen"
.
should be reported
via netlink events
. You can check with
"acpi_
genl monitor" (part of the acpica project)
.
Hotkeys are also reported as input keys (like keyboards) you can check
which key are supported using "xev" under X11.
...
...
Documentation/laptops/sony-laptop.txt
View file @
f3ce717e
...
...
@@ -12,10 +12,10 @@ Fn keys (hotkeys):
------------------
Some models report hotkeys through the SNC or SPIC devices, such events are
reported both through the ACPI subsystem as acpi events and through the INPUT
subsystem. See the logs of
acpid or /proc/acpi/event and
/proc/bus/input/devices to find out what those events are and which input
devices are created by the driver. Additionally, loading the driver with the
debug option will report all events
in the kernel log.
subsystem. See the logs of
/proc/bus/input/devices to find out what those
events are and which input devices are created by the driver.
Additionally, loading the driver with the debug option will report all events
in the kernel log.
The "scancodes" passed to the input system (that can be remapped with udev)
are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c
...
...
Documentation/laptops/thinkpad-acpi.txt
View file @
f3ce717e
...
...
@@ -329,20 +329,6 @@ sysfs notes:
This attribute has poll()/select() support.
hotkey_report_mode:
Returns the state of the procfs ACPI event report mode
filter for hot keys. If it is set to 1 (the default),
all hot key presses are reported both through the input
layer and also as ACPI events through procfs (but not
through netlink). If it is set to 2, hot key presses
are reported only through the input layer.
This attribute is read-only in kernels 2.6.23 or later,
and read-write on earlier kernels.
May return -EPERM (write access locked out by module
parameter) or -EACCES (read-only).
wakeup_reason:
Set to 1 if the system is waking up because the user
requested a bay ejection. Set to 2 if the system is
...
...
@@ -518,24 +504,21 @@ SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A
Non hotkey ACPI HKEY event map:
-------------------------------
Events that are not propagated by the driver, except for legacy
compatibility purposes when hotkey_report_mode is set to 1:
0x5001 Lid closed
0x5002 Lid opened
0x5009 Tablet swivel: switched to tablet mode
0x500A Tablet swivel: switched to normal mode
0x7000 Radio Switch may have changed state
Events that are never propagated by the driver:
0x2304 System is waking up from suspend to undock
0x2305 System is waking up from suspend to eject bay
0x2404 System is waking up from hibernation to undock
0x2405 System is waking up from hibernation to eject bay
0x5001 Lid closed
0x5002 Lid opened
0x5009 Tablet swivel: switched to tablet mode
0x500A Tablet swivel: switched to normal mode
0x5010 Brightness level changed/control event
0x6000 KEYBOARD: Numlock key pressed
0x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED)
0x7000 Radio Switch may have changed state
Events that are propagated by the driver to userspace:
...
...
@@ -574,50 +557,6 @@ operating system is to force either an immediate suspend or hibernate
cycle, or a system shutdown. Obviously, something is very wrong if this
happens.
Compatibility notes:
ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
supported the input layer, and sent events over the procfs ACPI event
interface.
To avoid sending duplicate events over the input layer and the ACPI
event interface, thinkpad-acpi 0.16 implements a module parameter
(hotkey_report_mode), and also a sysfs device attribute with the same
name.
Make no mistake here: userspace is expected to switch to using the input
layer interface of thinkpad-acpi, together with the ACPI netlink event
interface in kernels 2.6.23 and later, or with the ACPI procfs event
interface in kernels 2.6.22 and earlier.
If no hotkey_report_mode module parameter is specified (or it is set to
zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
and earlier, also allows one to change the hotkey_report_mode through
sysfs. In kernels 2.6.23 and later, where the netlink ACPI event
interface is available, hotkey_report_mode cannot be changed through
sysfs (it is read-only).
If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
be changed later through sysfs (any writes will return -EPERM to signal
that hotkey_report_mode was locked. On 2.6.23 and later, where
hotkey_report_mode cannot be changed at all, writes will return -EACCES).
hotkey_report_mode set to 1 makes the driver export through the procfs
ACPI event interface all hot key presses (which are *also* sent to the
input layer). This is a legacy compatibility behaviour, and it is also
the default mode of operation for the driver.
hotkey_report_mode set to 2 makes the driver filter out the hot key
presses from the procfs ACPI event interface, so these events will only
be sent through the input layer. Userspace that has been updated to use
the thinkpad-acpi input layer interface should set hotkey_report_mode to
2.
Hot key press events are never sent to the ACPI netlink event interface.
Really up-to-date userspace under kernel 2.6.23 and later is to use the
netlink interface and the input layer interface, and don't bother at all
with hotkey_report_mode.
Brightness hotkey notes:
...
...
drivers/acpi/Kconfig
View file @
f3ce717e
...
...
@@ -91,24 +91,6 @@ config ACPI_EC_DEBUGFS
Thus this option is a debug option that helps to write ACPI drivers
and can be used to identify ACPI code or EC firmware bugs.
config ACPI_PROC_EVENT
bool "Deprecated /proc/acpi/event support"
depends on PROC_FS
default y
help
A user-space daemon, acpid, typically reads /proc/acpi/event
and handles all ACPI-generated events.
These events are now delivered to user-space either
via the input layer or as netlink events.
This build option enables the old code for legacy
user-space implementation. After some time, this will
be moved under CONFIG_ACPI_PROCFS, and then deleted.
Say Y here to retain the old behaviour. Say N if your
user-space is newer than kernel 2.6.23 (September 2007).
config ACPI_AC
tristate "AC Adapter"
depends on X86
...
...
drivers/acpi/ac.c
View file @
f3ce717e
...
...
@@ -267,7 +267,6 @@ static void acpi_ac_notify(struct acpi_device *device, u32 event)
msleep
(
ac_sleep_before_get_state_ms
);
acpi_ac_get_state
(
ac
);
acpi_bus_generate_proc_event
(
device
,
event
,
(
u32
)
ac
->
state
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
(
u32
)
ac
->
state
);
...
...
drivers/acpi/acpi_pad.c
View file @
f3ce717e
...
...
@@ -452,7 +452,6 @@ static void acpi_pad_notify(acpi_handle handle, u32 event,
switch
(
event
)
{
case
ACPI_PROCESSOR_AGGREGATOR_NOTIFY
:
acpi_pad_handle_notify
(
handle
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
...
...
drivers/acpi/acpi_platform.c
View file @
f3ce717e
...
...
@@ -52,7 +52,7 @@ int acpi_create_platform_device(struct acpi_device *adev,
struct
platform_device_info
pdevinfo
;
struct
resource_list_entry
*
rentry
;
struct
list_head
resource_list
;
struct
resource
*
resources
;
struct
resource
*
resources
=
NULL
;
int
count
;
/* If the ACPI node already has a physical device attached, skip it. */
...
...
@@ -61,20 +61,22 @@ int acpi_create_platform_device(struct acpi_device *adev,
INIT_LIST_HEAD
(
&
resource_list
);
count
=
acpi_dev_get_resources
(
adev
,
&
resource_list
,
NULL
,
NULL
);
if
(
count
<
=
0
)
if
(
count
<
0
)
{
return
0
;
}
else
if
(
count
>
0
)
{
resources
=
kmalloc
(
count
*
sizeof
(
struct
resource
),
GFP_KERNEL
);
if
(
!
resources
)
{
dev_err
(
&
adev
->
dev
,
"No memory for resources
\n
"
);
acpi_dev_free_resource_list
(
&
resource_list
);
return
-
ENOMEM
;
}
count
=
0
;
list_for_each_entry
(
rentry
,
&
resource_list
,
node
)
resources
[
count
++
]
=
rentry
->
res
;
resources
=
kmalloc
(
count
*
sizeof
(
struct
resource
),
GFP_KERNEL
);
if
(
!
resources
)
{
dev_err
(
&
adev
->
dev
,
"No memory for resources
\n
"
);
acpi_dev_free_resource_list
(
&
resource_list
);
return
-
ENOMEM
;
}
count
=
0
;
list_for_each_entry
(
rentry
,
&
resource_list
,
node
)
resources
[
count
++
]
=
rentry
->
res
;
acpi_dev_free_resource_list
(
&
resource_list
);
memset
(
&
pdevinfo
,
0
,
sizeof
(
pdevinfo
));
/*
...
...
drivers/acpi/battery.c
View file @
f3ce717e
...
...
@@ -1036,8 +1036,6 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event)
if
(
event
==
ACPI_BATTERY_NOTIFY_INFO
)
acpi_battery_refresh
(
battery
);
acpi_battery_update
(
battery
);
acpi_bus_generate_proc_event
(
device
,
event
,
acpi_battery_present
(
battery
));
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
acpi_battery_present
(
battery
));
...
...
drivers/acpi/bus.c
View file @
f3ce717e
...
...
@@ -89,27 +89,6 @@ static struct dmi_system_id dsdt_dmi_table[] __initdata = {
Device Management
-------------------------------------------------------------------------- */
int
acpi_bus_get_device
(
acpi_handle
handle
,
struct
acpi_device
**
device
)
{
acpi_status
status
;
if
(
!
device
)
return
-
EINVAL
;
/* TBD: Support fixed-feature devices */
status
=
acpi_get_data
(
handle
,
acpi_bus_data_handler
,
(
void
**
)
device
);
if
(
ACPI_FAILURE
(
status
)
||
!*
device
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No context for object [%p]
\n
"
,
handle
));
return
-
ENODEV
;
}
return
0
;
}
EXPORT_SYMBOL
(
acpi_bus_get_device
);
acpi_status
acpi_bus_get_status_handle
(
acpi_handle
handle
,
unsigned
long
long
*
sta
)
{
...
...
@@ -345,104 +324,6 @@ static void acpi_bus_osc_support(void)
/* do we need to check other returned cap? Sounds no */
}
/* --------------------------------------------------------------------------
Event Management
-------------------------------------------------------------------------- */
#ifdef CONFIG_ACPI_PROC_EVENT
static
DEFINE_SPINLOCK
(
acpi_bus_event_lock
);
LIST_HEAD
(
acpi_bus_event_list
);
DECLARE_WAIT_QUEUE_HEAD
(
acpi_bus_event_queue
);
extern
int
event_is_open
;
int
acpi_bus_generate_proc_event4
(
const
char
*
device_class
,
const
char
*
bus_id
,
u8
type
,
int
data
)
{
struct
acpi_bus_event
*
event
;
unsigned
long
flags
;
/* drop event on the floor if no one's listening */
if
(
!
event_is_open
)
return
0
;
event
=
kzalloc
(
sizeof
(
struct
acpi_bus_event
),
GFP_ATOMIC
);
if
(
!
event
)
return
-
ENOMEM
;
strcpy
(
event
->
device_class
,
device_class
);
strcpy
(
event
->
bus_id
,
bus_id
);
event
->
type
=
type
;
event
->
data
=
data
;
spin_lock_irqsave
(
&
acpi_bus_event_lock
,
flags
);
list_add_tail
(
&
event
->
node
,
&
acpi_bus_event_list
);
spin_unlock_irqrestore
(
&
acpi_bus_event_lock
,
flags
);
wake_up_interruptible
(
&
acpi_bus_event_queue
);
return
0
;
}
EXPORT_SYMBOL_GPL
(
acpi_bus_generate_proc_event4
);
int
acpi_bus_generate_proc_event
(
struct
acpi_device
*
device
,
u8
type
,
int
data
)
{
if
(
!
device
)
return
-
EINVAL
;
return
acpi_bus_generate_proc_event4
(
device
->
pnp
.
device_class
,
device
->
pnp
.
bus_id
,
type
,
data
);
}
EXPORT_SYMBOL
(
acpi_bus_generate_proc_event
);
int
acpi_bus_receive_event
(
struct
acpi_bus_event
*
event
)
{
unsigned
long
flags
;
struct
acpi_bus_event
*
entry
=
NULL
;
DECLARE_WAITQUEUE
(
wait
,
current
);
if
(
!
event
)
return
-
EINVAL
;
if
(
list_empty
(
&
acpi_bus_event_list
))
{
set_current_state
(
TASK_INTERRUPTIBLE
);
add_wait_queue
(
&
acpi_bus_event_queue
,
&
wait
);
if
(
list_empty
(
&
acpi_bus_event_list
))
schedule
();
remove_wait_queue
(
&
acpi_bus_event_queue
,
&
wait
);
set_current_state
(
TASK_RUNNING
);
if
(
signal_pending
(
current
))
return
-
ERESTARTSYS
;
}
spin_lock_irqsave
(
&
acpi_bus_event_lock
,
flags
);
if
(
!
list_empty
(
&
acpi_bus_event_list
))
{
entry
=
list_entry
(
acpi_bus_event_list
.
next
,
struct
acpi_bus_event
,
node
);
list_del
(
&
entry
->
node
);
}
spin_unlock_irqrestore
(
&
acpi_bus_event_lock
,
flags
);
if
(
!
entry
)
return
-
ENODEV
;
memcpy
(
event
,
entry
,
sizeof
(
struct
acpi_bus_event
));
kfree
(
entry
);
return
0
;
}
#endif
/* CONFIG_ACPI_PROC_EVENT */
/* --------------------------------------------------------------------------
Notification Handling
-------------------------------------------------------------------------- */
...
...
@@ -715,7 +596,6 @@ static int __init acpi_bus_init(void)
{
int
result
;
acpi_status
status
;
extern
acpi_status
acpi_os_initialize1
(
void
);
acpi_os_initialize1
();
...
...
drivers/acpi/button.c
View file @
f3ce717e
...
...
@@ -303,8 +303,6 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)
pm_wakeup_event
(
&
device
->
dev
,
0
);
}
acpi_bus_generate_proc_event
(
device
,
event
,
++
button
->
pushed
);
break
;
default:
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
...
...
drivers/acpi/dock.c
View file @
f3ce717e
...
...
@@ -1055,7 +1055,7 @@ static int __init dock_add(acpi_handle handle)
*
* This is called by acpi_walk_namespace to look for dock stations and bays.
*/
static
__init
acpi_status
static
acpi_status
__init
find_dock_and_bay
(
acpi_handle
handle
,
u32
lvl
,
void
*
context
,
void
**
rv
)
{
if
(
is_dock
(
handle
)
||
is_ejectable_bay
(
handle
))
...
...
drivers/acpi/ec.c
View file @
f3ce717e
...
...
@@ -948,7 +948,7 @@ static int ec_enlarge_storm_threshold(const struct dmi_system_id *id)
return
0
;
}
static
struct
dmi_system_id
__initdata
ec_dmi_table
[]
=
{
static
struct
dmi_system_id
ec_dmi_table
[]
__initdata
=
{
{
ec_skip_dsdt_scan
,
"Compal JFL92"
,
{
DMI_MATCH
(
DMI_BIOS_VENDOR
,
"COMPAL"
),
...
...
drivers/acpi/event.c
View file @
f3ce717e
...
...
@@ -21,100 +21,6 @@
#define _COMPONENT ACPI_SYSTEM_COMPONENT
ACPI_MODULE_NAME
(
"event"
);
#ifdef CONFIG_ACPI_PROC_EVENT
/* Global vars for handling event proc entry */
static
DEFINE_SPINLOCK
(
acpi_system_event_lock
);
int
event_is_open
=
0
;
extern
struct
list_head
acpi_bus_event_list
;
extern
wait_queue_head_t
acpi_bus_event_queue
;
static
int
acpi_system_open_event
(
struct
inode
*
inode
,
struct
file
*
file
)
{
spin_lock_irq
(
&
acpi_system_event_lock
);
if
(
event_is_open
)
goto
out_busy
;
event_is_open
=
1
;
spin_unlock_irq
(
&
acpi_system_event_lock
);
return
0
;
out_busy:
spin_unlock_irq
(
&
acpi_system_event_lock
);
return
-
EBUSY
;
}
static
ssize_t
acpi_system_read_event
(
struct
file
*
file
,
char
__user
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
{
int
result
=
0
;
struct
acpi_bus_event
event
;
static
char
str
[
ACPI_MAX_STRING
];
static
int
chars_remaining
=
0
;
static
char
*
ptr
;
if
(
!
chars_remaining
)
{
memset
(
&
event
,
0
,
sizeof
(
struct
acpi_bus_event
));
if
((
file
->
f_flags
&
O_NONBLOCK
)
&&
(
list_empty
(
&
acpi_bus_event_list
)))
return
-
EAGAIN
;
result
=
acpi_bus_receive_event
(
&
event
);
if
(
result
)
return
result
;
chars_remaining
=
sprintf
(
str
,
"%s %s %08x %08x
\n
"
,
event
.
device_class
?
event
.
device_class
:
"<unknown>"
,
event
.
bus_id
?
event
.
bus_id
:
"<unknown>"
,
event
.
type
,
event
.
data
);
ptr
=
str
;
}
if
(
chars_remaining
<
count
)
{
count
=
chars_remaining
;
}
if
(
copy_to_user
(
buffer
,
ptr
,
count
))
return
-
EFAULT
;
*
ppos
+=
count
;
chars_remaining
-=
count
;
ptr
+=
count
;
return
count
;
}
static
int
acpi_system_close_event
(
struct
inode
*
inode
,
struct
file
*
file
)
{
spin_lock_irq
(
&
acpi_system_event_lock
);
event_is_open
=
0
;
spin_unlock_irq
(
&
acpi_system_event_lock
);
return
0
;
}
static
unsigned
int
acpi_system_poll_event
(
struct
file
*
file
,
poll_table
*
wait
)
{
poll_wait
(
file
,
&
acpi_bus_event_queue
,
wait
);
if
(
!
list_empty
(
&
acpi_bus_event_list
))
return
POLLIN
|
POLLRDNORM
;
return
0
;
}
static
const
struct
file_operations
acpi_system_event_ops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
acpi_system_open_event
,
.
read
=
acpi_system_read_event
,
.
release
=
acpi_system_close_event
,
.
poll
=
acpi_system_poll_event
,
.
llseek
=
default_llseek
,
};
#endif
/* CONFIG_ACPI_PROC_EVENT */
/* ACPI notifier chain */
static
BLOCKING_NOTIFIER_HEAD
(
acpi_chain_head
);
...
...
@@ -280,9 +186,6 @@ static int acpi_event_genetlink_init(void)
static
int
__init
acpi_event_init
(
void
)
{
#ifdef CONFIG_ACPI_PROC_EVENT
struct
proc_dir_entry
*
entry
;
#endif
int
error
=
0
;
if
(
acpi_disabled
)
...
...
@@ -293,15 +196,6 @@ static int __init acpi_event_init(void)
if
(
error
)
printk
(
KERN_WARNING
PREFIX
"Failed to create genetlink family for ACPI event
\n
"
);
#ifdef CONFIG_ACPI_PROC_EVENT
/* 'event' [R] */
entry
=
proc_create
(
"event"
,
S_IRUSR
,
acpi_root_dir
,
&
acpi_system_event_ops
);
if
(
!
entry
)
return
-
ENODEV
;
#endif
return
0
;
}
...
...
drivers/acpi/internal.h
View file @
f3ce717e
...
...
@@ -23,6 +23,7 @@
#define PREFIX "ACPI: "
acpi_status
acpi_os_initialize1
(
void
);
int
init_acpi_device_notify
(
void
);
int
acpi_scan_init
(
void
);
#ifdef CONFIG_ACPI_PCI_SLOT
...
...
drivers/acpi/numa.c
View file @
f3ce717e
...
...
@@ -159,7 +159,7 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header)
* distance than the others.
* Do some quick checks here and only use the SLIT if it passes.
*/
static
__init
in
t
slit_valid
(
struct
acpi_table_slit
*
slit
)
static
int
__ini
t
slit_valid
(
struct
acpi_table_slit
*
slit
)
{
int
i
,
j
;
int
d
=
slit
->
locality_count
;
...
...
drivers/acpi/osl.c
View file @
f3ce717e
...
...
@@ -52,6 +52,7 @@
#include <acpi/acpi.h>
#include <acpi/acpi_bus.h>
#include <acpi/processor.h>
#include "internal.h"
#define _COMPONENT ACPI_OS_SERVICES
ACPI_MODULE_NAME
(
"osl"
);
...
...
@@ -1351,8 +1352,8 @@ struct osi_setup_entry {
bool
enable
;
};
static
struct
osi_setup_entry
__initdata
osi_setup_entries
[
OSI_STRING_ENTRIES_MAX
]
=
{
static
struct
osi_setup_entry
osi_setup_entries
[
OSI_STRING_ENTRIES_MAX
]
__initdata
=
{
{
"Module Device"
,
true
},
{
"Processor Device"
,
true
},
{
"3.0 _SCP Extensions"
,
true
},
...
...
drivers/acpi/processor_core.c
View file @
f3ce717e
...
...
@@ -28,7 +28,7 @@ static int __init set_no_mwait(const struct dmi_system_id *id)
return
0
;
}
static
struct
dmi_system_id
__initdata
processor_idle_dmi_table
[]
=
{
static
struct
dmi_system_id
processor_idle_dmi_table
[]
__initdata
=
{
{
set_no_mwait
,
"Extensa 5220"
,
{
DMI_MATCH
(
DMI_BIOS_VENDOR
,
"Phoenix Technologies LTD"
),
...
...
drivers/acpi/processor_driver.c
View file @
f3ce717e
...
...
@@ -91,21 +91,17 @@ static void acpi_processor_notify(acpi_handle handle, u32 event, void *data)
acpi_processor_ppc_has_changed
(
pr
,
1
);
if
(
saved
==
pr
->
performance_platform_limit
)
break
;
acpi_bus_generate_proc_event
(
device
,
event
,
pr
->
performance_platform_limit
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
pr
->
performance_platform_limit
);
break
;
case
ACPI_PROCESSOR_NOTIFY_POWER
:
acpi_processor_cst_has_changed
(
pr
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
case
ACPI_PROCESSOR_NOTIFY_THROTTLING
:
acpi_processor_tstate_has_changed
(
pr
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
...
...
drivers/acpi/sbs.c
View file @
f3ce717e
...
...
@@ -873,14 +873,9 @@ static void acpi_sbs_callback(void *context)
u8
saved_charger_state
=
sbs
->
charger_present
;
u8
saved_battery_state
;
acpi_ac_get_present
(
sbs
);
if
(
sbs
->
charger_present
!=
saved_charger_state
)
{
#ifdef CONFIG_ACPI_PROC_EVENT
acpi_bus_generate_proc_event4
(
ACPI_AC_CLASS
,
ACPI_AC_DIR_NAME
,
ACPI_SBS_NOTIFY_STATUS
,
sbs
->
charger_present
);
#endif
if
(
sbs
->
charger_present
!=
saved_charger_state
)
kobject_uevent
(
&
sbs
->
charger
.
dev
->
kobj
,
KOBJ_CHANGE
);
}
if
(
sbs
->
manager_present
)
{
for
(
id
=
0
;
id
<
MAX_SBS_BAT
;
++
id
)
{
if
(
!
(
sbs
->
batteries_supported
&
(
1
<<
id
)))
...
...
@@ -890,12 +885,6 @@ static void acpi_sbs_callback(void *context)
acpi_battery_read
(
bat
);
if
(
saved_battery_state
==
bat
->
present
)
continue
;
#ifdef CONFIG_ACPI_PROC_EVENT
acpi_bus_generate_proc_event4
(
ACPI_BATTERY_CLASS
,
bat
->
name
,
ACPI_SBS_NOTIFY_STATUS
,
bat
->
present
);
#endif
kobject_uevent
(
&
bat
->
bat
.
dev
->
kobj
,
KOBJ_CHANGE
);
}
}
...
...
drivers/acpi/scan.c
View file @
f3ce717e
...
...
@@ -999,6 +999,28 @@ struct bus_type acpi_bus_type = {
.
uevent
=
acpi_device_uevent
,
};
static
void
acpi_bus_data_handler
(
acpi_handle
handle
,
void
*
context
)
{
/* Intentionally empty. */
}
int
acpi_bus_get_device
(
acpi_handle
handle
,
struct
acpi_device
**
device
)
{
acpi_status
status
;
if
(
!
device
)
return
-
EINVAL
;
status
=
acpi_get_data
(
handle
,
acpi_bus_data_handler
,
(
void
**
)
device
);
if
(
ACPI_FAILURE
(
status
)
||
!*
device
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"No context for object [%p]
\n
"
,
handle
));
return
-
ENODEV
;
}
return
0
;
}
EXPORT_SYMBOL_GPL
(
acpi_bus_get_device
);
int
acpi_device_add
(
struct
acpi_device
*
device
,
void
(
*
release
)(
struct
device
*
))
{
...
...
@@ -1210,14 +1232,6 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd)
}
EXPORT_SYMBOL_GPL
(
acpi_bus_get_ejd
);
void
acpi_bus_data_handler
(
acpi_handle
handle
,
void
*
context
)
{
/* TBD */
return
;
}
static
int
acpi_bus_extract_wakeup_device_power_package
(
acpi_handle
handle
,
struct
acpi_device_wakeup
*
wakeup
)
{
...
...
drivers/acpi/sleep.c
View file @
f3ce717e
...
...
@@ -141,7 +141,7 @@ static int __init init_nvs_nosave(const struct dmi_system_id *d)
return
0
;
}
static
struct
dmi_system_id
__initdata
acpisleep_dmi_table
[]
=
{
static
struct
dmi_system_id
acpisleep_dmi_table
[]
__initdata
=
{
{
.
callback
=
init_old_suspend_ordering
,
.
ident
=
"Abit KN9 (nForce4 variant)"
,
...
...
drivers/acpi/thermal.c
View file @
f3ce717e
...
...
@@ -769,7 +769,6 @@ static int thermal_notify(struct thermal_zone_device *thermal, int trip,
else
return
0
;
acpi_bus_generate_proc_event
(
tz
->
device
,
type
,
1
);
acpi_bus_generate_netlink_event
(
tz
->
device
->
pnp
.
device_class
,
dev_name
(
&
tz
->
device
->
dev
),
type
,
1
);
...
...
@@ -980,14 +979,12 @@ static void acpi_thermal_notify(struct acpi_device *device, u32 event)
case
ACPI_THERMAL_NOTIFY_THRESHOLDS
:
acpi_thermal_trips_update
(
tz
,
ACPI_TRIPS_REFRESH_THRESHOLDS
);
acpi_thermal_check
(
tz
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
case
ACPI_THERMAL_NOTIFY_DEVICES
:
acpi_thermal_trips_update
(
tz
,
ACPI_TRIPS_REFRESH_DEVICES
);
acpi_thermal_check
(
tz
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
0
);
break
;
...
...
drivers/acpi/video.c
View file @
f3ce717e
...
...
@@ -1577,7 +1577,6 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
switch
(
event
)
{
case
ACPI_VIDEO_NOTIFY_SWITCH
:
/* User requested a switch,
* most likely via hotkey. */
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_SWITCHVIDEOMODE
;
break
;
...
...
@@ -1585,20 +1584,16 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
* connector. */
acpi_video_device_enumerate
(
video
);
acpi_video_device_rebind
(
video
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_SWITCHVIDEOMODE
;
break
;
case
ACPI_VIDEO_NOTIFY_CYCLE
:
/* Cycle Display output hotkey pressed. */
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_SWITCHVIDEOMODE
;
break
;
case
ACPI_VIDEO_NOTIFY_NEXT_OUTPUT
:
/* Next Display output hotkey pressed. */
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_VIDEO_NEXT
;
break
;
case
ACPI_VIDEO_NOTIFY_PREV_OUTPUT
:
/* previous Display output hotkey pressed. */
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_VIDEO_PREV
;
break
;
...
...
@@ -1641,31 +1636,26 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
case
ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS
:
/* Cycle brightness */
if
(
brightness_switch_enabled
)
acpi_video_switch_brightness
(
video_device
,
event
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_BRIGHTNESS_CYCLE
;
break
;
case
ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS
:
/* Increase brightness */
if
(
brightness_switch_enabled
)
acpi_video_switch_brightness
(
video_device
,
event
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_BRIGHTNESSUP
;
break
;
case
ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS
:
/* Decrease brightness */
if
(
brightness_switch_enabled
)
acpi_video_switch_brightness
(
video_device
,
event
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_BRIGHTNESSDOWN
;
break
;
case
ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS
:
/* zero brightness */
if
(
brightness_switch_enabled
)
acpi_video_switch_brightness
(
video_device
,
event
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_BRIGHTNESS_ZERO
;
break
;
case
ACPI_VIDEO_NOTIFY_DISPLAY_OFF
:
/* display device off */
if
(
brightness_switch_enabled
)
acpi_video_switch_brightness
(
video_device
,
event
);
acpi_bus_generate_proc_event
(
device
,
event
,
0
);
keycode
=
KEY_DISPLAY_OFF
;
break
;
default:
...
...
drivers/char/sonypi.c
View file @
f3ce717e
...
...
@@ -876,11 +876,6 @@ static irqreturn_t sonypi_irq(int irq, void *dev_id)
if
(
useinput
)
sonypi_report_input_event
(
event
);
#ifdef CONFIG_ACPI
if
(
sonypi_acpi_device
)
acpi_bus_generate_proc_event
(
sonypi_acpi_device
,
1
,
event
);
#endif
kfifo_in_locked
(
&
sonypi_device
.
fifo
,
(
unsigned
char
*
)
&
event
,
sizeof
(
event
),
&
sonypi_device
.
fifo_lock
);
kill_fasync
(
&
sonypi_device
.
fifo_async
,
SIGIO
,
POLL_IN
);
...
...
drivers/pci/hotplug/acpiphp_ibm.c
View file @
f3ce717e
...
...
@@ -270,7 +270,6 @@ static void ibm_handle_events(acpi_handle handle, u32 event, void *context)
if
(
subevent
==
0x80
)
{
dbg
(
"%s: generationg bus event
\n
"
,
__func__
);
acpi_bus_generate_proc_event
(
note
->
device
,
note
->
event
,
detail
);
acpi_bus_generate_netlink_event
(
note
->
device
->
pnp
.
device_class
,
dev_name
(
&
note
->
device
->
dev
),
note
->
event
,
detail
);
...
...
drivers/platform/x86/asus-laptop.c
View file @
f3ce717e
...
...
@@ -1543,7 +1543,6 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event)
/* TODO Find a better way to handle events count. */
count
=
asus
->
event_count
[
event
%
128
]
++
;
acpi_bus_generate_proc_event
(
asus
->
device
,
event
,
count
);
acpi_bus_generate_netlink_event
(
asus
->
device
->
pnp
.
device_class
,
dev_name
(
&
asus
->
device
->
dev
),
event
,
count
);
...
...
drivers/platform/x86/eeepc-laptop.c
View file @
f3ce717e
...
...
@@ -1269,7 +1269,6 @@ static void eeepc_acpi_notify(struct acpi_device *device, u32 event)
if
(
event
>
ACPI_MAX_SYS_NOTIFY
)
return
;
count
=
eeepc
->
event_count
[
event
%
128
]
++
;
acpi_bus_generate_proc_event
(
device
,
event
,
count
);
acpi_bus_generate_netlink_event
(
device
->
pnp
.
device_class
,
dev_name
(
&
device
->
dev
),
event
,
count
);
...
...
drivers/platform/x86/fujitsu-laptop.c
View file @
f3ce717e
...
...
@@ -773,8 +773,6 @@ static void acpi_fujitsu_notify(struct acpi_device *device, u32 event)
else
set_lcd_level
(
newb
);
}
acpi_bus_generate_proc_event
(
fujitsu
->
dev
,
ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS
,
0
);
keycode
=
KEY_BRIGHTNESSUP
;
}
else
if
(
oldb
>
newb
)
{
if
(
disable_brightness_adjust
!=
1
)
{
...
...
@@ -783,8 +781,6 @@ static void acpi_fujitsu_notify(struct acpi_device *device, u32 event)
else
set_lcd_level
(
newb
);
}
acpi_bus_generate_proc_event
(
fujitsu
->
dev
,
ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS
,
0
);
keycode
=
KEY_BRIGHTNESSDOWN
;
}
break
;
...
...
drivers/platform/x86/panasonic-laptop.c
View file @
f3ce717e
...
...
@@ -464,9 +464,6 @@ static void acpi_pcc_generate_keyinput(struct pcc_acpi *pcc)
"error getting hotkey status
\n
"
));
return
;
}
acpi_bus_generate_proc_event
(
pcc
->
device
,
HKEY_NOTIFY
,
result
);
if
(
!
sparse_keymap_report_event
(
hotk_input_dev
,
result
&
0xf
,
result
&
0x80
,
false
))
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
...
...
drivers/platform/x86/sony-laptop.c
View file @
f3ce717e
...
...
@@ -1275,9 +1275,6 @@ static void sony_nc_notify(struct acpi_device *device, u32 event)
ev_type
=
HOTKEY
;
sony_laptop_report_input_event
(
real_ev
);
}
acpi_bus_generate_proc_event
(
sony_nc_acpi_device
,
ev_type
,
real_ev
);
acpi_bus_generate_netlink_event
(
sony_nc_acpi_device
->
pnp
.
device_class
,
dev_name
(
&
sony_nc_acpi_device
->
dev
),
ev_type
,
real_ev
);
}
...
...
@@ -4243,7 +4240,6 @@ static irqreturn_t sony_pic_irq(int irq, void *dev_id)
found:
sony_laptop_report_input_event
(
device_event
);
acpi_bus_generate_proc_event
(
dev
->
acpi_dev
,
1
,
device_event
);
sonypi_compat_report_event
(
device_event
);
return
IRQ_HANDLED
;
}
...
...
drivers/platform/x86/thinkpad_acpi.c
View file @
f3ce717e
...
...
@@ -2022,8 +2022,6 @@ static u32 hotkey_driver_mask; /* events needed by the driver */
static
u32
hotkey_user_mask
;
/* events visible to userspace */
static
u32
hotkey_acpi_mask
;
/* events enabled in firmware */
static
unsigned
int
hotkey_report_mode
;
static
u16
*
hotkey_keycode_map
;
static
struct
attribute_set
*
hotkey_dev_attributes
;
...
...
@@ -2282,10 +2280,6 @@ static struct tp_acpi_drv_struct ibm_hotkey_acpidriver;
static
void
tpacpi_hotkey_send_key
(
unsigned
int
scancode
)
{
tpacpi_input_send_key_masked
(
scancode
);
if
(
hotkey_report_mode
<
2
)
{
acpi_bus_generate_proc_event
(
ibm_hotkey_acpidriver
.
device
,
0x80
,
TP_HKEY_EV_HOTKEY_BASE
+
scancode
);
}
}
static
void
hotkey_read_nvram
(
struct
tp_nvram_state
*
n
,
const
u32
m
)
...
...
@@ -2882,18 +2876,6 @@ static void hotkey_tablet_mode_notify_change(void)
"hotkey_tablet_mode"
);
}
/* sysfs hotkey report_mode -------------------------------------------- */
static
ssize_t
hotkey_report_mode_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
return
snprintf
(
buf
,
PAGE_SIZE
,
"%d
\n
"
,
(
hotkey_report_mode
!=
0
)
?
hotkey_report_mode
:
1
);
}
static
struct
device_attribute
dev_attr_hotkey_report_mode
=
__ATTR
(
hotkey_report_mode
,
S_IRUGO
,
hotkey_report_mode_show
,
NULL
);
/* sysfs wakeup reason (pollable) -------------------------------------- */
static
ssize_t
hotkey_wakeup_reason_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
...
...
@@ -2935,7 +2917,6 @@ static struct attribute *hotkey_attributes[] __initdata = {
&
dev_attr_hotkey_enable
.
attr
,
&
dev_attr_hotkey_bios_enabled
.
attr
,
&
dev_attr_hotkey_bios_mask
.
attr
,
&
dev_attr_hotkey_report_mode
.
attr
,
&
dev_attr_hotkey_wakeup_reason
.
attr
,
&
dev_attr_hotkey_wakeup_hotunplug_complete
.
attr
,
&
dev_attr_hotkey_mask
.
attr
,
...
...
@@ -3439,11 +3420,6 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
"initial masks: user=0x%08x, fw=0x%08x, poll=0x%08x
\n
"
,
hotkey_user_mask
,
hotkey_acpi_mask
,
hotkey_source_mask
);
dbg_printk
(
TPACPI_DBG_INIT
|
TPACPI_DBG_HKEY
,
"legacy ibm/hotkey event reporting over procfs %s
\n
"
,
(
hotkey_report_mode
<
2
)
?
"enabled"
:
"disabled"
);
tpacpi_inputdev
->
open
=
&
hotkey_inputdev_open
;
tpacpi_inputdev
->
close
=
&
hotkey_inputdev_close
;
...
...
@@ -3737,13 +3713,6 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
"event happened to %s
\n
"
,
TPACPI_MAIL
);
}
/* Legacy events */
if
(
!
ignore_acpi_ev
&&
(
send_acpi_ev
||
hotkey_report_mode
<
2
))
{
acpi_bus_generate_proc_event
(
ibm
->
acpi
->
device
,
event
,
hkey
);
}
/* netlink events */
if
(
!
ignore_acpi_ev
&&
send_acpi_ev
)
{
acpi_bus_generate_netlink_event
(
...
...
@@ -8840,11 +8809,6 @@ module_param(brightness_enable, uint, 0444);
MODULE_PARM_DESC
(
brightness_enable
,
"Enables backlight control when 1, disables when 0"
);
module_param
(
hotkey_report_mode
,
uint
,
0444
);
MODULE_PARM_DESC
(
hotkey_report_mode
,
"used for backwards compatibility with userspace, "
"see documentation"
);
#ifdef CONFIG_THINKPAD_ACPI_ALSA_SUPPORT
module_param_named
(
volume_mode
,
volume_mode
,
uint
,
0444
);
MODULE_PARM_DESC
(
volume_mode
,
...
...
@@ -8975,10 +8939,6 @@ static int __init thinkpad_acpi_module_init(void)
tpacpi_lifecycle
=
TPACPI_LIFE_INIT
;
/* Parameter checking */
if
(
hotkey_report_mode
>
2
)
return
-
EINVAL
;
/* Driver-level probe */
ret
=
get_thinkpad_model_data
(
&
thinkpad_id
);
...
...
include/acpi/acpi_bus.h
View file @
f3ce717e
...
...
@@ -359,7 +359,6 @@ extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
*/
int
acpi_bus_get_device
(
acpi_handle
handle
,
struct
acpi_device
**
device
);
void
acpi_bus_data_handler
(
acpi_handle
handle
,
void
*
context
);
acpi_status
acpi_bus_get_status_handle
(
acpi_handle
handle
,
unsigned
long
long
*
sta
);
int
acpi_bus_get_status
(
struct
acpi_device
*
device
);
...
...
@@ -379,15 +378,6 @@ bool acpi_bus_can_wakeup(acpi_handle handle);
static
inline
bool
acpi_bus_can_wakeup
(
acpi_handle
handle
)
{
return
false
;
}
#endif
#ifdef CONFIG_ACPI_PROC_EVENT
int
acpi_bus_generate_proc_event
(
struct
acpi_device
*
device
,
u8
type
,
int
data
);
int
acpi_bus_generate_proc_event4
(
const
char
*
class
,
const
char
*
bid
,
u8
type
,
int
data
);
int
acpi_bus_receive_event
(
struct
acpi_bus_event
*
event
);
#else
static
inline
int
acpi_bus_generate_proc_event
(
struct
acpi_device
*
device
,
u8
type
,
int
data
)
{
return
0
;
}
#endif
void
acpi_scan_lock_acquire
(
void
);
void
acpi_scan_lock_release
(
void
);
int
acpi_scan_add_handler
(
struct
acpi_scan_handler
*
handler
);
...
...
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