Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15fee17d authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'renesas-runtime-pm-for-v3.19' of...

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: default avatarArnd Bergmann <arnd@arndb.de>
parents dc680b98 dc4470e1
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -1234,8 +1234,15 @@ static void __init eva_init(void)
	static struct pm_domain_device domain_devices[] __initdata = {
		{ "A4LC", &lcdc0_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,
				     ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
@@ -1304,6 +1311,7 @@ static void __init eva_init(void)

		platform_device_register(&vcc_sdhi1);
		platform_device_register(&sdhi1_device);
		sdhi1 = &sdhi1_device;
	}


@@ -1324,6 +1332,8 @@ static void __init eva_init(void)
				       ARRAY_SIZE(domain_devices));
	if (usb)
		rmobile_add_device_to_domain("A3SP", usb);
	if (sdhi1)
		rmobile_add_device_to_domain("A3SP", sdhi1);

	r8a7740_pm_init();
}
+40 −4
Original line number Diff line number Diff line
@@ -14,10 +14,10 @@
#include "pm-rmobile.h"

#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.
	 */
	return -EBUSY;
@@ -32,29 +32,65 @@ static int r8a7740_pd_a3sp_suspend(void)
	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",
		.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",
		.bit_shift	= 10,
		.gov		= &pm_domain_always_on_gov,
		.no_debug	= true,
		.suspend	= r8a7740_pd_a4s_suspend,
	}, {
		.genpd.name	= "A3SP",
		.bit_shift	= 11,
		.gov		= &pm_domain_always_on_gov,
		.no_debug	= true,
		.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)
{
	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 */

+11 −0
Original line number Diff line number Diff line
@@ -746,6 +746,12 @@ static void r8a7740_i2c_workaround(struct platform_device *pdev)
void __init r8a7740_add_standard_devices(void)
{
	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", &scif1_device },
		{ "A3SP", &scif2_device },
@@ -756,6 +762,11 @@ void __init r8a7740_add_standard_devices(void)
		{ "A3SP", &scif7_device },
		{ "A3SP", &scif8_device },
		{ "A3SP", &i2c1_device },
		{ "A3SP", &ipmmu_device },
		{ "A3SP", &dma0_device },
		{ "A3SP", &dma1_device },
		{ "A3SP", &dma2_device },
		{ "A3SP", &usb_dma_device },
	};

	/* I2C work-around */