ARM: shmobile: r8a7740: add A4S pm domain support
This patch adds basic A4S pm domain support.
Now, below devices can be controled by PM
Common-SHwy, Common-HPB, BSC, MFI, MMFROM, HS-SHwy,
SYS-HPB, INTCA, DBSC, DDRPHY (Logic),
ATAPI, GbEther, AXI-bus
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:25:58 +08:00
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
ARM: shmobile: r8a7740: add A3SP pm domain support
This patch adds basic A3SP pm domain support.
Now, below devices can be controled by PM
DMAC1/2/3, IPMMU, DDM, FLCTL, SYS-HPB, BBIF1, MSIOF1/2,
SCIFA,SCIFB, IIC1, IrDA, USBH, USBDMAC, SDHI0/1/2, TPU,
DREQPAK (Sys), MMCIF, RSPI, SIM, USBF
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:26:31 +08:00
|
|
|
#include <linux/console.h>
|
2012-12-05 20:13:07 +08:00
|
|
|
#include <linux/suspend.h>
|
2014-06-17 15:47:37 +08:00
|
|
|
#include "common.h"
|
2014-06-17 15:47:45 +08:00
|
|
|
#include "pm-rmobile.h"
|
ARM: shmobile: r8a7740: add A4S pm domain support
This patch adds basic A4S pm domain support.
Now, below devices can be controled by PM
Common-SHwy, Common-HPB, BSC, MFI, MMFROM, HS-SHwy,
SYS-HPB, INTCA, DBSC, DDRPHY (Logic),
ATAPI, GbEther, AXI-bus
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:25:58 +08:00
|
|
|
|
2014-08-25 11:36:53 +08:00
|
|
|
#if defined(CONFIG_PM) && !defined(CONFIG_ARCH_MULTIPLATFORM)
|
ARM: shmobile: r8a7740: add A4S pm domain support
This patch adds basic A4S pm domain support.
Now, below devices can be controled by PM
Common-SHwy, Common-HPB, BSC, MFI, MMFROM, HS-SHwy,
SYS-HPB, INTCA, DBSC, DDRPHY (Logic),
ATAPI, GbEther, AXI-bus
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:25:58 +08:00
|
|
|
static int r8a7740_pd_a4s_suspend(void)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* The A4S domain contains the CPU core and therefore it should
|
2014-09-17 03:58:03 +08:00
|
|
|
* only be turned off if the CPU is not in use.
|
ARM: shmobile: r8a7740: add A4S pm domain support
This patch adds basic A4S pm domain support.
Now, below devices can be controled by PM
Common-SHwy, Common-HPB, BSC, MFI, MMFROM, HS-SHwy,
SYS-HPB, INTCA, DBSC, DDRPHY (Logic),
ATAPI, GbEther, AXI-bus
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:25:58 +08:00
|
|
|
*/
|
|
|
|
return -EBUSY;
|
|
|
|
}
|
|
|
|
|
ARM: shmobile: r8a7740: add A3SP pm domain support
This patch adds basic A3SP pm domain support.
Now, below devices can be controled by PM
DMAC1/2/3, IPMMU, DDM, FLCTL, SYS-HPB, BBIF1, MSIOF1/2,
SCIFA,SCIFB, IIC1, IrDA, USBH, USBDMAC, SDHI0/1/2, TPU,
DREQPAK (Sys), MMCIF, RSPI, SIM, USBF
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:26:31 +08:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2012-08-07 07:13:37 +08:00
|
|
|
static struct rmobile_pm_domain r8a7740_pm_domains[] = {
|
|
|
|
{
|
2014-08-29 21:26:22 +08:00
|
|
|
.genpd.name = "A4LC",
|
|
|
|
.bit_shift = 1,
|
2014-10-23 19:18:57 +08:00
|
|
|
}, {
|
|
|
|
.genpd.name = "A4MP",
|
|
|
|
.bit_shift = 2,
|
2014-10-23 19:18:55 +08:00
|
|
|
}, {
|
|
|
|
.genpd.name = "A3RV",
|
|
|
|
.bit_shift = 6,
|
2014-08-29 21:26:22 +08:00
|
|
|
}, {
|
2012-08-07 07:13:37 +08:00
|
|
|
.genpd.name = "A4S",
|
|
|
|
.bit_shift = 10,
|
|
|
|
.gov = &pm_domain_always_on_gov,
|
|
|
|
.no_debug = true,
|
|
|
|
.suspend = r8a7740_pd_a4s_suspend,
|
2014-08-29 21:26:22 +08:00
|
|
|
}, {
|
2012-08-07 07:13:37 +08:00
|
|
|
.genpd.name = "A3SP",
|
|
|
|
.bit_shift = 11,
|
|
|
|
.gov = &pm_domain_always_on_gov,
|
|
|
|
.no_debug = true,
|
|
|
|
.suspend = r8a7740_pd_a3sp_suspend,
|
2014-10-23 19:18:56 +08:00
|
|
|
}, {
|
|
|
|
.genpd.name = "A3SG",
|
|
|
|
.bit_shift = 13,
|
2012-08-07 07:13:37 +08:00
|
|
|
},
|
ARM: shmobile: r8a7740: add A3SP pm domain support
This patch adds basic A3SP pm domain support.
Now, below devices can be controled by PM
DMAC1/2/3, IPMMU, DDM, FLCTL, SYS-HPB, BBIF1, MSIOF1/2,
SCIFA,SCIFB, IIC1, IrDA, USBH, USBDMAC, SDHI0/1/2, TPU,
DREQPAK (Sys), MMCIF, RSPI, SIM, USBF
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-07-05 16:26:31 +08:00
|
|
|
};
|
|
|
|
|
2012-08-07 07:13:37 +08:00
|
|
|
void __init r8a7740_init_pm_domains(void)
|
|
|
|
{
|
|
|
|
rmobile_init_domains(r8a7740_pm_domains, ARRAY_SIZE(r8a7740_pm_domains));
|
|
|
|
pm_genpd_add_subdomain_names("A4S", "A3SP");
|
2014-10-23 19:18:56 +08:00
|
|
|
pm_genpd_add_subdomain_names("A4S", "A3SG");
|
2012-08-07 07:13:37 +08:00
|
|
|
}
|
2014-08-25 11:36:53 +08:00
|
|
|
#endif /* CONFIG_PM && !CONFIG_ARCH_MULTIPLATFORM */
|
2012-12-05 20:13:07 +08:00
|
|
|
|
|
|
|
#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();
|
|
|
|
}
|