blob: 21e5316d2d881aea42b507334b9fcedd139c760d [file] [log] [blame]
Kuninori Morimoto84592932012-07-05 01:25:58 -07001/*
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 */
Kuninori Morimoto802a5632012-07-05 01:26:31 -070011#include <linux/console.h>
Kuninori Morimoto84592932012-07-05 01:25:58 -070012#include <mach/pm-rmobile.h>
13
14#ifdef CONFIG_PM
15static 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
Kuninori Morimoto802a5632012-07-05 01:26:31 -070024static 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
Rafael J. Wysocki7b567402012-08-07 01:13:37 +020033static 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 },
Kuninori Morimoto802a5632012-07-05 01:26:31 -070052};
53
Rafael J. Wysocki7b567402012-08-07 01:13:37 +020054void __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}
Kuninori Morimotoa330ce32012-07-05 01:26:53 -070059
Kuninori Morimoto84592932012-07-05 01:25:58 -070060#endif /* CONFIG_PM */