blob: 6818680d681466ec7d35fc7ac6d6a6409856b589 [file] [log] [blame]
/* 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