| 123456789101112131415161718192021222324252627282930313233343536373839404142 | // SPDX-License-Identifier: GPL-2.0+/* * Copyright (C) 2012 Samsung Electronics * Minkyu Kang <mk7.kang@samsung.com> */#include <common.h>#include <asm/io.h>#include <asm/arch/watchdog.h>#define PRESCALER_VAL 255void wdt_stop(void){	struct s5p_watchdog *wdt =		(struct s5p_watchdog *)samsung_get_base_watchdog();	unsigned int wtcon;	wtcon = readl(&wdt->wtcon);	wtcon &= ~(WTCON_EN | WTCON_INT | WTCON_RESET);	writel(wtcon, &wdt->wtcon);}void wdt_start(unsigned int timeout){	struct s5p_watchdog *wdt =		(struct s5p_watchdog *)samsung_get_base_watchdog();	unsigned int wtcon;	wdt_stop();	wtcon = readl(&wdt->wtcon);	wtcon |= (WTCON_EN | WTCON_CLK(WTCON_CLK_128));	wtcon &= ~WTCON_INT;	wtcon |= WTCON_RESET;	wtcon |= WTCON_PRESCALER(PRESCALER_VAL);	writel(timeout, &wdt->wtdat);	writel(timeout, &wdt->wtcnt);	writel(wtcon, &wdt->wtcon);}
 |