Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
5198a483
cloud-kernel
项目概览
openanolis
/
cloud-kernel
接近 2 年 前同步成功
通知
170
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看板
提交
5198a483
编写于
8月 16, 2018
作者:
S
Sebastian Reichel
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'psy-fixes' into psy-next
Signed-off-by:
N
Sebastian Reichel
<
sre@kernel.org
>
上级
3d779180
cc44ba91
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
46 addition
and
18 deletion
+46
-18
drivers/power/reset/gemini-poweroff.c
drivers/power/reset/gemini-poweroff.c
+11
-1
drivers/power/reset/vexpress-poweroff.c
drivers/power/reset/vexpress-poweroff.c
+8
-4
drivers/power/supply/axp288_charger.c
drivers/power/supply/axp288_charger.c
+1
-1
drivers/power/supply/generic-adc-battery.c
drivers/power/supply/generic-adc-battery.c
+15
-10
drivers/power/supply/max77693_charger.c
drivers/power/supply/max77693_charger.c
+1
-0
drivers/power/supply/power_supply_core.c
drivers/power/supply/power_supply_core.c
+9
-2
include/linux/power_supply.h
include/linux/power_supply.h
+1
-0
未找到文件。
drivers/power/reset/gemini-poweroff.c
浏览文件 @
5198a483
...
...
@@ -130,7 +130,17 @@ static int gemini_poweroff_probe(struct platform_device *pdev)
val
|=
GEMINI_CTRL_ENABLE
;
writel
(
val
,
gpw
->
base
+
GEMINI_PWC_CTRLREG
);
/* Now that the state machine is active, clear the IRQ */
/* Clear the IRQ */
val
=
readl
(
gpw
->
base
+
GEMINI_PWC_CTRLREG
);
val
|=
GEMINI_CTRL_IRQ_CLR
;
writel
(
val
,
gpw
->
base
+
GEMINI_PWC_CTRLREG
);
/* Wait for this to clear */
val
=
readl
(
gpw
->
base
+
GEMINI_PWC_STATREG
);
while
(
val
&
0x70U
)
val
=
readl
(
gpw
->
base
+
GEMINI_PWC_STATREG
);
/* Clear the IRQ again */
val
=
readl
(
gpw
->
base
+
GEMINI_PWC_CTRLREG
);
val
|=
GEMINI_CTRL_IRQ_CLR
;
writel
(
val
,
gpw
->
base
+
GEMINI_PWC_CTRLREG
);
...
...
drivers/power/reset/vexpress-poweroff.c
浏览文件 @
5198a483
...
...
@@ -35,6 +35,7 @@ static void vexpress_reset_do(struct device *dev, const char *what)
}
static
struct
device
*
vexpress_power_off_device
;
static
atomic_t
vexpress_restart_nb_refcnt
=
ATOMIC_INIT
(
0
);
static
void
vexpress_power_off
(
void
)
{
...
...
@@ -99,10 +100,13 @@ static int _vexpress_register_restart_handler(struct device *dev)
int
err
;
vexpress_restart_device
=
dev
;
err
=
register_restart_handler
(
&
vexpress_restart_nb
);
if
(
err
)
{
dev_err
(
dev
,
"cannot register restart handler (err=%d)
\n
"
,
err
);
return
err
;
if
(
atomic_inc_return
(
&
vexpress_restart_nb_refcnt
)
==
1
)
{
err
=
register_restart_handler
(
&
vexpress_restart_nb
);
if
(
err
)
{
dev_err
(
dev
,
"cannot register restart handler (err=%d)
\n
"
,
err
);
atomic_dec
(
&
vexpress_restart_nb_refcnt
);
return
err
;
}
}
device_create_file
(
dev
,
&
dev_attr_active
);
...
...
drivers/power/supply/axp288_charger.c
浏览文件 @
5198a483
...
...
@@ -718,7 +718,7 @@ static int charger_init_hw_regs(struct axp288_chrg_info *info)
}
/* Determine charge current limit */
cc
=
(
ret
&
CHRG_CCCV_CC_MASK
)
>>
CHRG_CCCV_CC_BIT_POS
;
cc
=
(
val
&
CHRG_CCCV_CC_MASK
)
>>
CHRG_CCCV_CC_BIT_POS
;
cc
=
(
cc
*
CHRG_CCCV_CC_LSB_RES
)
+
CHRG_CCCV_CC_OFFSET
;
info
->
cc
=
cc
;
...
...
drivers/power/supply/generic-adc-battery.c
浏览文件 @
5198a483
...
...
@@ -241,10 +241,10 @@ static int gab_probe(struct platform_device *pdev)
struct
power_supply_desc
*
psy_desc
;
struct
power_supply_config
psy_cfg
=
{};
struct
gab_platform_data
*
pdata
=
pdev
->
dev
.
platform_data
;
enum
power_supply_property
*
properties
;
int
ret
=
0
;
int
chan
;
int
index
=
0
;
int
index
=
ARRAY_SIZE
(
gab_props
);
bool
any
=
false
;
adc_bat
=
devm_kzalloc
(
&
pdev
->
dev
,
sizeof
(
*
adc_bat
),
GFP_KERNEL
);
if
(
!
adc_bat
)
{
...
...
@@ -278,8 +278,6 @@ static int gab_probe(struct platform_device *pdev)
}
memcpy
(
psy_desc
->
properties
,
gab_props
,
sizeof
(
gab_props
));
properties
=
(
enum
power_supply_property
*
)
((
char
*
)
psy_desc
->
properties
+
sizeof
(
gab_props
));
/*
* getting channel from iio and copying the battery properties
...
...
@@ -293,15 +291,22 @@ static int gab_probe(struct platform_device *pdev)
adc_bat
->
channel
[
chan
]
=
NULL
;
}
else
{
/* copying properties for supported channels only */
memcpy
(
properties
+
sizeof
(
*
(
psy_desc
->
properties
))
*
index
,
&
gab_dyn_props
[
chan
],
sizeof
(
gab_dyn_props
[
chan
]));
index
++
;
int
index2
;
for
(
index2
=
0
;
index2
<
index
;
index2
++
)
{
if
(
psy_desc
->
properties
[
index2
]
==
gab_dyn_props
[
chan
])
break
;
/* already known */
}
if
(
index2
==
index
)
/* really new */
psy_desc
->
properties
[
index
++
]
=
gab_dyn_props
[
chan
];
any
=
true
;
}
}
/* none of the channels are supported so let's bail out */
if
(
index
==
0
)
{
if
(
!
any
)
{
ret
=
-
ENODEV
;
goto
second_mem_fail
;
}
...
...
@@ -312,7 +317,7 @@ static int gab_probe(struct platform_device *pdev)
* as come channels may be not be supported by the device.So
* we need to take care of that.
*/
psy_desc
->
num_properties
=
ARRAY_SIZE
(
gab_props
)
+
index
;
psy_desc
->
num_properties
=
index
;
adc_bat
->
psy
=
power_supply_register
(
&
pdev
->
dev
,
psy_desc
,
&
psy_cfg
);
if
(
IS_ERR
(
adc_bat
->
psy
))
{
...
...
drivers/power/supply/max77693_charger.c
浏览文件 @
5198a483
...
...
@@ -567,6 +567,7 @@ static int max77693_set_charge_input_threshold_volt(struct max77693_charger *chg
case
4800000
:
case
4900000
:
data
=
(
uvolt
-
4700000
)
/
100000
;
break
;
default:
dev_err
(
chg
->
dev
,
"Wrong value for charge input voltage regulation threshold
\n
"
);
return
-
EINVAL
;
...
...
drivers/power/supply/power_supply_core.c
浏览文件 @
5198a483
...
...
@@ -14,6 +14,7 @@
#include <linux/types.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/notifier.h>
#include <linux/err.h>
...
...
@@ -140,8 +141,13 @@ static void power_supply_deferred_register_work(struct work_struct *work)
struct
power_supply
*
psy
=
container_of
(
work
,
struct
power_supply
,
deferred_register_work
.
work
);
if
(
psy
->
dev
.
parent
)
mutex_lock
(
&
psy
->
dev
.
parent
->
mutex
);
if
(
psy
->
dev
.
parent
)
{
while
(
!
mutex_trylock
(
&
psy
->
dev
.
parent
->
mutex
))
{
if
(
psy
->
removing
)
return
;
msleep
(
10
);
}
}
power_supply_changed
(
psy
);
...
...
@@ -1082,6 +1088,7 @@ EXPORT_SYMBOL_GPL(devm_power_supply_register_no_ws);
void
power_supply_unregister
(
struct
power_supply
*
psy
)
{
WARN_ON
(
atomic_dec_return
(
&
psy
->
use_cnt
));
psy
->
removing
=
true
;
cancel_work_sync
(
&
psy
->
changed_work
);
cancel_delayed_work_sync
(
&
psy
->
deferred_register_work
);
sysfs_remove_link
(
&
psy
->
dev
.
kobj
,
"powers"
);
...
...
include/linux/power_supply.h
浏览文件 @
5198a483
...
...
@@ -269,6 +269,7 @@ struct power_supply {
spinlock_t
changed_lock
;
bool
changed
;
bool
initialized
;
bool
removing
;
atomic_t
use_cnt
;
#ifdef CONFIG_THERMAL
struct
thermal_zone_device
*
tzd
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录