static int gen_wdt_bite(const char *val, struct kernel_param *kp) { static void __iomem *msm_tmr0_base; msm_tmr0_base = wdt_timer_get_timer0_base(); __raw_writel(0, msm_tmr0_base + WDT0_EN); __raw_writel(1, msm_tmr0_base + WDT0_RST); __raw_writel(5 * 0x31F3, msm_tmr0_base + WDT0_BARK_TIME); __raw_writel(0x31F3, msm_tmr0_base + WDT0_BITE_TIME); __raw_writel(1, msm_tmr0_base + WDT0_EN); return 0; }
void lge_disable_watchdog(void) { static int once = 1; void __iomem *msm_tmr0_base; if (once > 1) return; msm_tmr0_base = wdt_timer_get_timer0_base(); if (!msm_tmr0_base) return; writel_relaxed(0, msm_tmr0_base + WDT0_EN); mb(); once++; pr_info("%s\n", __func__); }
static int gen_wdt_bite(const char *val, struct kernel_param *kp) { void __iomem *msm_tmr0_base; msm_tmr0_base = wdt_timer_get_timer0_base(); pr_info("%s\n", __func__); writel_relaxed(0, msm_tmr0_base + WDT0_EN); writel_relaxed(1, msm_tmr0_base + WDT0_RST); writel_relaxed(5 * 0x31F3, msm_tmr0_base + WDT0_BARK_TIME); writel_relaxed(0x31F3, msm_tmr0_base + WDT0_BITE_TIME); writel_relaxed(1, msm_tmr0_base + WDT0_EN); mb(); mdelay(5000); pr_err("%s failed\n", __func__); return -EIO; }