Beispiel #1
0
void exynos_wakeup_sys_powerdown(enum sys_powerdown mode, bool early_wakeup)
{

	if (early_wakeup)
		exynos_pmu_cal_sys_earlywake(mode);
	else
		exynos_pmu_cal_sys_post(mode);

	exynos_idle_clock_down(true, LITTLE);
	exynos_idle_clock_down(true, BIG);

	exynos_sys_powerdown_restore_clk(mode);

	switch (mode) {
	case SYS_AFTR:
		break;
	case SYS_ALPA:
		exynos_ctrl_alpa(false);
	case SYS_LPA:
		exynos_lpa_exit();
		exynos_aud_alpa_notifier(false);
		break;
	case SYS_SLEEP:
#if defined(CONFIG_SOC_EXYNOS7420)
		/* Set Apollo SRAM control sysreg to Dual rail mode*/
		__raw_writel(0x0, EXYNOS7420_VA_SYSREG + 0x0054);
#endif
		break;
	default:
		break;
	}
}
Beispiel #2
0
void exynos_prepare_sys_powerdown(enum sys_powerdown mode)
{
	exynos_set_wakeupmask(mode);
	exynos_pmu_cal_sys_prepare(mode);

	exynos_idle_clock_down(false, LITTLE);
	exynos_idle_clock_down(false, BIG);

	switch (mode) {
	case SYS_AFTR:
		break;
	case SYS_ALPA:
		exynos_ctrl_alpa(true);
	case SYS_LPA:
		if(!exynos_lpa_enter())
			exynos_aud_alpa_notifier(true);
		break;
	case SYS_SLEEP:
		break;
	default:
		break;
	}

	exynos_sys_powerdown_set_clk(mode);
}
Beispiel #3
0
int __init exynos_powermode_init(void)
{
	exynos_idle_clock_down(true, LITTLE);
	exynos_idle_clock_down(true, BIG);

	init_c2_state_mask();

	exynos_pmu_cal_sys_init();

	exynos_lpm_dt_init();

	if (sysfs_create_file(power_kobj, &lpc_attribute.attr))
		pr_err("%s: failed to create sysfs to control LPC\n", __func__);

	return 0;
}
void exynos_prepare_sys_powerdown(enum sys_powerdown mode)
{
	exynos7580_set_wakeupmask(mode);

	exynos_pmu_cal_sys_prepare(mode);

	exynos_idle_clock_down(false);

	switch (mode) {
	case SYS_LPA:
		exynos_lpa_enter();
		break;
	default:
		break;
	}

	exynos_sys_powerdown_set_clk(mode);
}
void exynos_wakeup_sys_powerdown(enum sys_powerdown mode, bool early_wakeup)
{
	if (early_wakeup)
		exynos_pmu_cal_sys_earlywake(mode);
	else
		exynos_pmu_cal_sys_post(mode);

	exynos_idle_clock_down(true);

	exynos_sys_powerdown_restore_clk(mode);

	switch (mode) {
	case SYS_LPA:
		exynos_lpa_exit();
		break;
	default:
		break;
	}
}
int __init exynos_powermode_init(void)
{
	store_boot_cpu_info();

	if (IS_ENABLED(CONFIG_CPU_IDLE_EXYNOS))
		exynos_idle_clock_down(true);

	init_cpd_state_mask();

	exynos_lpm_dt_init();

	exynos_pmu_cal_sys_init();

	if (sysfs_create_file(power_kobj, &lpc_attribute.attr))
		pr_err("%s: failed to create sysfs to control LPC\n", __func__);

#ifdef CONFIG_ARM_EXYNOS_SMP_CPUFREQ
	disable_c3_idle = exynos_disable_cluster_power_down;
#endif
	return 0;
}