d2b074a82db69aa6e89a548dc817505450d78932
[sfrench/cifs-2.6.git] / drivers / watchdog / intel_scu_watchdog.h
1 /*
2  *      Intel_SCU 0.2:  An Intel SCU IOH Based Watchdog Device
3  *                      for Intel part #(s):
4  *                              - AF82MP20 PCH
5  *
6  *      Copyright (C) 2009-2010 Intel Corporation. All rights reserved.
7  *
8  *      This program is free software; you can redistribute it and/or
9  *      modify it under the terms of version 2 of the GNU General
10  *      Public License as published by the Free Software Foundation.
11  *
12  *      This program is distributed in the hope that it will be
13  *      useful, but WITHOUT ANY WARRANTY; without even the implied
14  *      warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  *      PURPOSE.  See the GNU General Public License for more details.
16  *      You should have received a copy of the GNU General Public
17  *      License along with this program; if not, write to the Free
18  *      Software Foundation, Inc., 59 Temple Place - Suite 330,
19  *      Boston, MA  02111-1307, USA.
20  *      The full GNU General Public License is included in this
21  *      distribution in the file called COPYING.
22  *
23  */
24
25 #ifndef __INTEL_SCU_WATCHDOG_H
26 #define __INTEL_SCU_WATCHDOG_H
27
28 #define PFX "Intel_SCU: "
29 #define WDT_VER "0.3"
30
31 /* minimum time between interrupts */
32 #define MIN_TIME_CYCLE 1
33
34 /* Time from warning to reboot is 2 seconds */
35 #define DEFAULT_SOFT_TO_HARD_MARGIN 2
36
37 #define MAX_TIME 170
38
39 #define DEFAULT_TIME 5
40
41 #define MAX_SOFT_TO_HARD_MARGIN (MAX_TIME-MIN_TIME_CYCLE)
42
43 /* Ajustment to clock tick frequency to make timing come out right */
44 #define FREQ_ADJUSTMENT 8
45
46 struct intel_scu_watchdog_dev {
47         ulong driver_open;
48         ulong driver_closed;
49         u32 timer_started;
50         u32 timer_set;
51         u32 threshold;
52         u32 soft_threshold;
53         u32 __iomem *timer_load_count_addr;
54         u32 __iomem *timer_current_value_addr;
55         u32 __iomem *timer_control_addr;
56         u32 __iomem *timer_clear_interrupt_addr;
57         u32 __iomem *timer_interrupt_status_addr;
58         struct sfi_timer_table_entry *timer_tbl_ptr;
59         struct notifier_block intel_scu_notifier;
60         struct miscdevice miscdev;
61 };
62
63 extern int sfi_mtimer_num;
64
65 /* extern struct sfi_timer_table_entry *sfi_get_mtmr(int hint); */
66 #endif /* __INTEL_SCU_WATCHDOG_H */