]> Pileus Git - ~andy/linux/blob - arch/arm/mach-shmobile/pm-r8a7740.c
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[~andy/linux] / arch / arm / mach-shmobile / pm-r8a7740.c
1 /*
2  * r8a7740 power management support
3  *
4  * Copyright (C) 2012  Renesas Solutions Corp.
5  * Copyright (C) 2012  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
6  *
7  * This file is subject to the terms and conditions of the GNU General Public
8  * License.  See the file "COPYING" in the main directory of this archive
9  * for more details.
10  */
11 #include <linux/console.h>
12 #include <mach/pm-rmobile.h>
13
14 #ifdef CONFIG_PM
15 static int r8a7740_pd_a4s_suspend(void)
16 {
17         /*
18          * The A4S domain contains the CPU core and therefore it should
19          * only be turned off if the CPU is in use.
20          */
21         return -EBUSY;
22 }
23
24 static int r8a7740_pd_a3sp_suspend(void)
25 {
26         /*
27          * Serial consoles make use of SCIF hardware located in A3SP,
28          * keep such power domain on if "no_console_suspend" is set.
29          */
30         return console_suspend_enabled ? 0 : -EBUSY;
31 }
32
33 static struct rmobile_pm_domain r8a7740_pm_domains[] = {
34         {
35                 .genpd.name     = "A4S",
36                 .bit_shift      = 10,
37                 .gov            = &pm_domain_always_on_gov,
38                 .no_debug       = true,
39                 .suspend        = r8a7740_pd_a4s_suspend,
40         },
41         {
42                 .genpd.name     = "A3SP",
43                 .bit_shift      = 11,
44                 .gov            = &pm_domain_always_on_gov,
45                 .no_debug       = true,
46                 .suspend        = r8a7740_pd_a3sp_suspend,
47         },
48         {
49                 .genpd.name     = "A4LC",
50                 .bit_shift      = 1,
51         },
52 };
53
54 void __init r8a7740_init_pm_domains(void)
55 {
56         rmobile_init_domains(r8a7740_pm_domains, ARRAY_SIZE(r8a7740_pm_domains));
57         pm_genpd_add_subdomain_names("A4S", "A3SP");
58 }
59
60 #endif /* CONFIG_PM */