Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
4e5a494e
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看板
提交
4e5a494e
编写于
9月 06, 2013
作者:
J
Jiri Kosina
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-3.12/sensor-hub' into for-linus
Conflicts: drivers/hid/hid-sensor-hub.c
上级
63faf15d
7b0692f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
32 deletion
+23
-32
drivers/hid/hid-sensor-hub.c
drivers/hid/hid-sensor-hub.c
+23
-32
未找到文件。
drivers/hid/hid-sensor-hub.c
浏览文件 @
4e5a494e
...
...
@@ -103,8 +103,7 @@ static int sensor_hub_get_physical_device_count(
list_for_each_entry
(
report
,
&
report_enum
->
report_list
,
list
)
{
field
=
report
->
field
[
0
];
if
(
report
->
maxfield
&&
field
&&
field
->
physical
)
if
(
report
->
maxfield
&&
field
&&
field
->
physical
)
cnt
++
;
}
...
...
@@ -192,12 +191,12 @@ int sensor_hub_set_feature(struct hid_sensor_hub_device *hsdev, u32 report_id,
u32
field_index
,
s32
value
)
{
struct
hid_report
*
report
;
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
int
ret
=
0
;
mutex_lock
(
&
data
->
mutex
);
report
=
sensor_hub_report
(
report_id
,
hsdev
->
hdev
,
HID_FEATURE_REPORT
);
if
(
!
report
||
(
field_index
>=
report
->
maxfield
))
{
if
(
!
report
||
(
field_index
>=
report
->
maxfield
))
{
ret
=
-
EINVAL
;
goto
done_proc
;
}
...
...
@@ -216,12 +215,12 @@ int sensor_hub_get_feature(struct hid_sensor_hub_device *hsdev, u32 report_id,
u32
field_index
,
s32
*
value
)
{
struct
hid_report
*
report
;
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
int
ret
=
0
;
mutex_lock
(
&
data
->
mutex
);
report
=
sensor_hub_report
(
report_id
,
hsdev
->
hdev
,
HID_FEATURE_REPORT
);
if
(
!
report
||
(
field_index
>=
report
->
maxfield
)
||
if
(
!
report
||
(
field_index
>=
report
->
maxfield
)
||
report
->
field
[
field_index
]
->
report_count
<
1
)
{
ret
=
-
EINVAL
;
goto
done_proc
;
...
...
@@ -242,7 +241,7 @@ int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev,
u32
usage_id
,
u32
attr_usage_id
,
u32
report_id
)
{
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
struct
sensor_hub_data
*
data
=
hid_get_drvdata
(
hsdev
->
hdev
);
unsigned
long
flags
;
struct
hid_report
*
report
;
int
ret_val
=
0
;
...
...
@@ -303,7 +302,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
/* Initialize with defaults */
info
->
usage_id
=
usage_id
;
info
->
attrib_id
=
attr_usage_id
;
info
->
attrib_id
=
attr_usage_id
;
info
->
report_id
=
-
1
;
info
->
index
=
-
1
;
info
->
units
=
-
1
;
...
...
@@ -334,7 +333,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev,
if
(
field
->
usage
[
j
].
hid
==
attr_usage_id
&&
field
->
usage
[
j
].
collection_index
==
collection_index
)
{
collection_index
)
{
sensor_hub_fill_attr_info
(
info
,
i
,
report
->
id
,
field
->
unit
,
...
...
@@ -358,7 +357,7 @@ EXPORT_SYMBOL_GPL(sensor_hub_input_get_attribute_info);
#ifdef CONFIG_PM
static
int
sensor_hub_suspend
(
struct
hid_device
*
hdev
,
pm_message_t
message
)
{
struct
sensor_hub_data
*
pdata
=
hid_get_drvdata
(
hdev
);
struct
sensor_hub_data
*
pdata
=
hid_get_drvdata
(
hdev
);
struct
hid_sensor_hub_callbacks_list
*
callback
;
hid_dbg
(
hdev
,
" sensor_hub_suspend
\n
"
);
...
...
@@ -375,7 +374,7 @@ static int sensor_hub_suspend(struct hid_device *hdev, pm_message_t message)
static
int
sensor_hub_resume
(
struct
hid_device
*
hdev
)
{
struct
sensor_hub_data
*
pdata
=
hid_get_drvdata
(
hdev
);
struct
sensor_hub_data
*
pdata
=
hid_get_drvdata
(
hdev
);
struct
hid_sensor_hub_callbacks_list
*
callback
;
hid_dbg
(
hdev
,
" sensor_hub_resume
\n
"
);
...
...
@@ -395,6 +394,7 @@ static int sensor_hub_reset_resume(struct hid_device *hdev)
return
0
;
}
#endif
/*
* Handle raw report as sent by device
*/
...
...
@@ -422,7 +422,6 @@ static int sensor_hub_raw_event(struct hid_device *hdev,
spin_lock_irqsave
(
&
pdata
->
lock
,
flags
);
for
(
i
=
0
;
i
<
report
->
maxfield
;
++
i
)
{
hid_dbg
(
hdev
,
"%d collection_index:%x hid:%x sz:%x
\n
"
,
i
,
report
->
field
[
i
]
->
usage
->
collection_index
,
report
->
field
[
i
]
->
usage
->
hid
,
...
...
@@ -432,11 +431,10 @@ static int sensor_hub_raw_event(struct hid_device *hdev,
if
(
pdata
->
pending
.
status
&&
pdata
->
pending
.
attr_usage_id
==
report
->
field
[
i
]
->
usage
->
hid
)
{
hid_dbg
(
hdev
,
"data was pending ...
\n
"
);
pdata
->
pending
.
raw_data
=
kmalloc
(
sz
,
GFP_ATOMIC
);
if
(
pdata
->
pending
.
raw_data
)
{
memcpy
(
pdata
->
pending
.
raw_data
,
ptr
,
sz
);
pdata
->
pending
.
raw_size
=
sz
;
}
else
pdata
->
pending
.
raw_data
=
kmemdup
(
ptr
,
sz
,
GFP_ATOMIC
);
if
(
pdata
->
pending
.
raw_data
)
pdata
->
pending
.
raw_size
=
sz
;
else
pdata
->
pending
.
raw_size
=
0
;
complete
(
&
pdata
->
pending
.
ready
);
}
...
...
@@ -479,16 +477,15 @@ static int sensor_hub_probe(struct hid_device *hdev,
struct
hid_field
*
field
;
int
dev_cnt
;
sd
=
kzalloc
(
sizeof
(
struct
sensor_hub_data
),
GFP_KERNEL
);
sd
=
devm_kzalloc
(
&
hdev
->
dev
,
sizeof
(
*
sd
),
GFP_KERNEL
);
if
(
!
sd
)
{
hid_err
(
hdev
,
"cannot allocate Sensor data
\n
"
);
return
-
ENOMEM
;
}
sd
->
hsdev
=
kzalloc
(
sizeof
(
struct
hid_sensor_hub_device
),
GFP_KERNEL
);
sd
->
hsdev
=
devm_kzalloc
(
&
hdev
->
dev
,
sizeof
(
*
sd
->
hsdev
),
GFP_KERNEL
);
if
(
!
sd
->
hsdev
)
{
hid_err
(
hdev
,
"cannot allocate hid_sensor_hub_device
\n
"
);
ret
=
-
ENOMEM
;
goto
err_free_hub
;
return
-
ENOMEM
;
}
hid_set_drvdata
(
hdev
,
sd
);
sd
->
hsdev
->
hdev
=
hdev
;
...
...
@@ -500,14 +497,14 @@ static int sensor_hub_probe(struct hid_device *hdev,
ret
=
hid_parse
(
hdev
);
if
(
ret
)
{
hid_err
(
hdev
,
"parse failed
\n
"
);
goto
err_free
;
return
ret
;
}
INIT_LIST_HEAD
(
&
hdev
->
inputs
);
ret
=
hid_hw_start
(
hdev
,
0
);
if
(
ret
)
{
hid_err
(
hdev
,
"hw start failed
\n
"
);
goto
err_free
;
return
ret
;
}
ret
=
hid_hw_open
(
hdev
);
if
(
ret
)
{
...
...
@@ -540,7 +537,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
field
->
physical
)
{
name
=
kasprintf
(
GFP_KERNEL
,
"HID-SENSOR-%x"
,
field
->
physical
);
if
(
name
==
NULL
)
{
if
(
name
==
NULL
)
{
hid_err
(
hdev
,
"Failed MFD device name
\n
"
);
ret
=
-
ENOMEM
;
goto
err_free_names
;
...
...
@@ -572,10 +569,6 @@ static int sensor_hub_probe(struct hid_device *hdev,
hid_hw_close
(
hdev
);
err_stop_hw:
hid_hw_stop
(
hdev
);
err_free:
kfree
(
sd
->
hsdev
);
err_free_hub:
kfree
(
sd
);
return
ret
;
}
...
...
@@ -599,8 +592,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
kfree
(
data
->
hid_sensor_hub_client_devs
);
hid_set_drvdata
(
hdev
,
NULL
);
mutex_destroy
(
&
data
->
mutex
);
kfree
(
data
->
hsdev
);
kfree
(
data
);
}
static
const
struct
hid_device_id
sensor_hub_devices
[]
=
{
...
...
@@ -618,8 +609,8 @@ static struct hid_driver sensor_hub_driver = {
.
raw_event
=
sensor_hub_raw_event
,
#ifdef CONFIG_PM
.
suspend
=
sensor_hub_suspend
,
.
resume
=
sensor_hub_resume
,
.
reset_resume
=
sensor_hub_reset_resume
,
.
resume
=
sensor_hub_resume
,
.
reset_resume
=
sensor_hub_reset_resume
,
#endif
};
module_hid_driver
(
sensor_hub_driver
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录