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

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

?? iforce-serio.c

?? 底層驅動開發
?? C
字號:
/* * $Id: iforce-serio.c,v 1.4 2002/01/28 22:45:00 jdeneux Exp $ * *  Copyright (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz> *  Copyright (c) 2001 Johann Deneux <deneux@ifrance.com> * *  USB/RS232 I-Force joysticks and wheels. *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */#include "iforce.h"void iforce_serial_xmit(struct iforce *iforce){	unsigned char cs;	int i;	unsigned long flags;	if (test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) {		set_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags);		return;	}	spin_lock_irqsave(&iforce->xmit_lock, flags);again:	if (iforce->xmit.head == iforce->xmit.tail) {		clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);		spin_unlock_irqrestore(&iforce->xmit_lock, flags);		return;	}	cs = 0x2b;	serio_write(iforce->serio, 0x2b);	serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]);	cs ^= iforce->xmit.buf[iforce->xmit.tail];	XMIT_INC(iforce->xmit.tail, 1);	for (i=iforce->xmit.buf[iforce->xmit.tail]; i >= 0; --i) {		serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]);		cs ^= iforce->xmit.buf[iforce->xmit.tail];		XMIT_INC(iforce->xmit.tail, 1);	}	serio_write(iforce->serio, cs);	if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags))		goto again;	clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);	spin_unlock_irqrestore(&iforce->xmit_lock, flags);}static void iforce_serio_write_wakeup(struct serio *serio){	struct iforce *iforce = serio_get_drvdata(serio);	iforce_serial_xmit(iforce);}static irqreturn_t iforce_serio_irq(struct serio *serio,		unsigned char data, unsigned int flags, struct pt_regs *regs){	struct iforce *iforce = serio_get_drvdata(serio);	if (!iforce->pkt) {		if (data == 0x2b)			iforce->pkt = 1;		goto out;	}	if (!iforce->id) {		if (data > 3 && data != 0xff)			iforce->pkt = 0;		else			iforce->id = data;		goto out;	}	if (!iforce->len) {		if (data > IFORCE_MAX_LENGTH) {			iforce->pkt = 0;			iforce->id = 0;		} else {			iforce->len = data;		}		goto out;	}	if (iforce->idx < iforce->len) {		iforce->csum += iforce->data[iforce->idx++] = data;		goto out;	}	if (iforce->idx == iforce->len) {		iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data, regs);		iforce->pkt = 0;		iforce->id  = 0;		iforce->len = 0;		iforce->idx = 0;		iforce->csum = 0;	}out:	return IRQ_HANDLED;}static int iforce_serio_connect(struct serio *serio, struct serio_driver *drv){	struct iforce *iforce;	int err;	if (!(iforce = kmalloc(sizeof(struct iforce), GFP_KERNEL)))		return -ENOMEM;	memset(iforce, 0, sizeof(struct iforce));	iforce->bus = IFORCE_232;	iforce->serio = serio;	serio_set_drvdata(serio, iforce);	err = serio_open(serio, drv);	if (err) {		serio_set_drvdata(serio, NULL);		kfree(iforce);		return err;	}	if (iforce_init_device(iforce)) {		serio_close(serio);		serio_set_drvdata(serio, NULL);		kfree(iforce);		return -ENODEV;	}	return 0;}static void iforce_serio_disconnect(struct serio *serio){	struct iforce *iforce = serio_get_drvdata(serio);	input_unregister_device(&iforce->dev);	serio_close(serio);	serio_set_drvdata(serio, NULL);	kfree(iforce);}static struct serio_device_id iforce_serio_ids[] = {	{		.type	= SERIO_RS232,		.proto	= SERIO_IFORCE,		.id	= SERIO_ANY,		.extra	= SERIO_ANY,	},	{ 0 }};MODULE_DEVICE_TABLE(serio, iforce_serio_ids);struct serio_driver iforce_serio_drv = {	.driver		= {		.name	= "iforce",	},	.description	= "RS232 I-Force joysticks and wheels driver",	.id_table	= iforce_serio_ids,	.write_wakeup	= iforce_serio_write_wakeup,	.interrupt	= iforce_serio_irq,	.connect	= iforce_serio_connect,	.disconnect	= iforce_serio_disconnect,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区在线观看| 777亚洲妇女| 精品亚洲porn| 婷婷丁香激情综合| 亚洲欧美日韩中文播放| 亚洲青青青在线视频| 亚洲你懂的在线视频| 综合久久一区二区三区| 亚洲激情自拍视频| 亚洲一区二区三区国产| 日本成人在线看| 久久精品国产秦先生| 国产精品亚洲专一区二区三区| 国产乱子伦视频一区二区三区| 欧美大片免费久久精品三p| 在线观看av一区| 欧美视频中文字幕| 精品国产一区二区三区av性色| 成人性色生活片| 91香蕉视频mp4| 色av成人天堂桃色av| 欧美私人免费视频| 欧美成人r级一区二区三区| 精品国产免费一区二区三区四区| av一本久道久久综合久久鬼色| 亚洲午夜精品17c| 久久国产剧场电影| 国产精品影视在线| 色婷婷久久久综合中文字幕| 欧美日韩一级二级| 久久老女人爱爱| 日韩伦理免费电影| 蜜臀久久99精品久久久久宅男| 亚洲免费在线看| 免费三级欧美电影| 国产精品亚洲第一 | 日韩不卡在线观看日韩不卡视频| 日韩欧美一区电影| 中文字幕精品一区二区三区精品| 欧美一区二区三级| 国产精品美女www爽爽爽| 亚洲女同ⅹxx女同tv| 久久精品国产99| 色网站国产精品| 久久伊人蜜桃av一区二区| 一区二区三区毛片| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 青青草国产成人99久久| 国产成人av资源| 日韩一区二区三区精品视频| 亚洲欧美区自拍先锋| 青青草97国产精品免费观看| 99久久综合国产精品| 久久―日本道色综合久久| 亚洲国产综合在线| 色综合咪咪久久| 国产亚洲精品超碰| 九九热在线视频观看这里只有精品| 丝袜美腿成人在线| 91网站在线播放| 国产视频在线观看一区二区三区| 2021国产精品久久精品| 亚洲精品国产视频| 99久久婷婷国产| 亚洲视频电影在线| 丁香六月久久综合狠狠色| 精品处破学生在线二十三| 视频一区中文字幕| 欧美三级三级三级| 亚洲国产一区二区三区| 在线免费不卡电影| 一区二区三区日韩在线观看| 99精品欧美一区| 亚洲人123区| 91黄色免费观看| 亚洲日本青草视频在线怡红院| 一区二区三区久久久| 成人午夜免费电影| 欧美极品少妇xxxxⅹ高跟鞋| 国产成人亚洲综合色影视| 久久九九99视频| 高清成人在线观看| 中文文精品字幕一区二区| 国产成人精品免费| 亚洲国产电影在线观看| av中文字幕不卡| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲成人黄色影院| 欧美丰满少妇xxxxx高潮对白| 日韩视频一区在线观看| 麻豆精品新av中文字幕| 精品国产伦一区二区三区观看方式| 国产欧美一区二区三区在线看蜜臀| 中文字幕色av一区二区三区| 国产成人小视频| 亚洲人成在线观看一区二区| 欧美日免费三级在线| 日本最新不卡在线| 久久久久久久久久久久久久久99 | 国产一区二区三区高清播放| 欧美精品乱码久久久久久按摩 | 国产精品国产自产拍高清av | 青青草一区二区三区| 欧美群妇大交群中文字幕| 日本成人在线电影网| 精品欧美一区二区三区精品久久 | 欧美亚洲日本国产| 奇米888四色在线精品| 日韩美女视频在线| 北条麻妃一区二区三区| 亚洲高清视频在线| 久久久久久久久99精品| 91香蕉视频mp4| 一区二区三区蜜桃网| 国产农村妇女精品| 久久国产尿小便嘘嘘| 国产精品毛片无遮挡高清| 欧美日韩亚洲不卡| 国产成人亚洲综合a∨婷婷| 午夜精品久久久久久不卡8050| 国产精品一线二线三线| 中文字幕一区二区在线播放 | 久久疯狂做爰流白浆xx| 中文字幕av免费专区久久| 日韩一区二区在线看| 色哟哟欧美精品| 国产成人亚洲综合a∨猫咪 | 国产美女精品一区二区三区| 国产精品你懂的在线欣赏| 91精品国产91久久久久久最新毛片 | 亚洲图片你懂的| 欧美精品日日鲁夜夜添| 99精品偷自拍| 国产麻豆欧美日韩一区| 日韩高清一级片| 日韩毛片精品高清免费| 国产精品视频免费看| 久久久亚洲精品一区二区三区| 国产一区二区看久久| 丝袜亚洲精品中文字幕一区| 一区二区三区四区高清精品免费观看 | 51精品视频一区二区三区| 成人av影视在线观看| 久久精品国产亚洲高清剧情介绍 | 欧美一区二区在线不卡| 99re8在线精品视频免费播放| 国产女人aaa级久久久级 | 国产精品毛片久久久久久| 欧美成人精品福利| 欧美视频一二三区| 色欧美乱欧美15图片| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲综合在线视频| 亚洲精品免费播放| 亚洲综合av网| 亚洲综合免费观看高清完整版| 91精品国产综合久久小美女| 欧美夫妻性生活| 欧美美女视频在线观看| 欧美日韩高清不卡| 在线观看91av| 91精品国产丝袜白色高跟鞋| 日韩三级电影网址| 久久久久久久电影| 欧美国产精品专区| 亚洲猫色日本管| 午夜精品久久久久久不卡8050| 久久久一区二区三区捆绑**| 久久九九全国免费| 亚洲色图都市小说| 亚洲第一会所有码转帖| 久久国产综合精品| 春色校园综合激情亚洲| 91一区二区在线| 欧美肥妇bbw| 久久久99久久精品欧美| 国产精品灌醉下药二区| 亚洲国产aⅴ天堂久久| 免费在线一区观看| 黑人巨大精品欧美一区| 99久久综合国产精品| 6080yy午夜一二三区久久| 久久亚洲精精品中文字幕早川悠里| 欧美日韩精品欧美日韩精品一综合| 免费成人av在线| 粉嫩av一区二区三区粉嫩| 色综合久久久久综合体| 日韩一区二区三区视频在线| 国产日韩v精品一区二区| 亚洲午夜精品久久久久久久久| 中文在线资源观看网站视频免费不卡 | 91看片淫黄大片一级| 欧美一区二区三区系列电影| 久久午夜羞羞影院免费观看| 亚洲三级在线播放| 黄页视频在线91| 欧美伊人久久久久久午夜久久久久| 成人av免费观看| 欧美一区二区大片| 亚洲你懂的在线视频|