diff options
author | Yunhong Jiang <yunhong.jiang@intel.com> | 2015-08-04 12:17:53 -0700 |
---|---|---|
committer | Yunhong Jiang <yunhong.jiang@intel.com> | 2015-08-04 15:44:42 -0700 |
commit | 9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (patch) | |
tree | 1c9cafbcd35f783a87880a10f85d1a060db1a563 /kernel/arch/arm/mach-shmobile/pm-r8a7740.c | |
parent | 98260f3884f4a202f9ca5eabed40b1354c489b29 (diff) |
Add the rt linux 4.1.3-rt3 as base
Import the rt linux 4.1.3-rt3 as OPNFV kvm base.
It's from git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git linux-4.1.y-rt and
the base is:
commit 0917f823c59692d751951bf5ea699a2d1e2f26a2
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Sat Jul 25 12:13:34 2015 +0200
Prepare v4.1.3-rt3
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
We lose all the git history this way and it's not good. We
should apply another opnfv project repo in future.
Change-Id: I87543d81c9df70d99c5001fbdf646b202c19f423
Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Diffstat (limited to 'kernel/arch/arm/mach-shmobile/pm-r8a7740.c')
-rw-r--r-- | kernel/arch/arm/mach-shmobile/pm-r8a7740.c | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/kernel/arch/arm/mach-shmobile/pm-r8a7740.c b/kernel/arch/arm/mach-shmobile/pm-r8a7740.c new file mode 100644 index 000000000..34608fcf0 --- /dev/null +++ b/kernel/arch/arm/mach-shmobile/pm-r8a7740.c @@ -0,0 +1,129 @@ +/* + * r8a7740 power management support + * + * Copyright (C) 2012 Renesas Solutions Corp. + * Copyright (C) 2012 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + */ +#include <linux/console.h> +#include <linux/io.h> +#include <linux/suspend.h> + +#include "common.h" +#include "pm-rmobile.h" + +#define SYSC_BASE IOMEM(0xe6180000) + +#if defined(CONFIG_PM) && !defined(CONFIG_ARCH_MULTIPLATFORM) +static int r8a7740_pd_a3sm_suspend(void) +{ + /* + * The A3SM domain contains the CPU core and therefore it should + * only be turned off if the CPU is not in use. + */ + return -EBUSY; +} + +static int r8a7740_pd_a3sp_suspend(void) +{ + /* + * Serial consoles make use of SCIF hardware located in A3SP, + * keep such power domain on if "no_console_suspend" is set. + */ + return console_suspend_enabled ? 0 : -EBUSY; +} + +static int r8a7740_pd_d4_suspend(void) +{ + /* + * The D4 domain contains the Coresight-ETM hardware block and + * therefore it should only be turned off if the debug module is + * not in use. + */ + return -EBUSY; +} + +static struct rmobile_pm_domain r8a7740_pm_domains[] = { + { + .genpd.name = "A4LC", + .base = SYSC_BASE, + .bit_shift = 1, + }, { + .genpd.name = "A4MP", + .base = SYSC_BASE, + .bit_shift = 2, + }, { + .genpd.name = "D4", + .base = SYSC_BASE, + .bit_shift = 3, + .gov = &pm_domain_always_on_gov, + .suspend = r8a7740_pd_d4_suspend, + }, { + .genpd.name = "A4R", + .base = SYSC_BASE, + .bit_shift = 5, + }, { + .genpd.name = "A3RV", + .base = SYSC_BASE, + .bit_shift = 6, + }, { + .genpd.name = "A4S", + .base = SYSC_BASE, + .bit_shift = 10, + .no_debug = true, + }, { + .genpd.name = "A3SP", + .base = SYSC_BASE, + .bit_shift = 11, + .gov = &pm_domain_always_on_gov, + .no_debug = true, + .suspend = r8a7740_pd_a3sp_suspend, + }, { + .genpd.name = "A3SM", + .base = SYSC_BASE, + .bit_shift = 12, + .gov = &pm_domain_always_on_gov, + .suspend = r8a7740_pd_a3sm_suspend, + }, { + .genpd.name = "A3SG", + .base = SYSC_BASE, + .bit_shift = 13, + }, { + .genpd.name = "A4SU", + .base = SYSC_BASE, + .bit_shift = 20, + }, +}; + +void __init r8a7740_init_pm_domains(void) +{ + rmobile_init_domains(r8a7740_pm_domains, ARRAY_SIZE(r8a7740_pm_domains)); + pm_genpd_add_subdomain_names("A4R", "A3RV"); + pm_genpd_add_subdomain_names("A4S", "A3SP"); + pm_genpd_add_subdomain_names("A4S", "A3SM"); + pm_genpd_add_subdomain_names("A4S", "A3SG"); +} +#endif /* CONFIG_PM && !CONFIG_ARCH_MULTIPLATFORM */ + +#ifdef CONFIG_SUSPEND +static int r8a7740_enter_suspend(suspend_state_t suspend_state) +{ + cpu_do_idle(); + return 0; +} + +static void r8a7740_suspend_init(void) +{ + shmobile_suspend_ops.enter = r8a7740_enter_suspend; +} +#else +static void r8a7740_suspend_init(void) {} +#endif + +void __init r8a7740_pm_init(void) +{ + r8a7740_suspend_init(); +} |