ARM: at91/pm: remove CONFIG_AT91_SLOW_CLOCK config option
The slow clock always exists, selecting CONFIG_AT91_SLOW_CLOCK config is unnecessary for the suspend to memory mode. For this mode the master clock should always switch to the slow clock. Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Tested-by: Sylvain Rochet <sylvain.rochet@finsecur.com> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
This commit is contained in:
parent
896bc871a4
commit
09fc78a601
@ -118,19 +118,6 @@ endif # SOC_SAM_V4_V5
|
|||||||
|
|
||||||
comment "AT91 Feature Selections"
|
comment "AT91 Feature Selections"
|
||||||
|
|
||||||
config AT91_SLOW_CLOCK
|
|
||||||
bool "Suspend-to-RAM disables main oscillator"
|
|
||||||
depends on SUSPEND
|
|
||||||
help
|
|
||||||
Select this if you want Suspend-to-RAM to save the most power
|
|
||||||
possible (without powering off the CPU) by disabling the PLLs
|
|
||||||
and main oscillator so that only the 32 KiHz clock is available.
|
|
||||||
|
|
||||||
When only that slow-clock is available, some peripherals lose
|
|
||||||
functionality. Many can't issue wakeup events unless faster
|
|
||||||
clocks are available. Some lose their operating state and
|
|
||||||
need to be completely re-initialized.
|
|
||||||
|
|
||||||
config AT91_TIMER_HZ
|
config AT91_TIMER_HZ
|
||||||
int "Kernel HZ (jiffies per second)"
|
int "Kernel HZ (jiffies per second)"
|
||||||
range 32 1024
|
range 32 1024
|
||||||
|
@ -13,7 +13,7 @@ obj-$(CONFIG_SOC_SAMA5) += sama5.o
|
|||||||
|
|
||||||
# Power Management
|
# Power Management
|
||||||
obj-$(CONFIG_PM) += pm.o
|
obj-$(CONFIG_PM) += pm.o
|
||||||
obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o
|
obj-$(CONFIG_PM) += pm_slowclock.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_PM_DEBUG),y)
|
ifeq ($(CONFIG_PM_DEBUG),y)
|
||||||
CFLAGS_pm.o += -DDEBUG
|
CFLAGS_pm.o += -DDEBUG
|
||||||
|
@ -123,11 +123,9 @@ EXPORT_SYMBOL(at91_suspend_entering_slow_clock);
|
|||||||
static void (*slow_clock)(void __iomem *pmc, void __iomem *ramc0,
|
static void (*slow_clock)(void __iomem *pmc, void __iomem *ramc0,
|
||||||
void __iomem *ramc1, int memctrl);
|
void __iomem *ramc1, int memctrl);
|
||||||
|
|
||||||
#ifdef CONFIG_AT91_SLOW_CLOCK
|
|
||||||
extern void at91_slow_clock(void __iomem *pmc, void __iomem *ramc0,
|
extern void at91_slow_clock(void __iomem *pmc, void __iomem *ramc0,
|
||||||
void __iomem *ramc1, int memctrl);
|
void __iomem *ramc1, int memctrl);
|
||||||
extern u32 at91_slow_clock_sz;
|
extern u32 at91_slow_clock_sz;
|
||||||
#endif
|
|
||||||
|
|
||||||
static int at91_pm_enter(suspend_state_t state)
|
static int at91_pm_enter(suspend_state_t state)
|
||||||
{
|
{
|
||||||
@ -151,10 +149,9 @@ static int at91_pm_enter(suspend_state_t state)
|
|||||||
* turning off the main oscillator; reverse on wakeup.
|
* turning off the main oscillator; reverse on wakeup.
|
||||||
*/
|
*/
|
||||||
if (slow_clock) {
|
if (slow_clock) {
|
||||||
#ifdef CONFIG_AT91_SLOW_CLOCK
|
|
||||||
/* copy slow_clock handler to SRAM, and call it */
|
/* copy slow_clock handler to SRAM, and call it */
|
||||||
memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz);
|
memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz);
|
||||||
#endif
|
|
||||||
slow_clock(at91_pmc_base, at91_ramc_base[0],
|
slow_clock(at91_pmc_base, at91_ramc_base[0],
|
||||||
at91_ramc_base[1],
|
at91_ramc_base[1],
|
||||||
at91_pm_data.memctrl);
|
at91_pm_data.memctrl);
|
||||||
@ -263,7 +260,6 @@ static __init void at91_dt_ramc(void)
|
|||||||
at91_pm_set_standby(standby);
|
at91_pm_set_standby(standby);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_AT91_SLOW_CLOCK
|
|
||||||
static void __init at91_pm_sram_init(void)
|
static void __init at91_pm_sram_init(void)
|
||||||
{
|
{
|
||||||
struct gen_pool *sram_pool;
|
struct gen_pool *sram_pool;
|
||||||
@ -300,16 +296,10 @@ static void __init at91_pm_sram_init(void)
|
|||||||
sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base);
|
sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base);
|
||||||
slow_clock = __arm_ioremap_exec(sram_pbase, at91_slow_clock_sz, false);
|
slow_clock = __arm_ioremap_exec(sram_pbase, at91_slow_clock_sz, false);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static void __init at91_pm_init(void)
|
static void __init at91_pm_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_AT91_SLOW_CLOCK
|
|
||||||
at91_pm_sram_init();
|
at91_pm_sram_init();
|
||||||
#endif
|
|
||||||
|
|
||||||
pr_info("AT91: Power Management%s\n", (slow_clock ? " (with slow clock mode)" : ""));
|
|
||||||
|
|
||||||
if (at91_cpuidle_device.dev.platform_data)
|
if (at91_cpuidle_device.dev.platform_data)
|
||||||
platform_device_register(&at91_cpuidle_device);
|
platform_device_register(&at91_cpuidle_device);
|
||||||
|
Loading…
Reference in New Issue
Block a user