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

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

?? parport.c

?? 自己根據lkd和情境分析
?? C
?? 第 1 頁 / 共 2 頁
字號:
	struct etrax100par_struct *info =		(struct etrax100par_struct *)p->private_data;	*info->irq_mask_clr = info->irq_mask_tx;	DPRINTK("* E100 PP %d: disable irq\n", p->portnum);}static voidparport_etrax_data_forward(struct parport *p){	struct etrax100par_struct *info =		(struct etrax100par_struct *)p->private_data;	DPRINTK("* E100 PP %d: forward mode\n", p->portnum);	SETS(info->reg_ctrl_data_shadow, R_PAR0_CTRL_DATA, oe, enable);	*info->reg_ctrl_data = info->reg_ctrl_data_shadow;}static voidparport_etrax_data_reverse(struct parport *p){	struct etrax100par_struct *info =		(struct etrax100par_struct *)p->private_data;	DPRINTK("* E100 PP %d: reverse mode\n", p->portnum);	SETS(info->reg_ctrl_data_shadow, R_PAR0_CTRL_DATA, oe, disable);	*info->reg_ctrl_data = info->reg_ctrl_data_shadow;}static voidparport_etrax_init_state(struct pardevice *dev, struct parport_state *s){	DPRINTK("* E100 PP: parport_etrax_init_state\n");}static voidparport_etrax_save_state(struct parport *p, struct parport_state *s){	DPRINTK("* E100 PP: parport_etrax_save_state\n");}static voidparport_etrax_restore_state(struct parport *p, struct parport_state *s){	DPRINTK("* E100 PP: parport_etrax_restore_state\n");}static voidparport_etrax_inc_use_count(void){	MOD_INC_USE_COUNT;}static voidparport_etrax_dec_use_count(void){	MOD_DEC_USE_COUNT;}static structparport_operations pp_etrax_ops = {	parport_etrax_write_data,	parport_etrax_read_data,	parport_etrax_write_control,	parport_etrax_read_control,	parport_etrax_frob_control,	parport_etrax_read_status,	parport_etrax_enable_irq,	parport_etrax_disable_irq,	parport_etrax_data_forward, 	parport_etrax_data_reverse, 	parport_etrax_init_state,	parport_etrax_save_state,	parport_etrax_restore_state,	parport_etrax_inc_use_count,	parport_etrax_dec_use_count,	parport_ieee1284_epp_write_data,	parport_ieee1284_epp_read_data,	parport_ieee1284_epp_write_addr,	parport_ieee1284_epp_read_addr,	parport_ieee1284_ecp_write_data,	parport_ieee1284_ecp_read_data,	parport_ieee1284_ecp_write_addr,	parport_ieee1284_write_compat,	parport_ieee1284_read_nibble,	parport_ieee1284_read_byte,};	static void parport_etrax_interrupt(int irq, void *dev_id, struct pt_regs *regs){	struct etrax100par_struct *info = (struct etrax100par_struct *)		((struct parport *)dev_id)->private_data;	DPRINTK("* E100 PP %d: Interrupt received\n",		((struct parport *)dev_id)->portnum);	*info->irq_mask_clr = info->irq_mask_tx;	parport_generic_irq(irq, (struct parport *)dev_id, regs);}/* ----------- Initialisation code --------------------------------- */static void __initparport_etrax_show_parallel_version(void){	printk("ETRAX 100LX parallel port driver v1.0, (c) 2001 Axis Communications AB\n");}#ifdef CONFIG_ETRAX_PAR0_DMA#define PAR0_USE_DMA 1#else#define PAR0_USE_DMA 0#endif#ifdef CONFIG_ETRAX_PAR1_DMA#define PAR1_USE_DMA 1#else#define PAR1_USE_DMA 0#endifstatic void __initparport_etrax_init_registers(void){	struct etrax100par_struct *info;	int i;	for (i = 0, info = port_table; i < 2; i++, info++) {#ifndef CONFIG_ETRAX_PARALLEL_PORT0		if (i == 0)			continue;#endif#ifndef CONFIG_ETRAX_PARALLEL_PORT1		if (i == 1)			continue;#endif		info->reg_config_shadow = 			IO_STATE(R_PAR0_CONFIG, iseli, inv)       |			IO_STATE(R_PAR0_CONFIG, iautofd, inv)     |			IO_STATE(R_PAR0_CONFIG, istrb, inv)       |			IO_STATE(R_PAR0_CONFIG, iinit, inv)       |			IO_STATE(R_PAR0_CONFIG, rle_in, disable)  |			IO_STATE(R_PAR0_CONFIG, rle_out, disable) |			IO_STATE(R_PAR0_CONFIG, enable, on)       |			IO_STATE(R_PAR0_CONFIG, force, off)       |			IO_STATE(R_PAR0_CONFIG, ign_ack, wait)    |			IO_STATE(R_PAR0_CONFIG, oe_ack, wait_oe)  |			IO_STATE(R_PAR0_CONFIG, mode, manual);		if ((i == 0 && PAR0_USE_DMA) || (i == 1 && PAR1_USE_DMA))			info->reg_config_shadow |=				IO_STATE(R_PAR0_CONFIG, dma, enable);		else			info->reg_config_shadow |=				IO_STATE(R_PAR0_CONFIG, dma, disable);		*info->reg_config = info->reg_config_shadow;		info->reg_ctrl_data_shadow = 			IO_STATE(R_PAR0_CTRL_DATA, peri_int, nop)    |			IO_STATE(R_PAR0_CTRL_DATA, oe, enable)       |			IO_STATE(R_PAR0_CTRL_DATA, seli, inactive)   |			IO_STATE(R_PAR0_CTRL_DATA, autofd, inactive) |			IO_STATE(R_PAR0_CTRL_DATA, strb, inactive)   |			IO_STATE(R_PAR0_CTRL_DATA, init, inactive)   |			IO_STATE(R_PAR0_CTRL_DATA, ecp_cmd, data)    |			IO_FIELD(R_PAR0_CTRL_DATA, data, 0);		*info->reg_ctrl_data = info->reg_ctrl_data_shadow;		/* Clear peri int without setting shadow */		*info->reg_ctrl_data = info->reg_ctrl_data_shadow |			IO_STATE(R_PAR0_CTRL_DATA, peri_int, ack);		info->reg_delay_shadow = 			IO_FIELD(R_PAR0_DELAY, setup, 5)  |			IO_FIELD(R_PAR0_DELAY, strobe, 5) |			IO_FIELD(R_PAR0_DELAY, hold, 5);		*info->reg_delay = info->reg_delay_shadow;	}#ifdef CONFIG_ETRAX_PARALLEL_PORT0#ifdef CONFIG_ETRAX_PAR0_DMA	RESET_DMA(PAR0_TX_DMA_NBR);	WAIT_DMA(PAR0_TX_DMA_NBR);#ifdef CONFIG_ETRAX_SERIAL_PORT2	printk(" Warning - DMA clash with ser2!\n");#endif /* SERIAL_PORT2 */#endif /* DMA */#endif /* PORT0 */#ifdef CONFIG_ETRAX_PARALLEL_PORT1#ifdef CONFIG_ETRAX_PAR1_DMA	RESET_DMA(PAR1_TX_DMA_NBR);	WAIT_DMA(PAR1_TX_DMA_NBR);#ifdef CONFIG_ETRAX_SERIAL_PORT3	printk(" Warning - DMA clash with ser3!\n");#endif /* SERIAL_PORT3 */#endif /* DMA */#endif /* PORT1 */} int __initparport_etrax_init(void){	struct parport *p;	int port_exists = 0;	int i;	struct etrax100par_struct *info;        const char *names[] = { "parallel 0 tx+rx", "parallel 1 tx+rx" };	parport_etrax_show_parallel_version();	parport_etrax_init_registers();        for (i = 0, info = port_table; i < NR_PORTS; i++, info++) {#ifndef CONFIG_ETRAX_PARALLEL_PORT0		if (i == 0)			continue;#endif#ifndef CONFIG_ETRAX_PARALLEL_PORT1		if (i == 1)			continue;#endif                p = parport_register_port((unsigned long)0, info->int_irq,                                          PARPORT_DMA_NONE, &pp_etrax_ops);                if (!p)			continue;                info->port = p;                p->private_data = info;                /* Axis FIXME: Set mode flags. */                /* p->modes = PARPORT_MODE_TRISTATE | PARPORT_MODE_SAFEININT; */	        if(request_irq(info->int_irq, parport_etrax_interrupt,                               SA_SHIRQ, names[i], p)) {	        	parport_unregister_port (p);                        continue;                }                printk(KERN_INFO "%s: ETRAX 100LX port %d using irq\n",                       p->name, i);                parport_proc_register(p);                parport_announce_port(p);                port_exists = 1;        }	return port_exists;}void __exitparport_etrax_exit(void){	int i;	struct etrax100par_struct *info;        for (i = 0, info = port_table; i < NR_PORTS; i++, info++) {#ifndef CONFIG_ETRAX_PARALLEL_PORT0		if (i == 0)			continue;#endif#ifndef CONFIG_ETRAX_PARALLEL_PORT1		if (i == 1)			continue;#endif		if (info->int_irq != PARPORT_IRQ_NONE)			free_irq(info->int_irq, info->port);		parport_proc_unregister(info->port);		parport_unregister_port(info->port);        }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久免费| 三级在线观看一区二区| 久久久久国产一区二区三区四区| 欧美日韩小视频| 欧美性猛片aaaaaaa做受| 91免费看片在线观看| 色综合天天综合网国产成人综合天 | 久久美女艺术照精彩视频福利播放| 日韩免费看网站| 久久久不卡影院| 中文乱码免费一区二区| 国产精品久久久久久久久免费樱桃| 国产精品视频一二三| 中文字幕一区二区三区在线观看| 国产精品激情偷乱一区二区∴| 亚洲人成在线观看一区二区| 专区另类欧美日韩| 亚洲午夜一二三区视频| 亚洲一区av在线| 秋霞av亚洲一区二区三| 国产一区二区三区四 | 久久天天做天天爱综合色| 精品毛片乱码1区2区3区| 久久久久亚洲蜜桃| 国产精品久久三| 国模套图日韩精品一区二区| 国产精一品亚洲二区在线视频| 丁香另类激情小说| 欧美主播一区二区三区美女| 欧美日韩五月天| 精品国产欧美一区二区| 综合久久综合久久| 石原莉奈在线亚洲二区| 国产盗摄视频一区二区三区| 91原创在线视频| 欧美精品丝袜中出| 久久久国产一区二区三区四区小说| 国产精品剧情在线亚洲| 亚洲午夜一区二区三区| 久久机这里只有精品| 成人动漫视频在线| 欧美精品精品一区| 亚洲国产成人在线| 午夜精品在线看| 丁香一区二区三区| 欧美丝袜第三区| 久久精品视频一区二区| 一区二区三区.www| 国内不卡的二区三区中文字幕| 色拍拍在线精品视频8848| 欧美mv日韩mv| 亚洲免费成人av| 加勒比av一区二区| 欧美亚一区二区| 久久综合av免费| 亚洲综合无码一区二区| 国产精品影视在线观看| 欧美日韩一区小说| 国产精品高潮呻吟| 奇米777欧美一区二区| 色婷婷亚洲综合| 国产亚洲精品中文字幕| 日韩电影在线看| 91色在线porny| 精品播放一区二区| 日本午夜一本久久久综合| 99re热这里只有精品免费视频| 日韩欧美的一区二区| 亚洲成av人片在线观看| 91在线一区二区| 久久美女艺术照精彩视频福利播放| 日韩精品91亚洲二区在线观看| 成人手机在线视频| 精品国产a毛片| 免费美女久久99| 欧美日韩国产首页在线观看| 中文字幕亚洲在| 日本韩国精品一区二区在线观看| 久久久精品日韩欧美| 日韩av网站在线观看| 欧美日韩dvd在线观看| 日韩久久一区二区| 国产不卡在线视频| 国产亚洲精品aa午夜观看| 久久国产麻豆精品| 日韩一区二区麻豆国产| 亚洲一区二区三区视频在线播放| 91免费看`日韩一区二区| 国产女人18毛片水真多成人如厕| 麻豆精品国产91久久久久久| 69久久99精品久久久久婷婷| 午夜精品一区二区三区免费视频| 在线观看av一区| 亚洲人快播电影网| 99久久精品免费看国产| 国产精品美女久久久久久| 国产黄人亚洲片| 国产欧美一区二区精品久导航| 精品无码三级在线观看视频| 精品国产一区二区三区久久久蜜月| 日韩电影在线观看网站| 欧美一二三四在线| 美国十次综合导航| 日韩欧美国产综合一区| 九九九精品视频| 欧美精品一区二区久久久| 国产剧情一区二区三区| 国产日韩欧美在线一区| 国产精品中文字幕日韩精品| 国产欧美精品一区aⅴ影院| 国产精品99久久久久久似苏梦涵 | 在线精品视频免费播放| 一级精品视频在线观看宜春院| 欧美在线啊v一区| 亚洲高清中文字幕| 在线不卡a资源高清| 日av在线不卡| 26uuu亚洲| 国产成人av电影在线播放| 国产精品白丝在线| 欧美亚男人的天堂| 老司机精品视频一区二区三区| 久久人人97超碰com| 成人教育av在线| 亚洲一区二区精品久久av| 91精品国产免费| 国产精品一二三四| 成人免费一区二区三区在线观看| 在线精品视频一区二区三四 | 精品国产乱码久久| 波多野结衣中文字幕一区二区三区 | 欧美日韩免费不卡视频一区二区三区| 亚洲国产精品麻豆| 精品国产sm最大网站| 不卡一区中文字幕| 图片区小说区区亚洲影院| 精品国产髙清在线看国产毛片| 成人午夜又粗又硬又大| 亚洲综合精品自拍| 91精品国产一区二区三区蜜臀| 国模少妇一区二区三区| 亚洲欧美国产三级| 欧美男生操女生| 成人妖精视频yjsp地址| 一区二区国产视频| 亚洲精品在线免费观看视频| 成人av在线观| 免费国产亚洲视频| 一区在线观看免费| 欧美一区二区三区爱爱| 国产xxx精品视频大全| 亚洲第一激情av| 国产日韩欧美综合一区| 欧美蜜桃一区二区三区| 成人美女在线视频| 日本不卡的三区四区五区| 自拍偷拍亚洲综合| 亚洲精品在线观看网站| 在线免费观看视频一区| 国产老肥熟一区二区三区| 天天色天天爱天天射综合| 国产欧美日产一区| 91精品国产麻豆| 色婷婷久久久综合中文字幕| 久久99国产精品久久99| 亚洲综合一区二区精品导航| 中文字幕高清一区| 欧美一级二级三级蜜桃| 色婷婷av一区二区| 国产成人av在线影院| 日本不卡123| 一区二区三区毛片| 中文字幕精品在线不卡| 日韩欧美123| 精品视频123区在线观看| www.综合网.com| 国产乱理伦片在线观看夜一区| 午夜激情一区二区三区| 一区二区三区在线观看国产| 欧美韩国一区二区| 日韩欧美的一区| 91精品一区二区三区在线观看| 日本韩国精品在线| 91视频在线观看免费| 国产成人免费在线观看不卡| 乱中年女人伦av一区二区| 日韩国产高清影视| 亚洲一区二区高清| 一区二区三区日本| 日本麻豆一区二区三区视频| 亚洲图片欧美一区| 伊人色综合久久天天人手人婷| 国产精品麻豆久久久| 国产色婷婷亚洲99精品小说| 欧美大片拔萝卜| 精品久久久久久久人人人人传媒 | 国产日产欧美一区| 久久一二三国产| 精品久久久久99| 欧美mv日韩mv国产|