Lines Matching +full:smi +full:- +full:based

1 // SPDX-License-Identifier: GPL-2.0+
5 * (c) Copyright 2006-2009 Wim Van Sebroeck <[email protected]>.
9 * provided "AS-IS" and at no charge.
26 #include <linux/errno.h> /* For the -ENODEV/... values */
29 #include <linux/ioport.h> /* For io-port access */
35 /* SuperMicro Pentium 3 Era 370SSE+-OEM1/P3TSSE */
37 /* SuperMicro Pentium 4 / Xeon 4 / EMT64T Era Systems - no longer supported */
47 "0 (none), 1=SuperMicro Pent3, 911=Broken SMI BIOS");
55 * Board: Super Micro Computer Inc. 370SSE+-OEM1/P3TSSE
62 * BIOS setup -> Power -> TCO Logic SMI Enable -> Within5Minutes
63 * This setting enables SMI to clear the watchdog expired flag.
64 * If BIOS or CPU fail which may cause SMI hang, then system will
66 * application has to take over the control from SMI.
81 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ in supermicro_old_pre_start()
82 val32 = inl(smires->start); in supermicro_old_pre_start()
83 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ in supermicro_old_pre_start()
84 outl(val32, smires->start); /* Needed to activate watchdog */ in supermicro_old_pre_start()
91 /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */ in supermicro_old_pre_stop()
92 val32 = inl(smires->start); in supermicro_old_pre_stop()
93 val32 |= 0x00002000; /* Turn on SMI clearing watchdog */ in supermicro_old_pre_stop()
94 outl(val32, smires->start); /* Needed to deactivate watchdog */ in supermicro_old_pre_stop()
99 * Board: Some Intel ICHx based motherboards
103 * the SMI handler clear's the TIMEOUT bit in the TC01_STS register
108 * debugging: the SMI handler is quite simple - it tests value in
114 * TIMEOUT can get set to 1 and SMI generated when TCO_TMR_HLT is set
119 * broken code by disabling Global SMI.
121 * WARNING: globally disabling SMI could possibly lead to dramatic
123 * SMI is used for communication between OS and firmware.
132 val32 = inl(smires->start); in broken_bios_start()
133 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# in broken_bios_start()
134 Bit 0: GBL_SMI_EN -> 0 = No SMI# will be generated by ICH. */ in broken_bios_start()
136 outl(val32, smires->start); in broken_bios_start()
143 val32 = inl(smires->start); in broken_bios_stop()
144 /* Bit 13: TCO_EN -> 1 = Enables TCO logic generating an SMI# in broken_bios_stop()
145 Bit 0: GBL_SMI_EN -> 1 = Turn global SMI on again. */ in broken_bios_stop()
147 outl(val32, smires->start); in broken_bios_stop()
198 return -EINVAL; in iTCO_vendor_init_module()
200 pr_info("vendor-support=%d\n", iTCO_vendorsupport); in iTCO_vendor_init_module()