/* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __ARCH_ARM_MACH_MSM_MSM_WATCHDOG_H #define __ARCH_ARM_MACH_MSM_MSM_WATCHDOG_H /* The base is just address of the WDT_RST register */ #define WDT0_OFFSET 0x38 #define WDT1_OFFSET 0x60 struct msm_watchdog_pdata { /* pet interval period in ms */ unsigned int pet_time; /* bark timeout in ms */ unsigned int bark_time; bool has_secure; bool needs_expired_enable; bool has_vic; /* You have to be running in secure mode to use FIQ */ bool use_kernel_fiq; void __iomem *base; }; struct msm_watchdog_dump { uint32_t magic; uint32_t curr_cpsr; uint32_t usr_r0; uint32_t usr_r1; uint32_t usr_r2; uint32_t usr_r3; uint32_t usr_r4; uint32_t usr_r5; uint32_t usr_r6; uint32_t usr_r7; uint32_t usr_r8; uint32_t usr_r9; uint32_t usr_r10; uint32_t usr_r11; uint32_t usr_r12; uint32_t usr_r13; uint32_t usr_r14; uint32_t irq_spsr; uint32_t irq_r13; uint32_t irq_r14; uint32_t svc_spsr; uint32_t svc_r13; uint32_t svc_r14; uint32_t abt_spsr; uint32_t abt_r13; uint32_t abt_r14; uint32_t und_spsr; uint32_t und_r13; uint32_t und_r14; uint32_t fiq_spsr; uint32_t fiq_r8; uint32_t fiq_r9; uint32_t fiq_r10; uint32_t fiq_r11; uint32_t fiq_r12; uint32_t fiq_r13; uint32_t fiq_r14; }; void msm_wdog_fiq_setup(void *stack); extern unsigned int msm_wdog_fiq_length, msm_wdog_fiq_start; extern unsigned int msm7k_fiq_start, msm7k_fiq_length; #ifdef CONFIG_MSM_WATCHDOG void pet_watchdog(void); #else static inline void pet_watchdog(void) { } #endif #endif