Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
84d19d92
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
84d19d92
编写于
12月 04, 2012
作者:
G
Guenter Roeck
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
hwmon: (nct6775) Add power management support
Signed-off-by:
N
Guenter Roeck
<
linux@roeck-us.net
>
上级
47ece964
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
86 addition
and
0 deletion
+86
-0
drivers/hwmon/nct6775.c
drivers/hwmon/nct6775.c
+86
-0
未找到文件。
drivers/hwmon/nct6775.c
浏览文件 @
84d19d92
...
...
@@ -511,6 +511,12 @@ struct nct6775_data {
u16
have_temp
;
u16
have_temp_fixed
;
u16
have_in
;
#ifdef CONFIG_PM
/* Remember extra register values over suspend/resume */
u8
vbat
;
u8
fandiv1
;
u8
fandiv2
;
#endif
};
struct
nct6775_sio_data
{
...
...
@@ -2270,10 +2276,90 @@ static int nct6775_remove(struct platform_device *pdev)
return
0
;
}
#ifdef CONFIG_PM
static
int
nct6775_suspend
(
struct
device
*
dev
)
{
struct
nct6775_data
*
data
=
nct6775_update_device
(
dev
);
struct
nct6775_sio_data
*
sio_data
=
dev
->
platform_data
;
mutex_lock
(
&
data
->
update_lock
);
data
->
vbat
=
nct6775_read_value
(
data
,
data
->
REG_VBAT
);
if
(
sio_data
->
kind
==
nct6775
)
{
data
->
fandiv1
=
nct6775_read_value
(
data
,
NCT6775_REG_FANDIV1
);
data
->
fandiv2
=
nct6775_read_value
(
data
,
NCT6775_REG_FANDIV2
);
}
mutex_unlock
(
&
data
->
update_lock
);
return
0
;
}
static
int
nct6775_resume
(
struct
device
*
dev
)
{
struct
nct6775_data
*
data
=
dev_get_drvdata
(
dev
);
struct
nct6775_sio_data
*
sio_data
=
dev
->
platform_data
;
int
i
,
j
;
mutex_lock
(
&
data
->
update_lock
);
data
->
bank
=
0xff
;
/* Force initial bank selection */
/* Restore limits */
for
(
i
=
0
;
i
<
data
->
in_num
;
i
++
)
{
if
(
!
(
data
->
have_in
&
(
1
<<
i
)))
continue
;
nct6775_write_value
(
data
,
data
->
REG_IN_MINMAX
[
0
][
i
],
data
->
in
[
i
][
1
]);
nct6775_write_value
(
data
,
data
->
REG_IN_MINMAX
[
1
][
i
],
data
->
in
[
i
][
2
]);
}
for
(
i
=
0
;
i
<
5
;
i
++
)
{
if
(
!
(
data
->
has_fan_min
&
(
1
<<
i
)))
continue
;
nct6775_write_value
(
data
,
data
->
REG_FAN_MIN
[
i
],
data
->
fan_min
[
i
]);
}
for
(
i
=
0
;
i
<
NUM_TEMP
;
i
++
)
{
if
(
!
(
data
->
have_temp
&
(
1
<<
i
)))
continue
;
for
(
j
=
1
;
j
<
4
;
j
++
)
if
(
data
->
reg_temp
[
j
][
i
])
nct6775_write_temp
(
data
,
data
->
reg_temp
[
j
][
i
],
data
->
temp
[
j
][
i
]);
}
/* Restore other settings */
nct6775_write_value
(
data
,
data
->
REG_VBAT
,
data
->
vbat
);
if
(
sio_data
->
kind
==
nct6775
)
{
nct6775_write_value
(
data
,
NCT6775_REG_FANDIV1
,
data
->
fandiv1
);
nct6775_write_value
(
data
,
NCT6775_REG_FANDIV2
,
data
->
fandiv2
);
}
/* Force re-reading all values */
data
->
valid
=
false
;
mutex_unlock
(
&
data
->
update_lock
);
return
0
;
}
static
const
struct
dev_pm_ops
nct6775_dev_pm_ops
=
{
.
suspend
=
nct6775_suspend
,
.
resume
=
nct6775_resume
,
};
#define NCT6775_DEV_PM_OPS (&nct6775_dev_pm_ops)
#else
#define NCT6775_DEV_PM_OPS NULL
#endif
/* CONFIG_PM */
static
struct
platform_driver
nct6775_driver
=
{
.
driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
DRVNAME
,
.
pm
=
NCT6775_DEV_PM_OPS
,
},
.
probe
=
nct6775_probe
,
.
remove
=
nct6775_remove
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录