From: Chanwoo Choi <cw00.choi@samsung.com> To: krzk@kernel.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, kgene@kernel.org Cc: tomasz.figa@gmail.com, cw00.choi@samsung.com, chanwoo@kernel.org, jh80.chung@samsung.com, inki.dae@samsung.com, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jonghwa Lee <jonghwa3.lee@samsung.com> Subject: [RFC PATCH 4/9] soc: samsung: Add generic power-management driver for Exynos Date: Tue, 09 Jan 2018 16:59:01 +0900 [thread overview] Message-ID: <1515484746-10656-5-git-send-email-cw00.choi@samsung.com> (raw) In-Reply-To: <1515484746-10656-1-git-send-email-cw00.choi@samsung.com> To enter suspend, Exynos SoC requires the some machine dependent procedures. This patch introduces the generic power-management driver to support those requirements and generic interface for power state management. Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> --- arch/arm/mach-exynos/common.h | 1 - arch/arm/mach-exynos/exynos.c | 23 +---- drivers/soc/samsung/Makefile | 2 +- drivers/soc/samsung/exynos-pm.c | 176 ++++++++++++++++++++++++++++++++++ include/linux/soc/samsung/exynos-pm.h | 21 ++++ 5 files changed, 199 insertions(+), 24 deletions(-) create mode 100644 drivers/soc/samsung/exynos-pm.c create mode 100644 include/linux/soc/samsung/exynos-pm.h diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index afbc143a3d5d..ad482c0fc131 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h @@ -119,7 +119,6 @@ enum { * Magic values for bootloader indicating chosen low power mode. * See also Documentation/arm/Samsung/Bootloader-interface.txt */ -#define EXYNOS_SLEEP_MAGIC 0x00000bad #define EXYNOS_AFTR_MAGIC 0xfcba0d10 void exynos_set_boot_flag(unsigned int cpu, unsigned int mode); diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index fbd108ce8745..0d5265d175c4 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@ -12,6 +12,7 @@ #include <linux/of_fdt.h> #include <linux/platform_device.h> #include <linux/irqchip.h> +#include <linux/soc/samsung/exynos-pm.h> #include <linux/soc/samsung/exynos-regs-pmu.h> #include <asm/cacheflush.h> @@ -41,28 +42,6 @@ .id = -1, }; -void __iomem *sysram_base_addr __ro_after_init; -void __iomem *sysram_ns_base_addr __ro_after_init; - -void __init exynos_sysram_init(void) -{ - struct device_node *node; - - for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram") { - if (!of_device_is_available(node)) - continue; - sysram_base_addr = of_iomap(node, 0); - break; - } - - for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram-ns") { - if (!of_device_is_available(node)) - continue; - sysram_ns_base_addr = of_iomap(node, 0); - break; - } -} - static void __init exynos_init_late(void) { if (of_machine_is_compatible("samsung,exynos5440")) diff --git a/drivers/soc/samsung/Makefile b/drivers/soc/samsung/Makefile index d2e637339a45..58ca5bdabf1f 100644 --- a/drivers/soc/samsung/Makefile +++ b/drivers/soc/samsung/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o +obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o exynos-pm.o obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) += exynos3250-pmu.o exynos4-pmu.o \ exynos5250-pmu.o exynos5420-pmu.o \ diff --git a/drivers/soc/samsung/exynos-pm.c b/drivers/soc/samsung/exynos-pm.c new file mode 100644 index 000000000000..45d84bbe5e61 --- /dev/null +++ b/drivers/soc/samsung/exynos-pm.c @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// based on arch/arm/mach-exynos/suspend.c +// Copyright (c) 2018 Samsung Electronics Co., Ltd. +// +// Exynos Power Management support driver + +#include <linux/of.h> +#include <linux/of_address.h> +#include <linux/of_fdt.h> +#include <linux/kernel.h> +#include <linux/regulator/machine.h> +#include <linux/syscore_ops.h> +#include <linux/suspend.h> + +#include <asm/cpuidle.h> +#include <asm/io.h> +#include <asm/suspend.h> + +#include <linux/soc/samsung/exynos-pm.h> +#include <linux/soc/samsung/exynos-pmu.h> + +/* + * The struct exynos_pm_data contains the callbacks of + * both struct platform_suspend_ops and syscore_ops. + * This structure is listed according to the call order, + * because the callback call order for the two structures is mixed. + */ +struct exynos_pm_data { + int (*prepare)(void); /* for platform_suspend_ops */ + int (*suspend)(void); /* for syscore_ops */ + int (*enter)(suspend_state_t state); /* for platform_suspend_ops */ + void (*resume)(void); /* for syscore_ops */ + void (*finish)(void); /* for platform_suspend_ops */ +}; + +static struct platform_suspend_ops exynos_pm_suspend_ops; +static struct syscore_ops exynos_pm_syscore_ops; +static const struct exynos_pm_data *pm_data __ro_after_init; + +void __iomem *sysram_base_addr __ro_after_init; +void __iomem *sysram_ns_base_addr __ro_after_init; + +static int exynos_pm_prepare(void) +{ + int ret; + + /* + * REVISIT: It would be better if struct platform_suspend_ops + * .prepare handler get the suspend_state_t as a parameter to + * avoid hard-coding the suspend to mem state. It's safe to do + * it now only because the suspend_valid_only_mem function is + * used as the .valid callback used to check if a given state + * is supported by the platform anyways. + */ + ret = regulator_suspend_prepare(PM_SUSPEND_MEM); + if (ret) { + pr_err("Failed to prepare regulators for suspend (%d)\n", ret); + return ret; + } + + if (pm_data->prepare) { + ret = pm_data->prepare(); + if (ret) { + pr_err("Failed to prepare for suspend (%d)\n", ret); + return ret; + } + } + + return 0; +} + +static int exynos_pm_suspend(void) +{ + if (pm_data->suspend) + return pm_data->suspend(); + + return 0; +} + +static int exynos_pm_enter(suspend_state_t state) +{ + int ret; + + exynos_sys_powerdown_conf(SYS_SLEEP); + + ret = pm_data->enter(state); + if (ret) { + pr_err("Failed to enter sleep\n"); + return ret; + } + + return 0; +} + +static void exynos_pm_resume(void) +{ + exynos_sys_powerup_conf(SYS_SLEEP); + + if (pm_data->resume) + pm_data->resume(); +} + +static void exynos_pm_finish(void) +{ + int ret; + + ret = regulator_suspend_finish(); + if (ret) + pr_warn("Failed to resume regulators from suspend (%d)\n", ret); + + if (pm_data->finish) + pm_data->finish(); +} + +/* + * Split the data between ARM architectures because it is relatively big + * and useless on other arch. + */ +#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS +#define exynos_pm_data_arm_ptr(data) (&data) +#else +#define exynos_pm_data_arm_ptr(data) NULL +#endif + +static const struct of_device_id exynos_pm_of_device_ids[] = { + { /*sentinel*/ }, +}; + +void __init exynos_sysram_init(void) +{ + struct device_node *np; + + for_each_compatible_node(np, NULL, "samsung,exynos4210-sysram") { + if (!of_device_is_available(np)) + continue; + sysram_base_addr = of_iomap(np, 0); + break; + } + + for_each_compatible_node(np, NULL, "samsung,exynos4210-sysram-ns") { + if (!of_device_is_available(np)) + continue; + sysram_ns_base_addr = of_iomap(np, 0); + break; + } +} + +static int __init exynos_pm_init(void) +{ + const struct of_device_id *match; + struct device_node *np; + + np = of_find_matching_node_and_match(NULL, + exynos_pm_of_device_ids, &match); + if (!np) { + pr_err("Failed to find PMU node for Exynos Power-Management\n"); + return -ENODEV; + } + pm_data = (const struct exynos_pm_data *) match->data; + + exynos_sysram_init(); + + exynos_pm_suspend_ops.valid = suspend_valid_only_mem; + exynos_pm_suspend_ops.prepare = exynos_pm_prepare; + exynos_pm_syscore_ops.suspend = exynos_pm_suspend; + exynos_pm_suspend_ops.enter = exynos_pm_enter; + exynos_pm_syscore_ops.resume = exynos_pm_resume; + exynos_pm_suspend_ops.finish = exynos_pm_finish; + + register_syscore_ops(&exynos_pm_syscore_ops); + suspend_set_ops(&exynos_pm_suspend_ops); + + return 0; +} +postcore_initcall(exynos_pm_init); diff --git a/include/linux/soc/samsung/exynos-pm.h b/include/linux/soc/samsung/exynos-pm.h new file mode 100644 index 000000000000..b1afe95ed10c --- /dev/null +++ b/include/linux/soc/samsung/exynos-pm.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (c) 2018 Samsung Electronics Co., Ltd. +// +// Header for Exynos Power-Management support driver + +#ifndef __LINUX_SOC_EXYNOS_PM_H +#define __LINUX_SOC_EXYNOS_PM_H + +/* + * Magic values for bootloader indicating chosen low power mode. + * See also Documentation/arm/Samsung/Bootloader-interface.txt + */ +#define EXYNOS_SLEEP_MAGIC 0x00000bad + +extern void __iomem *sysram_base_addr; +extern void __iomem *sysram_ns_base_addr; + +extern void exynos_sysram_init(void); + +#endif /* __LINUX_SOC_EXYNOS_PMU_H */ -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: cw00.choi@samsung.com (Chanwoo Choi) To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 4/9] soc: samsung: Add generic power-management driver for Exynos Date: Tue, 09 Jan 2018 16:59:01 +0900 [thread overview] Message-ID: <1515484746-10656-5-git-send-email-cw00.choi@samsung.com> (raw) In-Reply-To: <1515484746-10656-1-git-send-email-cw00.choi@samsung.com> To enter suspend, Exynos SoC requires the some machine dependent procedures. This patch introduces the generic power-management driver to support those requirements and generic interface for power state management. Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> --- arch/arm/mach-exynos/common.h | 1 - arch/arm/mach-exynos/exynos.c | 23 +---- drivers/soc/samsung/Makefile | 2 +- drivers/soc/samsung/exynos-pm.c | 176 ++++++++++++++++++++++++++++++++++ include/linux/soc/samsung/exynos-pm.h | 21 ++++ 5 files changed, 199 insertions(+), 24 deletions(-) create mode 100644 drivers/soc/samsung/exynos-pm.c create mode 100644 include/linux/soc/samsung/exynos-pm.h diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index afbc143a3d5d..ad482c0fc131 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h @@ -119,7 +119,6 @@ enum { * Magic values for bootloader indicating chosen low power mode. * See also Documentation/arm/Samsung/Bootloader-interface.txt */ -#define EXYNOS_SLEEP_MAGIC 0x00000bad #define EXYNOS_AFTR_MAGIC 0xfcba0d10 void exynos_set_boot_flag(unsigned int cpu, unsigned int mode); diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index fbd108ce8745..0d5265d175c4 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@ -12,6 +12,7 @@ #include <linux/of_fdt.h> #include <linux/platform_device.h> #include <linux/irqchip.h> +#include <linux/soc/samsung/exynos-pm.h> #include <linux/soc/samsung/exynos-regs-pmu.h> #include <asm/cacheflush.h> @@ -41,28 +42,6 @@ .id = -1, }; -void __iomem *sysram_base_addr __ro_after_init; -void __iomem *sysram_ns_base_addr __ro_after_init; - -void __init exynos_sysram_init(void) -{ - struct device_node *node; - - for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram") { - if (!of_device_is_available(node)) - continue; - sysram_base_addr = of_iomap(node, 0); - break; - } - - for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram-ns") { - if (!of_device_is_available(node)) - continue; - sysram_ns_base_addr = of_iomap(node, 0); - break; - } -} - static void __init exynos_init_late(void) { if (of_machine_is_compatible("samsung,exynos5440")) diff --git a/drivers/soc/samsung/Makefile b/drivers/soc/samsung/Makefile index d2e637339a45..58ca5bdabf1f 100644 --- a/drivers/soc/samsung/Makefile +++ b/drivers/soc/samsung/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o +obj-$(CONFIG_EXYNOS_PMU) += exynos-pmu.o exynos-pm.o obj-$(CONFIG_EXYNOS_PMU_ARM_DRIVERS) += exynos3250-pmu.o exynos4-pmu.o \ exynos5250-pmu.o exynos5420-pmu.o \ diff --git a/drivers/soc/samsung/exynos-pm.c b/drivers/soc/samsung/exynos-pm.c new file mode 100644 index 000000000000..45d84bbe5e61 --- /dev/null +++ b/drivers/soc/samsung/exynos-pm.c @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// based on arch/arm/mach-exynos/suspend.c +// Copyright (c) 2018 Samsung Electronics Co., Ltd. +// +// Exynos Power Management support driver + +#include <linux/of.h> +#include <linux/of_address.h> +#include <linux/of_fdt.h> +#include <linux/kernel.h> +#include <linux/regulator/machine.h> +#include <linux/syscore_ops.h> +#include <linux/suspend.h> + +#include <asm/cpuidle.h> +#include <asm/io.h> +#include <asm/suspend.h> + +#include <linux/soc/samsung/exynos-pm.h> +#include <linux/soc/samsung/exynos-pmu.h> + +/* + * The struct exynos_pm_data contains the callbacks of + * both struct platform_suspend_ops and syscore_ops. + * This structure is listed according to the call order, + * because the callback call order for the two structures is mixed. + */ +struct exynos_pm_data { + int (*prepare)(void); /* for platform_suspend_ops */ + int (*suspend)(void); /* for syscore_ops */ + int (*enter)(suspend_state_t state); /* for platform_suspend_ops */ + void (*resume)(void); /* for syscore_ops */ + void (*finish)(void); /* for platform_suspend_ops */ +}; + +static struct platform_suspend_ops exynos_pm_suspend_ops; +static struct syscore_ops exynos_pm_syscore_ops; +static const struct exynos_pm_data *pm_data __ro_after_init; + +void __iomem *sysram_base_addr __ro_after_init; +void __iomem *sysram_ns_base_addr __ro_after_init; + +static int exynos_pm_prepare(void) +{ + int ret; + + /* + * REVISIT: It would be better if struct platform_suspend_ops + * .prepare handler get the suspend_state_t as a parameter to + * avoid hard-coding the suspend to mem state. It's safe to do + * it now only because the suspend_valid_only_mem function is + * used as the .valid callback used to check if a given state + * is supported by the platform anyways. + */ + ret = regulator_suspend_prepare(PM_SUSPEND_MEM); + if (ret) { + pr_err("Failed to prepare regulators for suspend (%d)\n", ret); + return ret; + } + + if (pm_data->prepare) { + ret = pm_data->prepare(); + if (ret) { + pr_err("Failed to prepare for suspend (%d)\n", ret); + return ret; + } + } + + return 0; +} + +static int exynos_pm_suspend(void) +{ + if (pm_data->suspend) + return pm_data->suspend(); + + return 0; +} + +static int exynos_pm_enter(suspend_state_t state) +{ + int ret; + + exynos_sys_powerdown_conf(SYS_SLEEP); + + ret = pm_data->enter(state); + if (ret) { + pr_err("Failed to enter sleep\n"); + return ret; + } + + return 0; +} + +static void exynos_pm_resume(void) +{ + exynos_sys_powerup_conf(SYS_SLEEP); + + if (pm_data->resume) + pm_data->resume(); +} + +static void exynos_pm_finish(void) +{ + int ret; + + ret = regulator_suspend_finish(); + if (ret) + pr_warn("Failed to resume regulators from suspend (%d)\n", ret); + + if (pm_data->finish) + pm_data->finish(); +} + +/* + * Split the data between ARM architectures because it is relatively big + * and useless on other arch. + */ +#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS +#define exynos_pm_data_arm_ptr(data) (&data) +#else +#define exynos_pm_data_arm_ptr(data) NULL +#endif + +static const struct of_device_id exynos_pm_of_device_ids[] = { + { /*sentinel*/ }, +}; + +void __init exynos_sysram_init(void) +{ + struct device_node *np; + + for_each_compatible_node(np, NULL, "samsung,exynos4210-sysram") { + if (!of_device_is_available(np)) + continue; + sysram_base_addr = of_iomap(np, 0); + break; + } + + for_each_compatible_node(np, NULL, "samsung,exynos4210-sysram-ns") { + if (!of_device_is_available(np)) + continue; + sysram_ns_base_addr = of_iomap(np, 0); + break; + } +} + +static int __init exynos_pm_init(void) +{ + const struct of_device_id *match; + struct device_node *np; + + np = of_find_matching_node_and_match(NULL, + exynos_pm_of_device_ids, &match); + if (!np) { + pr_err("Failed to find PMU node for Exynos Power-Management\n"); + return -ENODEV; + } + pm_data = (const struct exynos_pm_data *) match->data; + + exynos_sysram_init(); + + exynos_pm_suspend_ops.valid = suspend_valid_only_mem; + exynos_pm_suspend_ops.prepare = exynos_pm_prepare; + exynos_pm_syscore_ops.suspend = exynos_pm_suspend; + exynos_pm_suspend_ops.enter = exynos_pm_enter; + exynos_pm_syscore_ops.resume = exynos_pm_resume; + exynos_pm_suspend_ops.finish = exynos_pm_finish; + + register_syscore_ops(&exynos_pm_syscore_ops); + suspend_set_ops(&exynos_pm_suspend_ops); + + return 0; +} +postcore_initcall(exynos_pm_init); diff --git a/include/linux/soc/samsung/exynos-pm.h b/include/linux/soc/samsung/exynos-pm.h new file mode 100644 index 000000000000..b1afe95ed10c --- /dev/null +++ b/include/linux/soc/samsung/exynos-pm.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// Copyright (c) 2018 Samsung Electronics Co., Ltd. +// +// Header for Exynos Power-Management support driver + +#ifndef __LINUX_SOC_EXYNOS_PM_H +#define __LINUX_SOC_EXYNOS_PM_H + +/* + * Magic values for bootloader indicating chosen low power mode. + * See also Documentation/arm/Samsung/Bootloader-interface.txt + */ +#define EXYNOS_SLEEP_MAGIC 0x00000bad + +extern void __iomem *sysram_base_addr; +extern void __iomem *sysram_ns_base_addr; + +extern void exynos_sysram_init(void); + +#endif /* __LINUX_SOC_EXYNOS_PMU_H */ -- 1.9.1
next prev parent reply other threads:[~2018-01-09 7:59 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <CGME20180109075904epcas2p302d58aacfbb2195e455a25c90a1c610b@epcas2p3.samsung.com> 2018-01-09 7:58 ` [RFC PATCH 0/9] soc: samsung: Add support of suspend-to-RAM on Exynos5433 Chanwoo Choi 2018-01-09 7:58 ` Chanwoo Choi 2018-01-09 7:58 ` Chanwoo Choi [not found] ` <CGME20180109075905epcas1p1486543d8fec46f47d9d5ac350d841337@epcas1p1.samsung.com> 2018-01-09 7:58 ` [PATCH 1/9] clk: samsung: exynos5433: Add clock flag to support suspend-to-ram Chanwoo Choi 2018-01-09 7:58 ` Chanwoo Choi 2018-01-09 7:58 ` Chanwoo Choi 2018-01-09 11:44 ` Krzysztof Kozlowski 2018-01-09 11:44 ` Krzysztof Kozlowski 2018-01-09 11:44 ` Krzysztof Kozlowski 2018-01-10 9:31 ` Chanwoo Choi 2018-01-10 9:31 ` Chanwoo Choi 2018-01-12 13:24 ` Marek Szyprowski 2018-01-12 13:24 ` Marek Szyprowski [not found] ` <CGME20180109075905epcas1p4e601230d86dd686db28796165178dafa@epcas1p4.samsung.com> 2018-01-09 7:58 ` [PATCH 2/9] soc: samsung: pmu: Add powerup_conf callback Chanwoo Choi 2018-01-09 7:58 ` Chanwoo Choi 2018-01-09 11:52 ` Krzysztof Kozlowski 2018-01-09 11:52 ` Krzysztof Kozlowski [not found] ` <CGME20180109075905epcas1p321b8898a0d45287d63364e1aa768fdab@epcas1p3.samsung.com> 2018-01-09 7:59 ` [PATCH 3/9] soc: samsung: pmu: Add the PMU data of exynos5433 to support low-power state Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi 2018-01-09 12:23 ` Krzysztof Kozlowski 2018-01-09 12:23 ` Krzysztof Kozlowski 2018-01-09 12:23 ` Krzysztof Kozlowski 2018-01-11 5:39 ` Chanwoo Choi 2018-01-11 5:39 ` Chanwoo Choi 2018-01-11 5:39 ` Chanwoo Choi 2018-01-09 12:33 ` Krzysztof Kozlowski 2018-01-09 12:33 ` Krzysztof Kozlowski 2018-01-09 14:11 ` Sudeep Holla 2018-01-09 14:11 ` Sudeep Holla 2018-01-10 1:46 ` Chanwoo Choi 2018-01-10 1:46 ` Chanwoo Choi 2018-01-10 10:53 ` Sudeep Holla 2018-01-10 10:53 ` Sudeep Holla 2018-01-10 10:53 ` Sudeep Holla 2018-01-10 23:51 ` Chanwoo Choi 2018-01-10 23:51 ` Chanwoo Choi [not found] ` <CGME20180109075905epcas1p40431a90ecc3530f2200ade028bf54594@epcas1p4.samsung.com> 2018-01-09 7:59 ` Chanwoo Choi [this message] 2018-01-09 7:59 ` [RFC PATCH 4/9] soc: samsung: Add generic power-management driver for Exynos Chanwoo Choi 2018-01-09 12:37 ` Krzysztof Kozlowski 2018-01-09 12:37 ` Krzysztof Kozlowski 2018-01-11 5:44 ` Chanwoo Choi 2018-01-11 5:44 ` Chanwoo Choi [not found] ` <CGME20180109075905epcas2p1fe6b554b646dbc80e04273ad6dd8489c@epcas2p1.samsung.com> 2018-01-09 7:59 ` [RFC PATCH 5/9] soc: samsung: pm: Add support for suspend-to-ram of Exynos5433 Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi 2018-01-09 12:45 ` Krzysztof Kozlowski 2018-01-09 12:45 ` Krzysztof Kozlowski 2018-01-09 12:45 ` Krzysztof Kozlowski 2018-01-11 5:40 ` Chanwoo Choi 2018-01-11 5:40 ` Chanwoo Choi [not found] ` <CGME20180109075905epcas2p4aa0174854c0796cc7fa75bdf8a273791@epcas2p4.samsung.com> 2018-01-09 7:59 ` [PATCH 6/9] arm64: dts: exynos: Add iRAM device-tree node for Exynos5433 Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi 2018-01-09 12:46 ` Krzysztof Kozlowski 2018-01-09 12:46 ` Krzysztof Kozlowski 2018-01-09 12:46 ` Krzysztof Kozlowski [not found] ` <CGME20180109075905epcas2p156b0f057a13fe5ab96753bf77f2bf652@epcas2p1.samsung.com> 2018-01-09 7:59 ` [PATCH 7/9] arm64: dts: exynos: Use power key as a wakeup source on TM2/TM2E board Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi [not found] ` <CGME20180109075906epcas1p15df259f70311dd96fc2c9ff256b2b615@epcas1p1.samsung.com> 2018-01-09 7:59 ` [PATCH 8/9] arm64: dts: exynos: Add cpu_suspend property of PSCI for exynos5433 Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi [not found] ` <CGME20180109075906epcas1p288212118a5d58bc15d62a2d828772a49@epcas1p2.samsung.com> 2018-01-09 7:59 ` [PATCH 9/9] arm64: dts: exynos: Add cpu topology information for Exynos5433 SoC Chanwoo Choi 2018-01-09 7:59 ` Chanwoo Choi 2018-01-09 11:56 ` [RFC PATCH 0/9] soc: samsung: Add support of suspend-to-RAM on Exynos5433 Krzysztof Kozlowski 2018-01-09 11:56 ` Krzysztof Kozlowski 2018-01-10 9:19 ` Chanwoo Choi 2018-01-10 9:19 ` Chanwoo Choi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1515484746-10656-5-git-send-email-cw00.choi@samsung.com \ --to=cw00.choi@samsung.com \ --cc=chanwoo@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=inki.dae@samsung.com \ --cc=jh80.chung@samsung.com \ --cc=jonghwa3.lee@samsung.com \ --cc=kgene@kernel.org \ --cc=krzk@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --cc=s.nawrocki@samsung.com \ --cc=tomasz.figa@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.