Renesas ARM Based SoC Runtime PM Updates for v3.19
* 8a7740/armadillo800eva legacy PM domain support -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUWBVgAAoJENfPZGlqN0++wbAQAKcogdoxaqGMjkWXcly8oEHZ biOmOU49lj/24K9UdapClO8ML7WkDIHOtORCODRy6UXiGBSBw/seydvYFSCZ4JdQ zcr2ktHZSOoi/6nliR5NTtrsgfdlV6BiwHoqlf1gyJcgns/5fKi9I+4Oh1Q4i2m2 2nRX5RBb9qTjJd1yAh9Qu7DaIGQ37KnJHA6u2EvMMk3n+fP8F5G3n7+SglpUlviy 4xSIDaRKNGrD7PaYJaZIJu8ZMTq4+guQwb8CMILhB+5u+YIqXqiBA2aK0w/y9j3g vD5XYYamAxkTTOz7ZWgSsaY4CmSo8w7Vxe/pDVIkF5Zzw3Xxrmo9BHIRcVGOY/c4 L9uHx0UJSwEtRJiGfXAFHU+FoboUrJMDjamTaa+9rEmb2Fgn3TSq1AQ+/oPnM/S7 RzyoJ6XMIB4kr7+9JxUAhZxPl834rcH5HcKlgdlwmKylXu9Tiwq5oU2gU11xI0pt Vwey8x3lNErEC8zROsozDsHjOVQcvr3t3PZJuppjcgIcUUmCiqMn5i5Cf7NjuH6t O6LJmne2nf+fUgW3KyLQbqdvVMXR+4/E7TuDNa6Fqq38QBU0mzFqYD4rb+nFGHag JZVk4BWJ1nuawsU9ihTcJ+SHgY19wf24mcnTDICYeZYBlqdfges1FtkGnsCLEg92 DfZsQij4+dIv9hg9LolD =6/TT -----END PGP SIGNATURE----- Merge tag 'renesas-runtime-pm-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc Merge "Renesas ARM Based SoC Runtime PM Updates for v3.19" * 8a7740/armadillo800eva legacy PM domain support * tag 'renesas-runtime-pm-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: ARM: shmobile: r8a7740: Add A3SM pm domain support ARM: shmobile: r8a7740: Add A4SU pm domain support ARM: shmobile: r8a7740/armadillo legacy: Add A4R pm domain support ARM: shmobile: r8a7740: Add D4 pm domain support ARM: shmobile: r8a7740/armadillo legacy: Add A4MP pm domain support ARM: shmobile: r8a7740: Add A3SG pm domain support ARM: shmobile: r8a7740: Add A3RV pm domain support ARM: shmobile: armadillo800eva legacy: Add missing A4S pm domain devices ARM: shmobile: armadillo800eva legacy: Add missing A3SP pm domain devices ARM: shmobile: r8a7740: Add missing A4S pm domain devices ARM: shmobile: r8a7740: Add missing A3SP pm domain devices Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
15fee17dba
3 changed files with 62 additions and 5 deletions
|
@ -1234,8 +1234,15 @@ static void __init eva_init(void)
|
||||||
static struct pm_domain_device domain_devices[] __initdata = {
|
static struct pm_domain_device domain_devices[] __initdata = {
|
||||||
{ "A4LC", &lcdc0_device },
|
{ "A4LC", &lcdc0_device },
|
||||||
{ "A4LC", &hdmi_lcdc_device },
|
{ "A4LC", &hdmi_lcdc_device },
|
||||||
|
{ "A4MP", &hdmi_device },
|
||||||
|
{ "A4MP", &fsi_device },
|
||||||
|
{ "A4R", &ceu0_device },
|
||||||
|
{ "A4S", &sh_eth_device },
|
||||||
|
{ "A3SP", &pwm_device },
|
||||||
|
{ "A3SP", &sdhi0_device },
|
||||||
|
{ "A3SP", &sh_mmcif_device },
|
||||||
};
|
};
|
||||||
struct platform_device *usb = NULL;
|
struct platform_device *usb = NULL, *sdhi1 = NULL;
|
||||||
|
|
||||||
regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
|
regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
|
||||||
ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
||||||
|
@ -1304,6 +1311,7 @@ static void __init eva_init(void)
|
||||||
|
|
||||||
platform_device_register(&vcc_sdhi1);
|
platform_device_register(&vcc_sdhi1);
|
||||||
platform_device_register(&sdhi1_device);
|
platform_device_register(&sdhi1_device);
|
||||||
|
sdhi1 = &sdhi1_device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1324,6 +1332,8 @@ static void __init eva_init(void)
|
||||||
ARRAY_SIZE(domain_devices));
|
ARRAY_SIZE(domain_devices));
|
||||||
if (usb)
|
if (usb)
|
||||||
rmobile_add_device_to_domain("A3SP", usb);
|
rmobile_add_device_to_domain("A3SP", usb);
|
||||||
|
if (sdhi1)
|
||||||
|
rmobile_add_device_to_domain("A3SP", sdhi1);
|
||||||
|
|
||||||
r8a7740_pm_init();
|
r8a7740_pm_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,10 @@
|
||||||
#include "pm-rmobile.h"
|
#include "pm-rmobile.h"
|
||||||
|
|
||||||
#if defined(CONFIG_PM) && !defined(CONFIG_ARCH_MULTIPLATFORM)
|
#if defined(CONFIG_PM) && !defined(CONFIG_ARCH_MULTIPLATFORM)
|
||||||
static int r8a7740_pd_a4s_suspend(void)
|
static int r8a7740_pd_a3sm_suspend(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* The A4S domain contains the CPU core and therefore it should
|
* The A3SM domain contains the CPU core and therefore it should
|
||||||
* only be turned off if the CPU is not in use.
|
* only be turned off if the CPU is not in use.
|
||||||
*/
|
*/
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
@ -32,29 +32,65 @@ static int r8a7740_pd_a3sp_suspend(void)
|
||||||
return console_suspend_enabled ? 0 : -EBUSY;
|
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[] = {
|
static struct rmobile_pm_domain r8a7740_pm_domains[] = {
|
||||||
{
|
{
|
||||||
.genpd.name = "A4LC",
|
.genpd.name = "A4LC",
|
||||||
.bit_shift = 1,
|
.bit_shift = 1,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A4MP",
|
||||||
|
.bit_shift = 2,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "D4",
|
||||||
|
.bit_shift = 3,
|
||||||
|
.gov = &pm_domain_always_on_gov,
|
||||||
|
.suspend = r8a7740_pd_d4_suspend,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A4R",
|
||||||
|
.bit_shift = 5,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A3RV",
|
||||||
|
.bit_shift = 6,
|
||||||
}, {
|
}, {
|
||||||
.genpd.name = "A4S",
|
.genpd.name = "A4S",
|
||||||
.bit_shift = 10,
|
.bit_shift = 10,
|
||||||
.gov = &pm_domain_always_on_gov,
|
|
||||||
.no_debug = true,
|
.no_debug = true,
|
||||||
.suspend = r8a7740_pd_a4s_suspend,
|
|
||||||
}, {
|
}, {
|
||||||
.genpd.name = "A3SP",
|
.genpd.name = "A3SP",
|
||||||
.bit_shift = 11,
|
.bit_shift = 11,
|
||||||
.gov = &pm_domain_always_on_gov,
|
.gov = &pm_domain_always_on_gov,
|
||||||
.no_debug = true,
|
.no_debug = true,
|
||||||
.suspend = r8a7740_pd_a3sp_suspend,
|
.suspend = r8a7740_pd_a3sp_suspend,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A3SM",
|
||||||
|
.bit_shift = 12,
|
||||||
|
.gov = &pm_domain_always_on_gov,
|
||||||
|
.suspend = r8a7740_pd_a3sm_suspend,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A3SG",
|
||||||
|
.bit_shift = 13,
|
||||||
|
}, {
|
||||||
|
.genpd.name = "A4SU",
|
||||||
|
.bit_shift = 20,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init r8a7740_init_pm_domains(void)
|
void __init r8a7740_init_pm_domains(void)
|
||||||
{
|
{
|
||||||
rmobile_init_domains(r8a7740_pm_domains, ARRAY_SIZE(r8a7740_pm_domains));
|
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", "A3SP");
|
||||||
|
pm_genpd_add_subdomain_names("A4S", "A3SM");
|
||||||
|
pm_genpd_add_subdomain_names("A4S", "A3SG");
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PM && !CONFIG_ARCH_MULTIPLATFORM */
|
#endif /* CONFIG_PM && !CONFIG_ARCH_MULTIPLATFORM */
|
||||||
|
|
||||||
|
|
|
@ -746,6 +746,12 @@ static void r8a7740_i2c_workaround(struct platform_device *pdev)
|
||||||
void __init r8a7740_add_standard_devices(void)
|
void __init r8a7740_add_standard_devices(void)
|
||||||
{
|
{
|
||||||
static struct pm_domain_device domain_devices[] __initdata = {
|
static struct pm_domain_device domain_devices[] __initdata = {
|
||||||
|
{ "A4R", &tmu0_device },
|
||||||
|
{ "A4R", &i2c0_device },
|
||||||
|
{ "A4S", &irqpin0_device },
|
||||||
|
{ "A4S", &irqpin1_device },
|
||||||
|
{ "A4S", &irqpin2_device },
|
||||||
|
{ "A4S", &irqpin3_device },
|
||||||
{ "A3SP", &scif0_device },
|
{ "A3SP", &scif0_device },
|
||||||
{ "A3SP", &scif1_device },
|
{ "A3SP", &scif1_device },
|
||||||
{ "A3SP", &scif2_device },
|
{ "A3SP", &scif2_device },
|
||||||
|
@ -756,6 +762,11 @@ void __init r8a7740_add_standard_devices(void)
|
||||||
{ "A3SP", &scif7_device },
|
{ "A3SP", &scif7_device },
|
||||||
{ "A3SP", &scif8_device },
|
{ "A3SP", &scif8_device },
|
||||||
{ "A3SP", &i2c1_device },
|
{ "A3SP", &i2c1_device },
|
||||||
|
{ "A3SP", &ipmmu_device },
|
||||||
|
{ "A3SP", &dma0_device },
|
||||||
|
{ "A3SP", &dma1_device },
|
||||||
|
{ "A3SP", &dma2_device },
|
||||||
|
{ "A3SP", &usb_dma_device },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* I2C work-around */
|
/* I2C work-around */
|
||||||
|
|
Loading…
Add table
Reference in a new issue