1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Processor reset using WDT. 4 * 5 * Copyright (C) 2012 Dmitry Bondar <bond@inmys.ru> 6 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> 7 */ 8 9 #include <common.h> 10 #include <asm/io.h> 11 #include <asm/arch/timer_defs.h> 12 #include <asm/arch/hardware.h> 13 14 void reset_cpu(unsigned long a) 15 { 16 struct davinci_timer *const wdttimer = 17 (struct davinci_timer *)DAVINCI_WDOG_BASE; 18 writel(0x08, &wdttimer->tgcr); 19 writel(readl(&wdttimer->tgcr) | 0x03, &wdttimer->tgcr); 20 writel(0, &wdttimer->tim12); 21 writel(0, &wdttimer->tim34); 22 writel(0, &wdttimer->prd12); 23 writel(0, &wdttimer->prd34); 24 writel(readl(&wdttimer->tcr) | 0x40, &wdttimer->tcr); 25 writel(readl(&wdttimer->wdtcr) | 0x4000, &wdttimer->wdtcr); 26 writel(0xa5c64000, &wdttimer->wdtcr); 27 writel(0xda7e4000, &wdttimer->wdtcr); 28 writel(0x4000, &wdttimer->wdtcr); 29 while (1) 30 /*nothing*/; 31 } 32