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 */ 67