Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked fromtorvalds/linux

Commitbda7b07

Browse files
andy-shevIngo Molnar
authored and
Ingo Molnar
committed
x86/platform/intel-mid: Implement power off sequence
Tell SCU that we are about powering off the device.Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>Cc: Linus Torvalds <torvalds@linux-foundation.org>Cc: Peter Zijlstra <peterz@infradead.org>Cc: Thomas Gleixner <tglx@linutronix.de>Link:http://lkml.kernel.org/r/20160907123955.21228-1-andriy.shevchenko@linux.intel.comSigned-off-by: Ingo Molnar <mingo@kernel.org>
1 parent3976b03 commitbda7b07

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

‎arch/x86/include/asm/intel-mid.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
externintintel_mid_pci_init(void);
1919
externintintel_mid_pci_set_power_state(structpci_dev*pdev,pci_power_tstate);
2020

21+
externvoidintel_mid_pwr_power_off(void);
22+
2123
#defineINTEL_MID_PWR_LSS_OFFSET4
2224
#defineINTEL_MID_PWR_LSS_TYPE(1 << 7)
2325

‎arch/x86/include/asm/intel_scu_ipc.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include<linux/notifier.h>
55

6+
#defineIPCMSG_COLD_OFF0x80/* Only for Tangier */
7+
68
#defineIPCMSG_WARM_RESET0xF0
79
#defineIPCMSG_COLD_RESET0xF1
810
#defineIPCMSG_SOFT_RESET0xF2

‎arch/x86/platform/intel-mid/intel-mid.c‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ EXPORT_SYMBOL_GPL(__intel_mid_cpu_chip);
7070

7171
staticvoidintel_mid_power_off(void)
7272
{
73+
/* Shut down South Complex via PWRMU */
74+
intel_mid_pwr_power_off();
75+
76+
/* Only for Tangier, the rest will ignore this command */
77+
intel_scu_ipc_simple_command(IPCMSG_COLD_OFF,1);
7378
};
7479

7580
staticvoidintel_mid_reboot(void)

‎arch/x86/platform/intel-mid/pwr.c‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,15 @@
4848
#definePM_CMD_CM_IMMEDIATE(1 << 9)
4949
#definePM_CMD_CM_DELAY(2 << 9)
5050
#definePM_CMD_CM_TRIGGER(3 << 9)
51-
#definePM_CMD_D3cold(1 << 21)
51+
52+
/* System states */
53+
#definePM_CMD_SYS_STATE_S5(5 << 16)
54+
55+
/* Trigger variants */
56+
#definePM_CMD_CFG_TRIGGER_NC(3 << 19)
57+
58+
/* Message to wait for TRIGGER_NC case */
59+
#defineTRIGGER_NC_MSG_2(2 << 22)
5260

5361
/* List of commands */
5462
#defineCMD_SET_CFG0x01
@@ -264,6 +272,20 @@ int intel_mid_pci_set_power_state(struct pci_dev *pdev, pci_power_t state)
264272
}
265273
EXPORT_SYMBOL_GPL(intel_mid_pci_set_power_state);
266274

275+
voidintel_mid_pwr_power_off(void)
276+
{
277+
structmid_pwr*pwr=midpwr;
278+
u32cmd=PM_CMD_SYS_STATE_S5 |
279+
PM_CMD_CMD(CMD_SET_CFG) |
280+
PM_CMD_CM_TRIGGER |
281+
PM_CMD_CFG_TRIGGER_NC |
282+
TRIGGER_NC_MSG_2;
283+
284+
/* Send command to SCU */
285+
writel(cmd,pwr->regs+PM_CMD);
286+
mid_pwr_wait(pwr);
287+
}
288+
267289
intintel_mid_pwr_get_lss_id(structpci_dev*pdev)
268290
{
269291
intvndr;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp