Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86,mrst: Power control commands update

On the Intel MID devices SCU commands are issued to manage power
off and the like. We need to issue different ones for
non-Lincroft based devices.

Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Jacob Pan and committed by
Ingo Molnar
48bc5562 6be30bb7

+22 -15
+8 -4
arch/x86/include/asm/intel_scu_ipc.h
··· 3 3 4 4 #include <linux/notifier.h> 5 5 6 - #define IPCMSG_VRTC 0xFA /* Set vRTC device */ 6 + #define IPCMSG_WARM_RESET 0xF0 7 + #define IPCMSG_COLD_RESET 0xF1 8 + #define IPCMSG_SOFT_RESET 0xF2 9 + #define IPCMSG_COLD_BOOT 0xF3 7 10 8 - /* Command id associated with message IPCMSG_VRTC */ 9 - #define IPC_CMD_VRTC_SETTIME 1 /* Set time */ 10 - #define IPC_CMD_VRTC_SETALARM 2 /* Set alarm */ 11 + #define IPCMSG_VRTC 0xFA /* Set vRTC device */ 12 + /* Command id associated with message IPCMSG_VRTC */ 13 + #define IPC_CMD_VRTC_SETTIME 1 /* Set time */ 14 + #define IPC_CMD_VRTC_SETALARM 2 /* Set alarm */ 11 15 12 16 /* Read single register */ 13 17 int intel_scu_ipc_ioread8(u16 addr, u8 *data);
+14 -11
arch/x86/platform/mrst/mrst.c
··· 76 76 EXPORT_SYMBOL_GPL(sfi_mrtc_array); 77 77 int sfi_mrtc_num; 78 78 79 + static void mrst_power_off(void) 80 + { 81 + if (__mrst_cpu_chip == MRST_CPU_CHIP_LINCROFT) 82 + intel_scu_ipc_simple_command(IPCMSG_COLD_RESET, 1); 83 + } 84 + 85 + static void mrst_reboot(void) 86 + { 87 + if (__mrst_cpu_chip == MRST_CPU_CHIP_LINCROFT) 88 + intel_scu_ipc_simple_command(IPCMSG_COLD_RESET, 0); 89 + else 90 + intel_scu_ipc_simple_command(IPCMSG_COLD_BOOT, 0); 91 + } 92 + 79 93 /* parse all the mtimer info to a static mtimer array */ 80 94 static int __init sfi_parse_mtmr(struct sfi_table_header *table) 81 95 { ··· 277 263 static int mrst_i8042_detect(void) 278 264 { 279 265 return 0; 280 - } 281 - 282 - /* Reboot and power off are handled by the SCU on a MID device */ 283 - static void mrst_power_off(void) 284 - { 285 - intel_scu_ipc_simple_command(0xf1, 1); 286 - } 287 - 288 - static void mrst_reboot(void) 289 - { 290 - intel_scu_ipc_simple_command(0xf1, 0); 291 266 } 292 267 293 268 /*