ARM: rockchip: rv1106_pm: do hptimer soft adjust
Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com> Change-Id: Ic5ca15872d3c03224104a2d1e0d18e9c0a2898be
This commit is contained in:
committed by
Tao Huang
parent
f0c103f43b
commit
ed577e0c81
@@ -6,7 +6,7 @@ obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip.o
|
||||
ifdef CONFIG_PM_SLEEP
|
||||
obj-$(CONFIG_CPU_RK3288) += pm.o sleep.o
|
||||
obj-$(CONFIG_CPU_RV1106) += rv1106_pm.o rv1106_sleep.o rkpm_helpers.o \
|
||||
rkpm_uart.o rkpm_gicv2.o
|
||||
rkpm_uart.o rkpm_gicv2.o rockchip_hptimer.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_SMP) += headsmp.o platsmp.o
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "rkpm_gicv2.h"
|
||||
#include "rkpm_helpers.h"
|
||||
#include "rkpm_uart.h"
|
||||
#include "rockchip_hptimer.h"
|
||||
#include "rv1106_pm.h"
|
||||
|
||||
#define RV1106_PM_REG_REGION_MEM_SIZE SZ_4K
|
||||
@@ -91,6 +92,7 @@ static void __iomem *uartdbg_base;
|
||||
static void __iomem *pmu_base;
|
||||
static void __iomem *gicd_base;
|
||||
static void __iomem *gicc_base;
|
||||
static void __iomem *hptimer_base;
|
||||
static void __iomem *firewall_ddr_base;
|
||||
static void __iomem *firewall_syssram_base;
|
||||
static void __iomem *pmu_base;
|
||||
@@ -656,6 +658,9 @@ static void pvtm_32k_config_restore(void)
|
||||
{
|
||||
writel_relaxed(WITH_16BITS_WMSK(ddr_data.pmucru_sel_con7),
|
||||
pmucru_base + RV1106_PMUCRU_CLKSEL_CON(7));
|
||||
|
||||
if (rk_hptimer_get_mode(hptimer_base) == RK_HPTIMER_SOFT_ADJUST_MODE)
|
||||
rk_hptimer_do_soft_adjust_no_wait(hptimer_base);
|
||||
}
|
||||
|
||||
static void ddr_sleep_config(void)
|
||||
@@ -1134,6 +1139,12 @@ RE_ENTER_SLEEP:
|
||||
}
|
||||
}
|
||||
|
||||
if (rk_hptimer_get_mode(hptimer_base) == RK_HPTIMER_SOFT_ADJUST_MODE) {
|
||||
if (rk_hptimer_wait_mode(hptimer_base,
|
||||
RK_HPTIMER_SOFT_ADJUST_MODE))
|
||||
rkpm_printstr("WARN: can't wait hptimer soft adjust mode!\n");
|
||||
}
|
||||
|
||||
fiq_glue_resume();
|
||||
|
||||
rv1106_dbg_irq_finish();
|
||||
@@ -1163,6 +1174,8 @@ static int __init rv1106_suspend_init(struct device_node *np)
|
||||
gicd_base = dev_reg_base + RV1106_GIC_OFFSET + 0x1000;
|
||||
gicc_base = dev_reg_base + RV1106_GIC_OFFSET + 0x2000;
|
||||
|
||||
hptimer_base = dev_reg_base + RV1106_HPTIMER_OFFSET;
|
||||
|
||||
firewall_ddr_base = dev_reg_base + RV1106_FW_DDR_OFFSET;
|
||||
firewall_syssram_base = dev_reg_base + RV1106_FW_SRAM_OFFSET;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user