Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
b7a61353
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b7a61353
编写于
4月 02, 2013
作者:
G
Guenter Roeck
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
hwmon: (nct6775) Add support for critical low/high temperature limits on NCT6106
Signed-off-by:
N
Guenter Roeck
<
linux@roeck-us.net
>
上级
6c009501
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
9 deletion
+34
-9
drivers/hwmon/nct6775.c
drivers/hwmon/nct6775.c
+34
-9
未找到文件。
drivers/hwmon/nct6775.c
浏览文件 @
b7a61353
...
...
@@ -472,7 +472,11 @@ static const u16 NCT6106_REG_TEMP[] = { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 };
static
const
u16
NCT6106_REG_TEMP_HYST
[]
=
{
0xc3
,
0xc7
,
0xcb
,
0xcf
,
0xd3
,
0xd7
};
static
const
u16
NCT6106_REG_TEMP_OVER
[]
=
{
0xc2
,
0xc6
,
0xca
,
0xce
,
0xd2
,
0xd4
};
0xc2
,
0xc6
,
0xca
,
0xce
,
0xd2
,
0xd6
};
static
const
u16
NCT6106_REG_TEMP_CRIT_L
[]
=
{
0xc0
,
0xc4
,
0xc8
,
0xcc
,
0xd0
,
0xd4
};
static
const
u16
NCT6106_REG_TEMP_CRIT_H
[]
=
{
0xc1
,
0xc5
,
0xc9
,
0xcf
,
0xd1
,
0xd5
};
static
const
u16
NCT6106_REG_TEMP_OFFSET
[]
=
{
0x311
,
0x312
,
0x313
};
static
const
u16
NCT6106_REG_TEMP_CONFIG
[]
=
{
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
};
...
...
@@ -647,8 +651,8 @@ struct nct6775_data {
struct
attribute_group
*
group_temp
;
struct
attribute_group
*
group_pwm
;
u16
reg_temp
[
4
][
NUM_TEMP
];
/* 0=temp, 1=temp_over, 2=temp_hyst,
* 3=temp_crit
u16
reg_temp
[
5
][
NUM_TEMP
];
/* 0=temp, 1=temp_over, 2=temp_hyst,
* 3=temp_crit
, 4=temp_lcrit
*/
u8
temp_src
[
NUM_TEMP
];
u16
reg_temp_config
[
NUM_TEMP
];
...
...
@@ -1851,8 +1855,8 @@ static umode_t nct6775_temp_is_visible(struct kobject *kobj,
{
struct
device
*
dev
=
container_of
(
kobj
,
struct
device
,
kobj
);
struct
nct6775_data
*
data
=
dev_get_drvdata
(
dev
);
int
temp
=
index
/
8
;
/* temp index */
int
nr
=
index
%
8
;
/* attribute index */
int
temp
=
index
/
9
;
/* temp index */
int
nr
=
index
%
9
;
/* attribute index */
if
(
!
(
data
->
have_temp
&
(
1
<<
temp
)))
return
0
;
...
...
@@ -1869,7 +1873,11 @@ static umode_t nct6775_temp_is_visible(struct kobject *kobj,
if
(
nr
==
5
&&
!
data
->
reg_temp
[
3
][
temp
])
/* crit */
return
0
;
if
(
nr
>
5
&&
!
(
data
->
have_temp_fixed
&
(
1
<<
temp
)))
if
(
nr
==
6
&&
!
data
->
reg_temp
[
4
][
temp
])
/* lcrit */
return
0
;
/* offset and type only apply to fixed sensors */
if
(
nr
>
6
&&
!
(
data
->
have_temp_fixed
&
(
1
<<
temp
)))
return
0
;
return
attr
->
mode
;
...
...
@@ -1883,6 +1891,8 @@ SENSOR_TEMPLATE_2(temp_max_hyst, "temp%d_max_hyst", S_IRUGO | S_IWUSR,
show_temp
,
store_temp
,
0
,
2
);
SENSOR_TEMPLATE_2
(
temp_crit
,
"temp%d_crit"
,
S_IRUGO
|
S_IWUSR
,
show_temp
,
store_temp
,
0
,
3
);
SENSOR_TEMPLATE_2
(
temp_lcrit
,
"temp%d_lcrit"
,
S_IRUGO
|
S_IWUSR
,
show_temp
,
store_temp
,
0
,
4
);
SENSOR_TEMPLATE
(
temp_offset
,
"temp%d_offset"
,
S_IRUGO
|
S_IWUSR
,
show_temp_offset
,
store_temp_offset
,
0
);
SENSOR_TEMPLATE
(
temp_type
,
"temp%d_type"
,
S_IRUGO
|
S_IWUSR
,
show_temp_type
,
...
...
@@ -1901,8 +1911,9 @@ static struct sensor_device_template *nct6775_attributes_temp_template[] = {
&
sensor_dev_template_temp_max
,
/* 3 */
&
sensor_dev_template_temp_max_hyst
,
/* 4 */
&
sensor_dev_template_temp_crit
,
/* 5 */
&
sensor_dev_template_temp_offset
,
/* 6 */
&
sensor_dev_template_temp_type
,
/* 7 */
&
sensor_dev_template_temp_lcrit
,
/* 6 */
&
sensor_dev_template_temp_offset
,
/* 7 */
&
sensor_dev_template_temp_type
,
/* 8 */
NULL
};
...
...
@@ -3054,6 +3065,7 @@ static int nct6775_probe(struct platform_device *pdev)
int
src
,
mask
,
available
;
const
u16
*
reg_temp
,
*
reg_temp_over
,
*
reg_temp_hyst
,
*
reg_temp_config
;
const
u16
*
reg_temp_alternate
,
*
reg_temp_crit
;
const
u16
*
reg_temp_crit_l
=
NULL
,
*
reg_temp_crit_h
=
NULL
;
int
num_reg_temp
;
u8
cr2a
;
struct
attribute_group
*
group
;
...
...
@@ -3138,6 +3150,8 @@ static int nct6775_probe(struct platform_device *pdev)
reg_temp_config
=
NCT6106_REG_TEMP_CONFIG
;
reg_temp_alternate
=
NCT6106_REG_TEMP_ALTERNATE
;
reg_temp_crit
=
NCT6106_REG_TEMP_CRIT
;
reg_temp_crit_l
=
NCT6106_REG_TEMP_CRIT_L
;
reg_temp_crit_h
=
NCT6106_REG_TEMP_CRIT_H
;
break
;
case
nct6775
:
...
...
@@ -3406,6 +3420,13 @@ static int nct6775_probe(struct platform_device *pdev)
data
->
reg_temp
[
0
][
src
-
1
]
=
reg_temp
[
i
];
data
->
reg_temp
[
1
][
src
-
1
]
=
reg_temp_over
[
i
];
data
->
reg_temp
[
2
][
src
-
1
]
=
reg_temp_hyst
[
i
];
if
(
reg_temp_crit_h
&&
reg_temp_crit_h
[
i
])
data
->
reg_temp
[
3
][
src
-
1
]
=
reg_temp_crit_h
[
i
];
else
if
(
reg_temp_crit
[
src
-
1
])
data
->
reg_temp
[
3
][
src
-
1
]
=
reg_temp_crit
[
src
-
1
];
if
(
reg_temp_crit_l
&&
reg_temp_crit_l
[
i
])
data
->
reg_temp
[
4
][
src
-
1
]
=
reg_temp_crit_l
[
i
];
data
->
reg_temp_config
[
src
-
1
]
=
reg_temp_config
[
i
];
data
->
temp_src
[
src
-
1
]
=
src
;
continue
;
...
...
@@ -3420,8 +3441,12 @@ static int nct6775_probe(struct platform_device *pdev)
data
->
reg_temp
[
1
][
s
]
=
reg_temp_over
[
i
];
data
->
reg_temp
[
2
][
s
]
=
reg_temp_hyst
[
i
];
data
->
reg_temp_config
[
s
]
=
reg_temp_config
[
i
];
if
(
reg_temp_crit
[
src
-
1
])
if
(
reg_temp_crit_h
&&
reg_temp_crit_h
[
i
])
data
->
reg_temp
[
3
][
s
]
=
reg_temp_crit_h
[
i
];
else
if
(
reg_temp_crit
[
src
-
1
])
data
->
reg_temp
[
3
][
s
]
=
reg_temp_crit
[
src
-
1
];
if
(
reg_temp_crit_l
&&
reg_temp_crit_l
[
i
])
data
->
reg_temp
[
4
][
s
]
=
reg_temp_crit_l
[
i
];
data
->
temp_src
[
s
]
=
src
;
s
++
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录