* [PATCH 0/3] Some optimization for SC27XX poweroff driver
@ 2020-03-09 8:18 Baolin Wang
2020-03-09 8:18 ` [PATCH 1/3] power: reset: sc27xx: Power off the external subsystems' connection Baolin Wang
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Baolin Wang @ 2020-03-09 8:18 UTC (permalink / raw)
To: sre
Cc: baolin.wang7, orsonzhai, zhang.lyra, kernel-team, linux-pm, linux-kernel
This patch set fixes external subsystems' power issue and allows
the SC27XX poweroff driver building into a module.
Baolin Wang (2):
power: reset: sc27xx: Change to use cpu_down()
power: reset: sc27xx: Allow the SC27XX poweroff driver building into a
module
Sherry Zong (1):
power: reset: sc27xx: Power off the external subsystems' connection
drivers/power/reset/Kconfig | 2 +-
drivers/power/reset/sc27xx-poweroff.c | 21 +++++++++++++++++----
2 files changed, 18 insertions(+), 5 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] power: reset: sc27xx: Power off the external subsystems' connection
2020-03-09 8:18 [PATCH 0/3] Some optimization for SC27XX poweroff driver Baolin Wang
@ 2020-03-09 8:18 ` Baolin Wang
2020-03-09 8:18 ` [PATCH 2/3] power: reset: sc27xx: Change to use cpu_down() Baolin Wang
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Baolin Wang @ 2020-03-09 8:18 UTC (permalink / raw)
To: sre
Cc: baolin.wang7, orsonzhai, zhang.lyra, kernel-team, linux-pm, linux-kernel
From: Sherry Zong <sherry.zong@unisoc.com>
When powering off the whole system, we should power off some external
subsystems' connection firstly, otherwise some external subsystems
will hold some power and result in powering down abnormally.
Signed-off-by: Sherry Zong <sherry.zong@unisoc.com>
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
---
drivers/power/reset/sc27xx-poweroff.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/power/reset/sc27xx-poweroff.c b/drivers/power/reset/sc27xx-poweroff.c
index 29fb08b..2bedd4c 100644
--- a/drivers/power/reset/sc27xx-poweroff.c
+++ b/drivers/power/reset/sc27xx-poweroff.c
@@ -13,6 +13,8 @@
#define SC27XX_PWR_PD_HW 0xc2c
#define SC27XX_PWR_OFF_EN BIT(0)
+#define SC27XX_SLP_CTRL 0xdf0
+#define SC27XX_LDO_XTL_EN BIT(3)
static struct regmap *regmap;
@@ -40,6 +42,9 @@ static void sc27xx_poweroff_shutdown(void)
static void sc27xx_poweroff_do_poweroff(void)
{
+ /* Disable the external subsys connection's power firstly */
+ regmap_write(regmap, SC27XX_SLP_CTRL, SC27XX_LDO_XTL_EN);
+
regmap_write(regmap, SC27XX_PWR_PD_HW, SC27XX_PWR_OFF_EN);
}
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] power: reset: sc27xx: Change to use cpu_down()
2020-03-09 8:18 [PATCH 0/3] Some optimization for SC27XX poweroff driver Baolin Wang
2020-03-09 8:18 ` [PATCH 1/3] power: reset: sc27xx: Power off the external subsystems' connection Baolin Wang
@ 2020-03-09 8:18 ` Baolin Wang
2020-03-09 8:18 ` [PATCH 3/3] power: reset: sc27xx: Allow the SC27XX poweroff driver building into a module Baolin Wang
2020-03-11 22:34 ` [PATCH 0/3] Some optimization for SC27XX poweroff driver Sebastian Reichel
3 siblings, 0 replies; 5+ messages in thread
From: Baolin Wang @ 2020-03-09 8:18 UTC (permalink / raw)
To: sre
Cc: baolin.wang7, orsonzhai, zhang.lyra, kernel-team, linux-pm, linux-kernel
To allow the SC27XX driver can be built as a module, and the
freeze_secondary_cpus() symbol is not exported, thus we can change
to use the exported cpu_down() API to shut down other cpus to avoid
racing, which is same as the freeze_secondary_cpus().
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
---
drivers/power/reset/sc27xx-poweroff.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/power/reset/sc27xx-poweroff.c b/drivers/power/reset/sc27xx-poweroff.c
index 2bedd4c..91b5ece 100644
--- a/drivers/power/reset/sc27xx-poweroff.c
+++ b/drivers/power/reset/sc27xx-poweroff.c
@@ -29,10 +29,13 @@
*/
static void sc27xx_poweroff_shutdown(void)
{
-#ifdef CONFIG_PM_SLEEP_SMP
- int cpu = smp_processor_id();
+#ifdef CONFIG_HOTPLUG_CPU
+ int cpu;
- freeze_secondary_cpus(cpu);
+ for_each_online_cpu(cpu) {
+ if (cpu != smp_processor_id())
+ cpu_down(cpu);
+ }
#endif
}
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] power: reset: sc27xx: Allow the SC27XX poweroff driver building into a module
2020-03-09 8:18 [PATCH 0/3] Some optimization for SC27XX poweroff driver Baolin Wang
2020-03-09 8:18 ` [PATCH 1/3] power: reset: sc27xx: Power off the external subsystems' connection Baolin Wang
2020-03-09 8:18 ` [PATCH 2/3] power: reset: sc27xx: Change to use cpu_down() Baolin Wang
@ 2020-03-09 8:18 ` Baolin Wang
2020-03-11 22:34 ` [PATCH 0/3] Some optimization for SC27XX poweroff driver Sebastian Reichel
3 siblings, 0 replies; 5+ messages in thread
From: Baolin Wang @ 2020-03-09 8:18 UTC (permalink / raw)
To: sre
Cc: baolin.wang7, orsonzhai, zhang.lyra, kernel-team, linux-pm, linux-kernel
Change the config to 'tristate' and use module_platform_driver() to
allow the SC27XX poweroff driver building into a module, as well as
adding some mudule information.
Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
---
drivers/power/reset/Kconfig | 2 +-
drivers/power/reset/sc27xx-poweroff.c | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index 513efe8..8903803 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -248,7 +248,7 @@ config SYSCON_REBOOT_MODE
action according to the mode.
config POWER_RESET_SC27XX
- bool "Spreadtrum SC27xx PMIC power-off driver"
+ tristate "Spreadtrum SC27xx PMIC power-off driver"
depends on MFD_SC27XX_PMIC || COMPILE_TEST
help
This driver supports powering off a system through
diff --git a/drivers/power/reset/sc27xx-poweroff.c b/drivers/power/reset/sc27xx-poweroff.c
index 91b5ece..6986307 100644
--- a/drivers/power/reset/sc27xx-poweroff.c
+++ b/drivers/power/reset/sc27xx-poweroff.c
@@ -6,6 +6,7 @@
#include <linux/cpu.h>
#include <linux/kernel.h>
+#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm.h>
#include <linux/regmap.h>
@@ -71,4 +72,8 @@ static int sc27xx_poweroff_probe(struct platform_device *pdev)
.name = "sc27xx-poweroff",
},
};
-builtin_platform_driver(sc27xx_poweroff_driver);
+module_platform_driver(sc27xx_poweroff_driver);
+
+MODULE_DESCRIPTION("Power off driver for SC27XX PMIC Device");
+MODULE_AUTHOR("Baolin Wang <baolin.wang@unisoc.com>");
+MODULE_LICENSE("GPL v2");
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] Some optimization for SC27XX poweroff driver
2020-03-09 8:18 [PATCH 0/3] Some optimization for SC27XX poweroff driver Baolin Wang
` (2 preceding siblings ...)
2020-03-09 8:18 ` [PATCH 3/3] power: reset: sc27xx: Allow the SC27XX poweroff driver building into a module Baolin Wang
@ 2020-03-11 22:34 ` Sebastian Reichel
3 siblings, 0 replies; 5+ messages in thread
From: Sebastian Reichel @ 2020-03-11 22:34 UTC (permalink / raw)
To: Baolin Wang; +Cc: orsonzhai, zhang.lyra, kernel-team, linux-pm, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 688 bytes --]
Hi,
On Mon, Mar 09, 2020 at 04:18:43PM +0800, Baolin Wang wrote:
> This patch set fixes external subsystems' power issue and allows
> the SC27XX poweroff driver building into a module.
Thanks, queued.
-- Sebastian
> Baolin Wang (2):
> power: reset: sc27xx: Change to use cpu_down()
> power: reset: sc27xx: Allow the SC27XX poweroff driver building into a
> module
>
> Sherry Zong (1):
> power: reset: sc27xx: Power off the external subsystems' connection
>
> drivers/power/reset/Kconfig | 2 +-
> drivers/power/reset/sc27xx-poweroff.c | 21 +++++++++++++++++----
> 2 files changed, 18 insertions(+), 5 deletions(-)
>
> --
> 1.9.1
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-11 22:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-09 8:18 [PATCH 0/3] Some optimization for SC27XX poweroff driver Baolin Wang
2020-03-09 8:18 ` [PATCH 1/3] power: reset: sc27xx: Power off the external subsystems' connection Baolin Wang
2020-03-09 8:18 ` [PATCH 2/3] power: reset: sc27xx: Change to use cpu_down() Baolin Wang
2020-03-09 8:18 ` [PATCH 3/3] power: reset: sc27xx: Allow the SC27XX poweroff driver building into a module Baolin Wang
2020-03-11 22:34 ` [PATCH 0/3] Some optimization for SC27XX poweroff driver Sebastian Reichel
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.