Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
7b806016
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7b806016
编写于
4月 24, 2009
作者:
L
Len Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'thinkpad-acpi' into release
上级
60cd8adc
b57f7e7b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
46 addition
and
39 deletion
+46
-39
Documentation/laptops/thinkpad-acpi.txt
Documentation/laptops/thinkpad-acpi.txt
+2
-2
drivers/platform/x86/thinkpad_acpi.c
drivers/platform/x86/thinkpad_acpi.c
+44
-37
未找到文件。
Documentation/laptops/thinkpad-acpi.txt
浏览文件 @
7b806016
ThinkPad ACPI Extras Driver
Version 0.2
2
November 23rd, 2008
Version 0.2
3
April 10th, 2009
Borislav Deianov <borislav@users.sf.net>
Henrique de Moraes Holschuh <hmh@hmh.eng.br>
...
...
drivers/platform/x86/thinkpad_acpi.c
浏览文件 @
7b806016
...
...
@@ -21,7 +21,7 @@
* 02110-1301, USA.
*/
#define TPACPI_VERSION "0.2
2
"
#define TPACPI_VERSION "0.2
3
"
#define TPACPI_SYSFS_VERSION 0x020300
/*
...
...
@@ -303,11 +303,17 @@ static u32 dbg_level;
static
struct
workqueue_struct
*
tpacpi_wq
;
enum
led_status_t
{
TPACPI_LED_OFF
=
0
,
TPACPI_LED_ON
,
TPACPI_LED_BLINK
,
};
/* Special LED class that can defer work */
struct
tpacpi_led_classdev
{
struct
led_classdev
led_classdev
;
struct
work_struct
work
;
enum
led_
brightness
new_brightness
;
enum
led_
status_t
new_state
;
unsigned
int
led
;
};
...
...
@@ -2946,12 +2952,18 @@ static int hotkey_read(char *p)
return
len
;
}
static
void
hotkey_enabledisable_warn
(
void
)
static
void
hotkey_enabledisable_warn
(
bool
enable
)
{
tpacpi_log_usertask
(
"procfs hotkey enable/disable"
);
WARN
(
1
,
TPACPI_WARN
"hotkey enable/disable functionality has been "
"removed from the driver. Hotkeys are always enabled.
\n
"
);
if
(
!
WARN
((
tpacpi_lifecycle
==
TPACPI_LIFE_RUNNING
||
!
enable
),
TPACPI_WARN
"hotkey enable/disable functionality has been "
"removed from the driver. Hotkeys are always "
"enabled
\n
"
))
printk
(
TPACPI_ERR
"Please remove the hotkey=enable module "
"parameter, it is deprecated. Hotkeys are always "
"enabled
\n
"
);
}
static
int
hotkey_write
(
char
*
buf
)
...
...
@@ -2971,9 +2983,9 @@ static int hotkey_write(char *buf)
res
=
0
;
while
((
cmd
=
next_cmd
(
&
buf
)))
{
if
(
strlencmp
(
cmd
,
"enable"
)
==
0
)
{
hotkey_enabledisable_warn
();
hotkey_enabledisable_warn
(
1
);
}
else
if
(
strlencmp
(
cmd
,
"disable"
)
==
0
)
{
hotkey_enabledisable_warn
();
hotkey_enabledisable_warn
(
0
);
res
=
-
EPERM
;
}
else
if
(
strlencmp
(
cmd
,
"reset"
)
==
0
)
{
mask
=
hotkey_orig_mask
;
...
...
@@ -4207,7 +4219,7 @@ static void light_set_status_worker(struct work_struct *work)
container_of
(
work
,
struct
tpacpi_led_classdev
,
work
);
if
(
likely
(
tpacpi_lifecycle
==
TPACPI_LIFE_RUNNING
))
light_set_status
((
data
->
new_
brightness
!=
LED_OFF
));
light_set_status
((
data
->
new_
state
!=
TPACPI_
LED_OFF
));
}
static
void
light_sysfs_set
(
struct
led_classdev
*
led_cdev
,
...
...
@@ -4217,7 +4229,8 @@ static void light_sysfs_set(struct led_classdev *led_cdev,
container_of
(
led_cdev
,
struct
tpacpi_led_classdev
,
led_classdev
);
data
->
new_brightness
=
brightness
;
data
->
new_state
=
(
brightness
!=
LED_OFF
)
?
TPACPI_LED_ON
:
TPACPI_LED_OFF
;
queue_work
(
tpacpi_wq
,
&
data
->
work
);
}
...
...
@@ -4724,12 +4737,6 @@ enum { /* For TPACPI_LED_OLD */
TPACPI_LED_EC_HLMS
=
0x0e
,
/* EC reg to select led to command */
};
enum
led_status_t
{
TPACPI_LED_OFF
=
0
,
TPACPI_LED_ON
,
TPACPI_LED_BLINK
,
};
static
enum
led_access_mode
led_supported
;
TPACPI_HANDLE
(
led
,
ec
,
"SLED"
,
/* 570 */
...
...
@@ -4841,23 +4848,13 @@ static int led_set_status(const unsigned int led,
return
rc
;
}
static
void
led_sysfs_set_status
(
unsigned
int
led
,
enum
led_brightness
brightness
)
{
led_set_status
(
led
,
(
brightness
==
LED_OFF
)
?
TPACPI_LED_OFF
:
(
tpacpi_led_state_cache
[
led
]
==
TPACPI_LED_BLINK
)
?
TPACPI_LED_BLINK
:
TPACPI_LED_ON
);
}
static
void
led_set_status_worker
(
struct
work_struct
*
work
)
{
struct
tpacpi_led_classdev
*
data
=
container_of
(
work
,
struct
tpacpi_led_classdev
,
work
);
if
(
likely
(
tpacpi_lifecycle
==
TPACPI_LIFE_RUNNING
))
led_s
ysfs_set_status
(
data
->
led
,
data
->
new_brightness
);
led_s
et_status
(
data
->
led
,
data
->
new_state
);
}
static
void
led_sysfs_set
(
struct
led_classdev
*
led_cdev
,
...
...
@@ -4866,7 +4863,13 @@ static void led_sysfs_set(struct led_classdev *led_cdev,
struct
tpacpi_led_classdev
*
data
=
container_of
(
led_cdev
,
struct
tpacpi_led_classdev
,
led_classdev
);
data
->
new_brightness
=
brightness
;
if
(
brightness
==
LED_OFF
)
data
->
new_state
=
TPACPI_LED_OFF
;
else
if
(
tpacpi_led_state_cache
[
data
->
led
]
!=
TPACPI_LED_BLINK
)
data
->
new_state
=
TPACPI_LED_ON
;
else
data
->
new_state
=
TPACPI_LED_BLINK
;
queue_work
(
tpacpi_wq
,
&
data
->
work
);
}
...
...
@@ -4884,7 +4887,7 @@ static int led_sysfs_blink_set(struct led_classdev *led_cdev,
}
else
if
((
*
delay_on
!=
500
)
||
(
*
delay_off
!=
500
))
return
-
EINVAL
;
data
->
new_
brightness
=
TPACPI_LED_BLINK
;
data
->
new_
state
=
TPACPI_LED_BLINK
;
queue_work
(
tpacpi_wq
,
&
data
->
work
);
return
0
;
...
...
@@ -7857,6 +7860,15 @@ static int __init thinkpad_acpi_module_init(void)
MODULE_ALIAS
(
TPACPI_DRVR_SHORTNAME
);
/*
* This will autoload the driver in almost every ThinkPad
* in widespread use.
*
* Only _VERY_ old models, like the 240, 240x and 570 lack
* the HKEY event interface.
*/
MODULE_DEVICE_TABLE
(
acpi
,
ibm_htk_device_ids
);
/*
* DMI matching for module autoloading
*
...
...
@@ -7869,18 +7881,13 @@ MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
#define IBM_BIOS_MODULE_ALIAS(__type) \
MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*")
/* Non-ancient thinkpads */
MODULE_ALIAS
(
"dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*"
);
MODULE_ALIAS
(
"dmi:bvnLENOVO:*:svnLENOVO:*:pvrThinkPad*:rvnLENOVO:*"
);
/* Ancient thinkpad BIOSes have to be identified by
* BIOS type or model number, and there are far less
* BIOS types than model numbers... */
IBM_BIOS_MODULE_ALIAS
(
"I[BDHIMNOTWVYZ]"
);
IBM_BIOS_MODULE_ALIAS
(
"1[0368A-GIKM-PST]"
);
IBM_BIOS_MODULE_ALIAS
(
"K[UX-Z]"
);
IBM_BIOS_MODULE_ALIAS
(
"I[MU]"
);
/* 570, 570e */
MODULE_AUTHOR
(
"Borislav Deianov, Henrique de Moraes Holschuh"
);
MODULE_AUTHOR
(
"Borislav Deianov <borislav@users.sf.net>"
);
MODULE_AUTHOR
(
"Henrique de Moraes Holschuh <hmh@hmh.eng.br>"
);
MODULE_DESCRIPTION
(
TPACPI_DESC
);
MODULE_VERSION
(
TPACPI_VERSION
);
MODULE_LICENSE
(
"GPL"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录