Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
2f2e3f6d
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看板
提交
2f2e3f6d
编写于
12月 02, 2011
作者:
J
Jeremy Fitzhardinge
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
hid-input/battery: make the battery setup common for INPUTs and FEATUREs
Signed-off-by:
N
Jeremy Fitzhardinge
<
jeremy@goop.org
>
上级
fb8ac91b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
23 deletion
+20
-23
drivers/hid/hid-input.c
drivers/hid/hid-input.c
+20
-23
未找到文件。
drivers/hid/hid-input.c
浏览文件 @
2f2e3f6d
...
@@ -351,20 +351,22 @@ static int hidinput_get_battery_property(struct power_supply *psy,
...
@@ -351,20 +351,22 @@ static int hidinput_get_battery_property(struct power_supply *psy,
return
ret
;
return
ret
;
}
}
static
void
hidinput_setup_battery
(
struct
hid_device
*
dev
,
static
bool
hidinput_setup_battery
(
struct
hid_device
*
dev
,
unsigned
report_type
,
struct
hid_field
*
field
)
unsigned
report_type
,
unsigned
report_id
,
s32
min
,
s32
max
)
{
{
struct
power_supply
*
battery
=
&
dev
->
battery
;
struct
power_supply
*
battery
=
&
dev
->
battery
;
int
ret
;
int
ret
;
unsigned
quirks
;
unsigned
quirks
;
s32
min
,
max
;
if
(
field
->
usage
->
hid
!=
HID_DC_BATTERYSTRENGTH
)
return
false
;
/* no match */
if
(
battery
->
name
!=
NULL
)
if
(
battery
->
name
!=
NULL
)
return
;
/* already initialized? */
goto
out
;
/* already initialized? */
battery
->
name
=
kasprintf
(
GFP_KERNEL
,
"hid-%s-battery"
,
dev
->
uniq
);
battery
->
name
=
kasprintf
(
GFP_KERNEL
,
"hid-%s-battery"
,
dev
->
uniq
);
if
(
battery
->
name
==
NULL
)
if
(
battery
->
name
==
NULL
)
return
;
goto
out
;
battery
->
type
=
POWER_SUPPLY_TYPE_USB
;
battery
->
type
=
POWER_SUPPLY_TYPE_USB
;
battery
->
properties
=
hidinput_battery_props
;
battery
->
properties
=
hidinput_battery_props
;
...
@@ -374,6 +376,9 @@ static void hidinput_setup_battery(struct hid_device *dev,
...
@@ -374,6 +376,9 @@ static void hidinput_setup_battery(struct hid_device *dev,
quirks
=
find_battery_quirk
(
dev
);
quirks
=
find_battery_quirk
(
dev
);
min
=
field
->
logical_minimum
;
max
=
field
->
logical_maximum
;
if
(
quirks
&
HID_BATTERY_QUIRK_PERCENT
)
{
if
(
quirks
&
HID_BATTERY_QUIRK_PERCENT
)
{
min
=
0
;
min
=
0
;
max
=
100
;
max
=
100
;
...
@@ -382,7 +387,7 @@ static void hidinput_setup_battery(struct hid_device *dev,
...
@@ -382,7 +387,7 @@ static void hidinput_setup_battery(struct hid_device *dev,
dev
->
battery_min
=
min
;
dev
->
battery_min
=
min
;
dev
->
battery_max
=
max
;
dev
->
battery_max
=
max
;
dev
->
battery_report_type
=
report_type
;
dev
->
battery_report_type
=
report_type
;
dev
->
battery_report_id
=
report_
id
;
dev
->
battery_report_id
=
field
->
report
->
id
;
ret
=
power_supply_register
(
&
dev
->
dev
,
battery
);
ret
=
power_supply_register
(
&
dev
->
dev
,
battery
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
...
@@ -390,6 +395,9 @@ static void hidinput_setup_battery(struct hid_device *dev,
...
@@ -390,6 +395,9 @@ static void hidinput_setup_battery(struct hid_device *dev,
kfree
(
battery
->
name
);
kfree
(
battery
->
name
);
battery
->
name
=
NULL
;
battery
->
name
=
NULL
;
}
}
out:
return
true
;
}
}
static
void
hidinput_cleanup_battery
(
struct
hid_device
*
dev
)
static
void
hidinput_cleanup_battery
(
struct
hid_device
*
dev
)
...
@@ -402,10 +410,10 @@ static void hidinput_cleanup_battery(struct hid_device *dev)
...
@@ -402,10 +410,10 @@ static void hidinput_cleanup_battery(struct hid_device *dev)
dev
->
battery
.
name
=
NULL
;
dev
->
battery
.
name
=
NULL
;
}
}
#else
/* !CONFIG_HID_BATTERY_STRENGTH */
#else
/* !CONFIG_HID_BATTERY_STRENGTH */
static
void
hidinput_setup_battery
(
struct
hid_device
*
dev
,
static
bool
hidinput_setup_battery
(
struct
hid_device
*
dev
,
unsigned
report_type
,
unsigned
report_type
,
unsigned
report_id
,
struct
hid_field
*
field
)
s32
min
,
s32
max
)
{
{
return
false
;
}
}
static
void
hidinput_cleanup_battery
(
struct
hid_device
*
dev
)
static
void
hidinput_cleanup_battery
(
struct
hid_device
*
dev
)
...
@@ -772,14 +780,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
...
@@ -772,14 +780,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
break
;
break
;
case
HID_UP_GENDEVCTRLS
:
case
HID_UP_GENDEVCTRLS
:
if
((
usage
->
hid
&
HID_USAGE
)
==
0x20
)
{
/* Battery Strength */
if
(
hidinput_setup_battery
(
device
,
HID_INPUT_REPORT
,
field
))
hidinput_setup_battery
(
device
,
HID_INPUT_REPORT
,
field
->
report
->
id
,
field
->
logical_minimum
,
field
->
logical_maximum
);
goto
ignore
;
goto
ignore
;
}
else
else
goto
unknown
;
goto
unknown
;
break
;
break
;
...
@@ -1055,13 +1058,7 @@ static void report_features(struct hid_device *hid)
...
@@ -1055,13 +1058,7 @@ static void report_features(struct hid_device *hid)
for
(
i
=
0
;
i
<
rep
->
maxfield
;
i
++
)
for
(
i
=
0
;
i
<
rep
->
maxfield
;
i
++
)
for
(
j
=
0
;
j
<
rep
->
field
[
i
]
->
maxusage
;
j
++
)
{
for
(
j
=
0
;
j
<
rep
->
field
[
i
]
->
maxusage
;
j
++
)
{
/* Verify if Battery Strength feature is available */
/* Verify if Battery Strength feature is available */
if
(((
rep
->
field
[
i
]
->
usage
+
j
)
->
hid
&
HID_USAGE_PAGE
)
==
HID_UP_GENDEVCTRLS
&&
hidinput_setup_battery
(
hid
,
HID_FEATURE_REPORT
,
rep
->
field
[
i
]);
((
rep
->
field
[
i
]
->
usage
+
j
)
->
hid
&
HID_USAGE
)
==
0x20
)
{
hidinput_setup_battery
(
hid
,
HID_FEATURE_REPORT
,
rep
->
id
,
rep
->
field
[
i
]
->
logical_minimum
,
rep
->
field
[
i
]
->
logical_maximum
);
}
if
(
drv
->
feature_mapping
)
if
(
drv
->
feature_mapping
)
drv
->
feature_mapping
(
hid
,
rep
->
field
[
i
],
drv
->
feature_mapping
(
hid
,
rep
->
field
[
i
],
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录