Exemple #1
0
static void rk3288_restart(char mode, const char *cmd)
{
	u32 boot_flag, boot_mode;

	rockchip_restart_get_boot_mode(cmd, &boot_flag, &boot_mode);

	writel_relaxed(boot_flag, RK_PMU_VIRT + RK3288_PMU_SYS_REG0);	// for loader
	writel_relaxed(boot_mode, RK_PMU_VIRT + RK3288_PMU_SYS_REG1);	// for linux
	dsb();

	writel_relaxed(0xeca8, RK_CRU_VIRT + RK3288_CRU_GLB_SRST_SND_VALUE);
	dsb();
}
static void rk3188_restart(char mode, const char *cmd)
{
	u32 boot_flag, boot_mode;

	rockchip_restart_get_boot_mode(cmd, &boot_flag, &boot_mode);

	writel_relaxed(boot_flag, RK_PMU_VIRT + RK3188_PMU_SYS_REG0);	// for loader
	writel_relaxed(boot_mode, RK_PMU_VIRT + RK3188_PMU_SYS_REG1);	// for linux
	dsb();

	/* disable remap */
	writel_relaxed(1 << (12 + 16), RK_GRF_VIRT + RK3188_GRF_SOC_CON0);
	/* pll enter slow mode */
	writel_relaxed(RK3188_PLL_MODE_SLOW(RK3188_APLL_ID) |
		       RK3188_PLL_MODE_SLOW(RK3188_CPLL_ID) |
		       RK3188_PLL_MODE_SLOW(RK3188_GPLL_ID),
		       RK_CRU_VIRT + RK3188_CRU_MODE_CON);
	dsb();
	writel_relaxed(0xeca8, RK_CRU_VIRT + RK3188_CRU_GLB_SRST_SND);
	dsb();
}