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