Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
5198a483
Commit
5198a483
authored
Aug 16, 2018
by
Sebastian Reichel
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'psy-fixes' into psy-next
Signed-off-by:
Sebastian Reichel
<
sre@kernel.org
>
parents
3d779180
cc44ba91
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
46 additions
and
18 deletions
+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
No files found.
drivers/power/reset/gemini-poweroff.c
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment