Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
2d8fe675
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
2d8fe675
编写于
5月 24, 2014
作者:
R
Rafael J. Wysocki
浏览文件
操作
浏览文件
下载
差异文件
Merge back earlier 'acpi-video' material.
上级
07d1d29e
9404cd95
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
101 addition
and
68 deletion
+101
-68
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+1
-1
drivers/acpi/video.c
drivers/acpi/video.c
+89
-66
drivers/platform/x86/acer-wmi.c
drivers/platform/x86/acer-wmi.c
+9
-1
include/acpi/video.h
include/acpi/video.h
+2
-0
未找到文件。
Documentation/kernel-parameters.txt
浏览文件 @
2d8fe675
...
...
@@ -3461,7 +3461,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
the allocated input device; If set to 0, video driver
will only send out the event without touching backlight
brightness level.
default:
1
default:
0
virtio_mmio.device=
[VMMIO] Memory mapped virtio (platform) device.
...
...
drivers/acpi/video.c
浏览文件 @
2d8fe675
...
...
@@ -68,7 +68,7 @@ MODULE_AUTHOR("Bruno Ducrot");
MODULE_DESCRIPTION
(
"ACPI Video Driver"
);
MODULE_LICENSE
(
"GPL"
);
static
bool
brightness_switch_enabled
=
1
;
static
bool
brightness_switch_enabled
;
module_param
(
brightness_switch_enabled
,
bool
,
0644
);
/*
...
...
@@ -150,6 +150,7 @@ struct acpi_video_enumerated_device {
struct
acpi_video_bus
{
struct
acpi_device
*
device
;
bool
backlight_registered
;
u8
dos_setting
;
struct
acpi_video_enumerated_device
*
attached_array
;
u8
attached_count
;
...
...
@@ -1658,7 +1659,6 @@ acpi_video_bus_match(acpi_handle handle, u32 level, void *context,
static
void
acpi_video_dev_register_backlight
(
struct
acpi_video_device
*
device
)
{
if
(
acpi_video_verify_backlight_support
())
{
struct
backlight_properties
props
;
struct
pci_dev
*
pdev
;
acpi_handle
acpi_parent
;
...
...
@@ -1706,11 +1706,9 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
device
->
dev
,
&
video_cooling_ops
);
if
(
IS_ERR
(
device
->
cooling_dev
))
{
/*
* Set cooling_dev to NULL so we don't crash trying to
* free it.
* Also, why the hell we are returning early and
* not attempt to register video output if cooling
* device registration failed?
* Set cooling_dev to NULL so we don't crash trying to free it.
* Also, why the hell we are returning early and not attempt to
* register video output if cooling device registration failed?
* -- dtor
*/
device
->
cooling_dev
=
NULL
;
...
...
@@ -1728,18 +1726,22 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
&
device
->
dev
->
dev
.
kobj
,
"device"
);
if
(
result
)
printk
(
KERN_ERR
PREFIX
"Create sysfs link
\n
"
);
}
}
static
int
acpi_video_bus_register_backlight
(
struct
acpi_video_bus
*
video
)
{
struct
acpi_video_device
*
dev
;
if
(
!
acpi_video_verify_backlight_support
())
return
0
;
mutex_lock
(
&
video
->
device_list_lock
);
list_for_each_entry
(
dev
,
&
video
->
video_device_list
,
entry
)
acpi_video_dev_register_backlight
(
dev
);
mutex_unlock
(
&
video
->
device_list_lock
);
video
->
backlight_registered
=
true
;
video
->
pm_nb
.
notifier_call
=
acpi_video_resume
;
video
->
pm_nb
.
priority
=
0
;
return
register_pm_notifier
(
&
video
->
pm_nb
);
...
...
@@ -1767,13 +1769,20 @@ static void acpi_video_dev_unregister_backlight(struct acpi_video_device *device
static
int
acpi_video_bus_unregister_backlight
(
struct
acpi_video_bus
*
video
)
{
struct
acpi_video_device
*
dev
;
int
error
=
unregister_pm_notifier
(
&
video
->
pm_nb
);
int
error
;
if
(
!
video
->
backlight_registered
)
return
0
;
error
=
unregister_pm_notifier
(
&
video
->
pm_nb
);
mutex_lock
(
&
video
->
device_list_lock
);
list_for_each_entry
(
dev
,
&
video
->
video_device_list
,
entry
)
acpi_video_dev_unregister_backlight
(
dev
);
mutex_unlock
(
&
video
->
device_list_lock
);
video
->
backlight_registered
=
false
;
return
error
;
}
...
...
@@ -2061,6 +2070,20 @@ void acpi_video_unregister(void)
}
EXPORT_SYMBOL
(
acpi_video_unregister
);
void
acpi_video_unregister_backlight
(
void
)
{
struct
acpi_video_bus
*
video
;
if
(
!
register_count
)
return
;
mutex_lock
(
&
video_list_lock
);
list_for_each_entry
(
video
,
&
video_bus_head
,
entry
)
acpi_video_bus_unregister_backlight
(
video
);
mutex_unlock
(
&
video_list_lock
);
}
EXPORT_SYMBOL
(
acpi_video_unregister_backlight
);
/*
* This is kind of nasty. Hardware using Intel chipsets may require
* the video opregion code to be run first in order to initialise
...
...
drivers/platform/x86/acer-wmi.c
浏览文件 @
2d8fe675
...
...
@@ -570,6 +570,14 @@ static const struct dmi_system_id video_vendor_dmi_table[] = {
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"Aspire 5750"
),
},
},
{
.
callback
=
video_set_backlight_video_vendor
,
.
ident
=
"Acer Aspire 5741"
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"Acer"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"Aspire 5741"
),
},
},
{}
};
...
...
@@ -2228,7 +2236,7 @@ static int __init acer_wmi_init(void)
pr_info
(
"Brightness must be controlled by acpi video driver
\n
"
);
}
else
{
pr_info
(
"Disabling ACPI video driver
\n
"
);
acpi_video_unregister
();
acpi_video_unregister
_backlight
();
}
if
(
wmi_has_guid
(
WMID_GUID3
))
{
...
...
include/acpi/video.h
浏览文件 @
2d8fe675
...
...
@@ -19,11 +19,13 @@ struct acpi_device;
#if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE)
extern
int
acpi_video_register
(
void
);
extern
void
acpi_video_unregister
(
void
);
extern
void
acpi_video_unregister_backlight
(
void
);
extern
int
acpi_video_get_edid
(
struct
acpi_device
*
device
,
int
type
,
int
device_id
,
void
**
edid
);
#else
static
inline
int
acpi_video_register
(
void
)
{
return
0
;
}
static
inline
void
acpi_video_unregister
(
void
)
{
return
;
}
static
inline
void
acpi_video_unregister_backlight
(
void
)
{
return
;
}
static
inline
int
acpi_video_get_edid
(
struct
acpi_device
*
device
,
int
type
,
int
device_id
,
void
**
edid
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录