pm.c

来自「linux内核源码」· C语言 代码 · 共 82 行

C
82
字号
/* * hp6x0 Power Management Routines * * Copyright (c) 2006 Andriy Skulysh <askulsyh@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License. */#include <linux/init.h>#include <linux/suspend.h>#include <linux/errno.h>#include <linux/time.h>#include <asm/io.h>#include <asm/hd64461.h>#include <asm/hp6xx.h>#include <asm/cpu/dac.h>#include <asm/pm.h>#define STBCR		0xffffff82#define STBCR2		0xffffff88static int hp6x0_pm_enter(suspend_state_t state){	u8 stbcr, stbcr2;#ifdef CONFIG_HD64461_ENABLER	u8 scr;	u16 hd64461_stbcr;#endif#ifdef CONFIG_HD64461_ENABLER	outb(0, HD64461_PCC1CSCIER);	scr = inb(HD64461_PCC1SCR);	scr |= HD64461_PCCSCR_VCC1;	outb(scr, HD64461_PCC1SCR);	hd64461_stbcr = inw(HD64461_STBCR);	hd64461_stbcr |= HD64461_STBCR_SPC1ST;	outw(hd64461_stbcr, HD64461_STBCR);#endif	ctrl_outb(0x1f, DACR);	stbcr = ctrl_inb(STBCR);	ctrl_outb(0x01, STBCR);	stbcr2 = ctrl_inb(STBCR2);	ctrl_outb(0x7f , STBCR2);	outw(0xf07f, HD64461_SCPUCR);	pm_enter();	outw(0, HD64461_SCPUCR);	ctrl_outb(stbcr, STBCR);	ctrl_outb(stbcr2, STBCR2);#ifdef CONFIG_HD64461_ENABLER	hd64461_stbcr = inw(HD64461_STBCR);	hd64461_stbcr &= ~HD64461_STBCR_SPC1ST;	outw(hd64461_stbcr, HD64461_STBCR);	outb(0x4c, HD64461_PCC1CSCIER);	outb(0x00, HD64461_PCC1CSCR);#endif	return 0;}static struct platform_suspend_ops hp6x0_pm_ops = {	.enter		= hp6x0_pm_enter,	.valid		= suspend_valid_only_mem,};static int __init hp6x0_pm_init(void){	suspend_set_ops(&hp6x0_pm_ops);	return 0;}late_initcall(hp6x0_pm_init);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?