亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? apm2.c

?? linux和2410結合開發 用他可以生成2410所需的zImage文件
?? C
字號:
/* * bios-less APM driver for ARM Linux  *  Jamey Hicks <jamey@crl.dec.com> *  adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com) * * APM 1.2 Reference: *   Intel Corporation, Microsoft Corporation. Advanced Power Management *   (APM) BIOS Interface Specification, Revision 1.2, February 1996. * * [This document is available from Microsoft at: *    http://www.microsoft.com/hwdev/busbios/amp_12.htm] *   Thr 29 Nov 2001 Nandy Lyu <nandy@mizi.com>   - Modified for MIZI Power Management   Mon 14 Jan 2002 Yong-iL Joh <tolkien@mizi.com>   - modified followed by MIZI's "kernel vs Application API spec (0.3, draft)"   Fri May 10 2002 Yong-iL Joh <tolkien@mizi.com>   - kernel vs app. API spec (draft) v1.33 * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file COPYING in the main directory of this archive * for more details. */#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/poll.h>#include <linux/miscdevice.h>#include <linux/apm_bios.h>#include <linux/pm.h>#include <linux/errno.h>#include <asm/hardware.h>#include <linux/proc_fs.h>/* *  Debug macros  *//* 0 : Quiet 1 : Audible 2 : Loud 3 : Noisy */#undef CONFIG_APM_DEBUG	1#ifdef CONFIG_APM_DEBUG#define DEBUG(n, args...)		\	if (n <= CONFIG_APM_DEBUG) {	\	    printk(KERN_INFO args);	\	}#else#define DEBUG(n, args...)#endifextern wait_queue_head_t mz_event_queue;#define INCBUF(x,mod) (((x)+1) & ((mod) - 1))extern struct mz_event_queue_t mz_event_q;extern int pm_suggest_suspend(void);extern int pm_do_suspend(void);static int apm_bios_ioctl(struct inode * inode, struct file *filp,		    u_int cmd, u_long arg){    int ret = 0;    struct pm_dev *pm_dev = NULL;    static int apm_lcd_status = LCD_ON;    switch (cmd) {    case APM_IOC_SUSPEND:      pm_suggest_suspend();      break;    case APM_MZ_SLEEP:      pm_do_suspend();      break;    case APM_LCD_OFF:      DEBUG(2, __FILE__ ": LCD OFF\n");      while ((pm_dev = pm_find(PM_USER_DEV, pm_dev)) != NULL) {	if ((pm_dev->id == PM_USER_LCD) || (pm_dev->id == PM_USER_LIGHT)) {	  DEBUG(2, __FILE__ ": find LCD device\n");	  ret = pm_send(pm_dev, PM_SUSPEND, (void *)2);	  if (ret) {	    DEBUG(1, __FILE__ ": error in pm_send(0x%lx)\n", pm_dev->id);	    return ret;	  }	}      }      apm_lcd_status = LCD_OFF;      break;    case APM_LCD_ON:      DEBUG(2, __FILE__ ": LCD ON\n");      while ((pm_dev = pm_find(PM_USER_DEV, pm_dev)) != NULL) {	if ((pm_dev->id == PM_USER_LCD) || (pm_dev->id == PM_USER_LIGHT)) {	  DEBUG(2, __FILE__ ": find LCD device\n");	  ret = pm_send(pm_dev, PM_RESUME, (void *)0);	  if (ret) {	    DEBUG(1, __FILE__ ": error in pm_send(0x%lx)\n", pm_dev->id);	    return ret;	  }	}      }      apm_lcd_status = LCD_ON;      break;    case APM_DEV_LIST:#ifdef CONFIG_APM_DEBUG      printk("type \t\t id \t\t state \t prev_state \n");      while ((pm_dev = pm_find(PM_UNKNOWN_DEV, pm_dev)) != NULL) {	printk("0x%08x \t 0x%08lx \t %d \t %d\n",	       (int)pm_dev->type, (unsigned long)pm_dev->id,	       (int)pm_dev->state, (int)pm_dev->prev_state);      }#endif      break;    case APM_DEV_ONOFF: {      struct pm_dev *pm_dev2;      pm_dev2 = (struct pm_dev *)kmalloc(sizeof(struct pm_dev), GFP_KERNEL);      if (pm_dev2 == NULL)	return -ENOMEM;      ret = copy_from_user(pm_dev2, (struct pm_dev *)arg,			   sizeof(struct pm_dev));      if (ret)	return ret;      while ((pm_dev = pm_find(pm_dev2->type, pm_dev)) != NULL) {	if (pm_dev->id == pm_dev2->id)	  ret = pm_send(pm_dev, pm_dev2->state, pm_dev2->data);	break;      }      kfree(pm_dev2);      return ret;    } break;    case GET_BATTERY_STATUS: {      BATTERY_RET bat_dev = {	sec:	0,	level:	-1,	ac:	AC_UNKNOWN,	battery: BATTERY_UNKNOWN,      };      if (mz_pm_ops.get_power_status == NULL)	return -EIO;      if (!(ret = (*(mz_pm_ops.get_power_status))(&bat_dev))) {	if (copy_to_user((BATTERY_RET *)arg, &bat_dev, sizeof(BATTERY_RET)))	    return -EINVAL;      } else return -EIO;    } break;    case GET_JIFFIES:      return put_user(pm_last_jiffies, (unsigned long *)arg);      break;    case GET_LCD_STATUS:      return put_user(apm_lcd_status, (unsigned int *)arg);      break;    case GET_MZ_EVENT:      if (mz_event_q.head == mz_event_q.tail)	return -EAGAIN;      else {	ret = put_user(mz_event_q.buf[mz_event_q.tail], (unsigned long *)arg);	mz_event_q.tail = INCBUF(mz_event_q.tail, MZ_EVENT_BUF_SIZE);	return ret;      }      break;    case SET_INPUT_DEV: {      unsigned int apm_input_tmp;      ret = get_user(apm_input_tmp, (unsigned int *)arg);      if (ret)	return ret;      while ((pm_dev = pm_find(PM_USER_DEV, pm_dev)) != NULL) {	if (pm_dev->id == PM_USER_INPUT) {	  if (apm_input_tmp == INPUT_DEV_ON)	    ret = pm_send(pm_dev, PM_RESUME, NULL);	  else if (apm_input_tmp == INPUT_DEV_OFF)	    ret = pm_send(pm_dev, PM_SUSPEND, NULL);	  else	    return -EINVAL;	}      }      return ret;    } break;    default:      return -ENOIOCTLCMD;    }    return 0;}static unsigned int apm_bios_poll(struct file *filp, poll_table *wait){    poll_wait(filp, &mz_event_queue, wait);    return (mz_event_q.head == mz_event_q.tail ? 0 : (POLLIN | POLLRDNORM));}struct file_operations apm_bios_fops = {    owner:	THIS_MODULE,    ioctl:	apm_bios_ioctl,    poll:	apm_bios_poll,};static struct miscdevice apm_device = {	MISC_DYNAMIC_MINOR,	"apm_bios",	&apm_bios_fops};/* * Just start the APM thread. We do NOT want to do APM BIOS * calls from anything but the APM thread, if for no other reason * than the fact that we don't trust the APM BIOS. This way, * most common APM BIOS problems that lead to protection errors * etc will have at least some level of being contained... * * In short, if something bad happens, at least we have a choice * of just killing the apm thread.. */static int __init apm_init(void){    if (PM_IS_ACTIVE()) {      printk(KERN_NOTICE "apm: overridden by ACPI.\n");      return -1;    }    pm_active = 1;    misc_register(&apm_device);    return 0;}static void __exit apm_exit(void){    misc_deregister(&apm_device);    pm_active = 0;}module_init(apm_init);module_exit(apm_exit);MODULE_AUTHOR("Yong-iL Joh");MODULE_DESCRIPTION("Advanced Power Management by MIZI");EXPORT_NO_SYMBOLS;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三| 最新国产成人在线观看| 色综合夜色一区| 蜜桃久久精品一区二区| 亚洲毛片av在线| 亚洲婷婷在线视频| 激情综合色综合久久综合| 亚洲1区2区3区视频| 洋洋av久久久久久久一区| 亚洲免费视频成人| 国产精品影视在线| 国产精品影音先锋| 日韩美女在线视频| 久久久综合视频| 久久先锋资源网| 色综合久久综合网| 粉嫩蜜臀av国产精品网站| 亚洲欧美激情在线| 亚洲精品久久久蜜桃| 亚洲欧洲精品天堂一级| 日本中文一区二区三区| 欧美国产日韩一二三区| 日本亚洲免费观看| 欧美亚洲一区二区三区四区| 久久精品人人做人人爽人人| 欧美日韩一二区| 波多野结衣一区二区三区| 欧美日韩美少妇| 亚洲欧美一区二区三区孕妇| 韩国中文字幕2020精品| 色婷婷综合中文久久一本| 亚洲国产精品精华液2区45| 日本欧美一区二区| 欧美日韩国产精品自在自线| 亚洲你懂的在线视频| 国产成人超碰人人澡人人澡| 亚洲免费成人av| 成人综合在线网站| 久久综合色鬼综合色| 亚洲国产精品嫩草影院| www.66久久| 亚洲另类春色校园小说| 99re这里只有精品视频首页| 欧美国产一区视频在线观看| 国产精品影视在线观看| 久久综合久久鬼色中文字| 美腿丝袜亚洲一区| 日韩欧美中文字幕公布| 欧美网站一区二区| 亚洲乱码中文字幕综合| 99精品国产91久久久久久 | 欧美色成人综合| 亚洲老司机在线| 欧美日韩免费在线视频| 亚洲日本韩国一区| 另类小说色综合网站| 欧美激情中文字幕| 成人精品一区二区三区中文字幕| 国产精品剧情在线亚洲| 91浏览器在线视频| 亚洲午夜电影在线观看| 91精品国产91久久久久久最新毛片| 在线免费观看日本一区| 亚洲精品一区二区三区在线观看| 亚洲国产精华液网站w| 成人免费视频播放| 一区二区三区 在线观看视频| 欧美综合一区二区| 日本欧美大码aⅴ在线播放| 777精品伊人久久久久大香线蕉| 国产精品久久久久aaaa| 色综合色狠狠天天综合色| 亚洲超丰满肉感bbw| 日韩三级在线观看| 国产精品456露脸| 成人欧美一区二区三区| 欧美精品乱码久久久久久| 中文字幕不卡在线观看| 色诱亚洲精品久久久久久| 日韩**一区毛片| 国产欧美一二三区| 欧美在线短视频| 麻豆国产精品视频| 中文字幕亚洲电影| 51午夜精品国产| 大尺度一区二区| 亚洲一区二区三区视频在线播放| 免费成人深夜小野草| 国产婷婷色一区二区三区| 一本久道中文字幕精品亚洲嫩| 婷婷成人激情在线网| 国产日韩在线不卡| 欧美日韩一区三区| 成人不卡免费av| 欧美不卡激情三级在线观看| 成人性视频网站| 日韩制服丝袜av| 亚洲欧美日韩电影| 日韩精品一区二区在线| 欧美色视频一区| 成人a级免费电影| 日韩国产在线一| 亚洲精选在线视频| 国产亚洲精品aa| 4438x亚洲最大成人网| 成人avav在线| 国产综合一区二区| 日韩制服丝袜先锋影音| 亚洲精品免费在线| 中文字幕av一区二区三区 | 成人免费视频视频| 久久国产精品区| 亚洲第一久久影院| 日韩美女视频一区二区 | 国产亚洲综合av| 色综合一个色综合亚洲| 老鸭窝一区二区久久精品| 亚洲国产aⅴ天堂久久| 亚洲视频一二三区| 国产欧美日韩在线看| 欧美日韩夫妻久久| 91视频在线观看| 国产999精品久久久久久绿帽| 麻豆成人91精品二区三区| 日产国产欧美视频一区精品 | 久久精品免费在线观看| 欧美v国产在线一区二区三区| 欧美三级视频在线| 欧美在线免费观看亚洲| 色哟哟亚洲精品| 色综合 综合色| 91浏览器在线视频| 色综合色综合色综合色综合色综合| 丰满岳乱妇一区二区三区| 国产成人在线视频网址| 粗大黑人巨茎大战欧美成人| 成人一区在线观看| 黄色成人免费在线| 蜜桃传媒麻豆第一区在线观看| 天堂成人免费av电影一区| 日韩国产欧美在线播放| 久久av中文字幕片| 国产成人a级片| 成人午夜免费电影| 一本久久综合亚洲鲁鲁五月天| 99国产精品视频免费观看| 色婷婷国产精品| 欧亚洲嫩模精品一区三区| 欧美另类变人与禽xxxxx| 69堂亚洲精品首页| 日韩精品自拍偷拍| 中文字幕第一区| 亚洲一区二区免费视频| 日日噜噜夜夜狠狠视频欧美人| 精品一区二区三区在线播放视频 | 亚洲一区二区三区在线播放| 香港成人在线视频| 九色综合狠狠综合久久| 国产精品91xxx| 色综合久久久久久久久久久| 欧洲精品在线观看| 欧美电视剧免费全集观看| 中文字幕第一区二区| 亚洲高清中文字幕| 精品亚洲porn| 在线免费观看视频一区| 欧美va在线播放| 中文欧美字幕免费| 亚洲成人在线免费| 国产乱子伦一区二区三区国色天香| 韩国精品久久久| 色综合久久久久久久久| 91网站黄www| 欧美精品777| 亚洲激情校园春色| 国产精品亚洲第一区在线暖暖韩国| jlzzjlzz亚洲女人18| 欧美老女人第四色| 亚洲欧洲另类国产综合| 麻豆精品一区二区av白丝在线| 国产69精品久久久久777| 欧美午夜精品理论片a级按摩| 精品国产伦一区二区三区免费| 国产欧美精品一区二区色综合| 午夜久久久久久| 91麻豆成人久久精品二区三区| 精品噜噜噜噜久久久久久久久试看| 亚洲精品视频自拍| 日韩av一区二区三区四区| 不卡视频一二三四| 精品久久人人做人人爽| 亚洲成人动漫av| 91丨九色丨蝌蚪富婆spa| 久久久久久久久久久黄色| 日韩精品乱码av一区二区| 欧美影院一区二区| 成人欧美一区二区三区1314| 国产高清不卡一区二区| 91精品一区二区三区在线观看| 亚洲乱码中文字幕综合|