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

Commit 802a5639 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Rafael J. Wysocki
Browse files

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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: default avatarMagnus Damm <damm@opensource.se>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 8459293c
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -608,6 +608,7 @@ enum {


#ifdef CONFIG_PM
#ifdef CONFIG_PM
extern struct rmobile_pm_domain r8a7740_pd_a4s;
extern struct rmobile_pm_domain r8a7740_pd_a4s;
extern struct rmobile_pm_domain r8a7740_pd_a3sp;
#endif /* CONFIG_PM */
#endif /* CONFIG_PM */


#endif /* __ASM_R8A7740_H__ */
#endif /* __ASM_R8A7740_H__ */
+19 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,7 @@
 * License.  See the file "COPYING" in the main directory of this archive
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 * for more details.
 */
 */
#include <linux/console.h>
#include <mach/pm-rmobile.h>
#include <mach/pm-rmobile.h>


#ifdef CONFIG_PM
#ifdef CONFIG_PM
@@ -27,4 +28,22 @@ struct rmobile_pm_domain r8a7740_pd_a4s = {
	.no_debug	= true,
	.no_debug	= true,
	.suspend	= r8a7740_pd_a4s_suspend,
	.suspend	= r8a7740_pd_a4s_suspend,
};
};

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;
}

struct rmobile_pm_domain r8a7740_pd_a3sp = {
	.genpd.name	= "A3SP",
	.bit_shift	= 11,
	.gov		= &pm_domain_always_on_gov,
	.no_debug	= true,
	.suspend	= r8a7740_pd_a3sp_suspend,
};

#endif /* CONFIG_PM */
#endif /* CONFIG_PM */
+16 −0
Original line number Original line Diff line number Diff line
@@ -674,12 +674,28 @@ void __init r8a7740_add_standard_devices(void)


	/* PM domain */
	/* PM domain */
	rmobile_init_pm_domain(&r8a7740_pd_a4s);
	rmobile_init_pm_domain(&r8a7740_pd_a4s);
	rmobile_init_pm_domain(&r8a7740_pd_a3sp);

	rmobile_pm_add_subdomain(&r8a7740_pd_a4s, &r8a7740_pd_a3sp);


	/* add devices */
	/* add devices */
	platform_add_devices(r8a7740_early_devices,
	platform_add_devices(r8a7740_early_devices,
			    ARRAY_SIZE(r8a7740_early_devices));
			    ARRAY_SIZE(r8a7740_early_devices));
	platform_add_devices(r8a7740_late_devices,
	platform_add_devices(r8a7740_late_devices,
			     ARRAY_SIZE(r8a7740_late_devices));
			     ARRAY_SIZE(r8a7740_late_devices));

	/* add devices to PM domain  */

	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif0_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif1_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif2_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif3_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif4_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif5_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif6_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scif7_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&scifb_device);
	rmobile_add_device_to_domain(&r8a7740_pd_a3sp,	&i2c1_device);
}
}


static void __init r8a7740_earlytimer_init(void)
static void __init r8a7740_earlytimer_init(void)