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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ul_c950pci.c

?? linux下的RS485的驅(qū)動(dòng) 值得一看
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************  uLan Communication - uL_DRV - multiplatform uLan driver  ul_c950pci.c	- chip driver for Oxford Semiconductor's                   OX16950 based pCI acards  (C) Copyright 1996-2004 by Pavel Pisa - project originator        http://cmp.felk.cvut.cz/~pisa  (C) Copyright 1996-2004 PiKRON Ltd.        http://www.pikron.com  (C) Copyright 2002-2004 Petr Smolik    The uLan driver project can be used and distributed   in compliance with any of next licenses   - GPL - GNU Public License     See file COPYING for details.   - LGPL - Lesser GNU Public License   - MPL - Mozilla Public License   - and other licenses added by project originator  Code can be modified and re-distributed under any combination  of the above listed licenses. If contributor does not agree with  some of the licenses, he/she can delete appropriate line.  WARNING: if you delete all lines, you are not allowed to  distribute code or sources in any form. *******************************************************************//*******************************************************************//* Chip driver for OX16950-pci */#include "serial_reg.h"#define u950pci_inb(base,port)	 ul_inb(base+port)#define u950pci_outb(base,port,val) ul_outb(base+port,val)#define U950PCI_MCR_IE	0x08	/* receive  0x09 for Advantech */#define U950PCI_MCR_OE	0x09	/* transmit 0x08 for Advantech */#define U950PCI_MCR_TXDTRPOL 0x01#define U950PCI_LCR_UL	0x03	/* receive/transmit */#define U950PCI_LCR_ULB	0x43	/* transmit line break */#define U950PCI_LCR_EFR	0xBF	/* enable access to EFR, XONx */#define U950PCI_LSR_C	0x04	/* controll character received */#define U950PCI_LSR_ERR	0x1A	/* error in receiver */#define U950PCI_NMR_EN	0x03	/* 9-bit communication settings */#define U950PCI_IIR_ID	0x3f	/* more IRQ levels */#define U950pci_MSR_RxD UART_MSR_RI /* Pin for RxD level sense *//* flags of chip options used in u950pci_init *//* unfortunate random DTR polarity over different vendors  !!! */#define U950PCI_CHOPT_TXDTRNEG 1	/* negated polarity (Advantech) */#define U950PCI_CHOPT_HSPDOSC  2	/* oscilator 14.7456MHz/1.8432MHz */#define U950PCI_CHOPT_RXDONRI  4	/* RxD signal connected to RI */#define U950PCI_ACR_VAL chip_buff[2] /* shaddow buffer of ACR *//* default ACR value : DTR=1 when Tx, 950 trigger levels enable  */#define U950PCI_ACR_UL	(UART_ACR_TLENB)#define U950PCI_ACR_ULTX (U950PCI_ACR_UL|0x10|UART_ACR_RXDIS)/**/#define U950PCI_ACR_TXDTRPOL 0x08	/* ^- 0x18 for Advantech */#define U950PCI_STATE chip_buff[3] /* chip state information */#define U950PCI_STATE_TX    1#define U950PCI_STATE_FLUSH 2#define U950PCI_RX_ACRMCR chip_buff[4] /* set this for RX - LSB=ACR, MSB=MCR */  #define U950PCI_RX_ACR(udrv) ((uchar)udrv->U950PCI_RX_ACRMCR)  #define U950PCI_RX_MCR(udrv) ((uchar)(udrv->U950PCI_RX_ACRMCR>>8))#define U950PCI_TX_ACRMCR chip_buff[5] /* set this for TX - LSB=ACR, MSB=MCR */  #define U950PCI_TX_ACR(udrv) ((uchar)udrv->U950PCI_TX_ACRMCR)  #define U950PCI_TX_MCR(udrv) ((uchar)(udrv->U950PCI_TX_ACRMCR>>8))INLINE void u950pci_icr_write(ul_drv *udrv, int index, int val){  u950pci_outb(udrv->port,UART_SCR,(uchar)index);  u950pci_outb(udrv->port,UART_ICR,(uchar)val);}unsigned u950pci_icr_read(ul_drv *udrv, int index){  unsigned val;  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL|UART_ACR_ICRRD);  u950pci_outb(udrv->port,UART_SCR,(uchar)index);  val=u950pci_inb(udrv->port,UART_ICR);  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL);  return val;}unsigned u950pci_xfl_read(ul_drv *udrv, int reg){  unsigned val;  u950pci_icr_write(udrv,UART_ACR,udrv->U950PCI_ACR_VAL|UART_ACR_ASREN);  val=u950pci_inb(udrv->port,reg);  /* no need to set ACR index - SCR not changed */  u950pci_outb(udrv->port,UART_ICR,(uchar)(udrv->U950PCI_ACR_VAL));  return val;}INLINE void u950pci_acr_write(ul_drv *udrv, int val){  udrv->U950PCI_ACR_VAL=val;  u950pci_icr_write(udrv,UART_ACR,val); }int u950pci_rxd_cs(ul_drv *udrv){ /* returns 1 if active level detected */    if(!(udrv->chip_options&U950PCI_CHOPT_RXDONRI))    return 0;  if(!(u950pci_inb(udrv->port,UART_MSR)&U950pci_MSR_RxD));    return 0;  LOG_CHIO(" CSCD");  return 1;}/*** Test interrupt request state ***/int u950pci_pool(ul_drv *udrv){  unsigned u;  u=u950pci_inb(udrv->port,UART_IIR);  return (u&UART_IIR_NO_INT)?0:((u&U950PCI_IIR_ID)|1);};/*** Wait end of transmit ***/int u950pci_weot(ul_drv *udrv, int ret_code){  uchar lsr_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(lsr_val&UART_LSR_TEMT){    UL_FRET;    return UL_RC_PROC;  }  u950pci_icr_write(udrv,UART_TTL,0);	/* transmittion FIFO treshold */  u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);  LOG_CHIO(".weot");  return UL_RC_WIRQ;};/* Help subroutine for switch from transmit to receive */int u950pci_recch_sub_tx2rx(ul_drv *udrv, int lsr_val){  if(lsr_val&UART_LSR_TEMT){    udrv->U950PCI_STATE&=~(U950PCI_STATE_TX|U950PCI_STATE_FLUSH);    u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|        	 UART_FCR_CLEAR_RCVR); /**/    u950pci_acr_write(udrv,U950PCI_RX_ACR(udrv));    return UL_RC_PROC;  }  u950pci_icr_write(udrv,UART_TTL,0);	/* wait for TEMT */  u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);  LOG_CHIO(".t2r");  return UL_RC_WIRQ;}/* Help subroutine for reading 9-bit character */int u950pci_recch_sub_rec9bit(ul_drv *udrv, int lsr_val){  udrv->char_buff=u950pci_inb(udrv->port,UART_RX);  if(lsr_val&U950PCI_LSR_C){    udrv->last_ctrl=udrv->char_buff|=0x100; /* last char for ready/busy */  } else udrv->last_ctrl&=0x7f; /* somebody other has line */  udrv->xor_sum^=udrv->char_buff;udrv->xor_sum++;  if(lsr_val&U950PCI_LSR_ERR){    LOG_CHIO(" ER:%03X",udrv->char_buff);    return UL_RC_EFRAME; /* frame error */  }else{    LOG_CHIO(" R:%03X",udrv->char_buff);    return UL_RC_PROC;  }}/*** Receive character into char_buff ***/int u950pci_recch(ul_drv *udrv, int ret_code){  uchar lsr_val;  uchar rfl_val;  udrv->char_buff=0;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  LOG_CHIO(" lsr%02X",lsr_val);  if(udrv->U950PCI_STATE&     (U950PCI_STATE_TX|U950PCI_STATE_FLUSH)){    /* Manage all necessary for TX/RX switch */    return u950pci_recch_sub_tx2rx(udrv,lsr_val);  }  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  LOG_CHIO("-");  u950pci_outb(udrv->port,UART_IER,UART_IER_RDI|UART_IER_RLSI);  u950pci_icr_write(udrv,UART_RTL,6);	/* receive FIFO treshold */  return UL_RC_WIRQ;			/**/}/*** Send character from char_buff ***/  int u950pci_sndch_1(ul_drv *udrv, int ret_code);int u950pci_sndch(ul_drv *udrv, int ret_code){  unsigned u;  uchar lsr_val;  uchar tfl_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(udrv->U950PCI_STATE&U950PCI_STATE_TX){    LOG_CHIO(" lsr%02X",lsr_val);    /*if(lsr_val&UART_LSR_THRE){*/    tfl_val=(uchar)u950pci_xfl_read(udrv,UART_TFL);    LOG_CHIO(" tfl%02X",tfl_val);    if(tfl_val<0x08){      u=udrv->char_buff;      udrv->xor_sum^=udrv->char_buff;udrv->xor_sum++;      if(u&0x100){	udrv->last_ctrl=u; /* store last control char */	u950pci_outb(udrv->port,UART_SCR,1);     } else u950pci_outb(udrv->port,UART_SCR,0);     u950pci_outb(udrv->port,UART_TX,(uchar)u);     UL_FRET;     LOG_CHIO(" T:%03X",u);     return UL_RC_PROC;   }   LOG_CHIO("-");   u950pci_outb(udrv->port,UART_IER,UART_IER_THRI);   return UL_RC_WIRQ; } /* flush timing dummy transmit chars and manage 1 char switch delay*/ u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|              UART_FCR_CLEAR_RCVR|UART_FCR_CLEAR_XMIT); u950pci_acr_write(udrv,U950PCI_RX_ACR(udrv)); u950pci_icr_write(udrv,UART_TTL,0);	/* wait for TEMT */ u950pci_outb(udrv->port,UART_TX,0); u950pci_outb(udrv->port,UART_IER,UART_IER_THRI); UL_FNEXT(u950pci_sndch_1);  LOG_CHIO(".r2t"); return UL_RC_WIRQ;}	      int u950pci_sndch_1(ul_drv *udrv, int ret_code){  uchar lsr_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(~lsr_val&UART_LSR_TEMT) return UL_RC_WIRQ;  /* finally setup for transmit */  udrv->U950PCI_STATE|=U950PCI_STATE_TX;  u950pci_icr_write(udrv,UART_TTL,4);	/* min 4 bytes in Tx FIFO */  u950pci_acr_write(udrv,U950PCI_TX_ACR(udrv));  UL_FNEXT(u950pci_sndch);   return UL_RC_PROC;}/*** Wait for time or received character ***/  int u950pci_wait_1(ul_drv *udrv, int ret_code);int u950pci_wait(ul_drv *udrv, int ret_code){  int i;  uchar lsr_val;  uchar rfl_val;  udrv->char_buff=0;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  if(udrv->U950PCI_STATE&     (U950PCI_STATE_TX|U950PCI_STATE_FLUSH)){    /* Manage all necessary for TX/RX switch */    return u950pci_recch_sub_tx2rx(udrv,lsr_val);  }  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" w1rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  /* flush Tx FIFO */  u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|               UART_FCR_CLEAR_XMIT);  u950pci_icr_write(udrv,UART_RTL,1);	/* receive FIFO treshold */  u950pci_icr_write(udrv,UART_TTL,0);	/* wait TEMT */  for(i=udrv->wait_time;i--;){    u950pci_outb(udrv->port,UART_TX,0);		/* wait timed by dummy TX */  }  u950pci_outb(udrv->port,UART_IER,UART_IER_RDI|               UART_IER_RLSI|UART_IER_THRI);  UL_FNEXT(u950pci_wait_1);  LOG_CHIO("=");  return UL_RC_WIRQ;}int u950pci_wait_1(ul_drv *udrv, int ret_code){  uchar lsr_val;  uchar rfl_val;  uchar tfl_val;  lsr_val=u950pci_inb(udrv->port,UART_LSR);  rfl_val=(uchar)u950pci_xfl_read(udrv,UART_RFL);  LOG_CHIO(" w2rfl%02X",rfl_val);  /*if(lsr_val&UART_LSR_DR){*/  if(rfl_val>0){    /* Construct and return 9-bit character */    UL_FRET;    return u950pci_recch_sub_rec9bit(udrv,lsr_val);  }  tfl_val=(uchar)u950pci_xfl_read(udrv,UART_TFL);  LOG_CHIO(" w3tfl%02X",tfl_val);  if(tfl_val>0)    return UL_RC_WIRQ;  u950pci_outb(udrv->port,UART_FCR,UART_FCR_ENABLE_FIFO|               UART_FCR_CLEAR_XMIT);  UL_FRET;  LOG_CHIO(" Timeout!");  return UL_RC_ETIMEOUT;};/*** Connect to RS485 bus ***/  int u950pci_connect_1(ul_drv *udrv, int ret_code);  int u950pci_connect_2(ul_drv *udrv, int ret_code);int u950pci_connect(ul_drv *udrv, int ret_code){ unsigned u; u=udrv->last_ctrl;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕区一区有砖一区 | 天堂午夜影视日韩欧美一区二区| 精品亚洲成av人在线观看| 色噜噜狠狠一区二区三区果冻| 国产精品福利在线播放| 美女一区二区三区| 欧美日韩免费高清一区色橹橹 | 毛片av一区二区| 亚洲视频一二区| 精品国产一区二区三区四区四 | 一区二区高清免费观看影视大全 | 欧美在线一二三| 亚洲伊人伊色伊影伊综合网| 欧美日韩一区高清| 99久久精品国产导航| 韩国毛片一区二区三区| 日韩高清在线观看| 久久99国产精品尤物| 亚洲另类色综合网站| 国产女主播在线一区二区| 日韩欧美久久一区| 欧美午夜免费电影| 99久久国产免费看| 成人av在线观| 成人福利视频网站| 懂色av一区二区三区蜜臀| 国产一区二区三区在线观看免费视频| 亚洲一区在线视频| 亚洲精品中文字幕在线观看| 日韩美女精品在线| 国产精品每日更新| 欧美激情一区在线观看| 国产视频一区二区三区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩激情视频网站| 亚洲成a天堂v人片| 亚洲电影激情视频网站| 亚洲成年人网站在线观看| 亚洲自拍都市欧美小说| 亚洲愉拍自拍另类高清精品| 一区二区不卡在线视频 午夜欧美不卡在 | 一区二区视频在线| 亚洲欧美视频在线观看视频| 亚洲天堂中文字幕| 一区二区高清视频在线观看| 亚洲成人av一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲综合自拍偷拍| 亚洲成av人**亚洲成av**| 日本女人一区二区三区| 免费成人av资源网| 国产精品综合网| 粉嫩aⅴ一区二区三区四区| av亚洲精华国产精华精| 日本久久一区二区三区| 欧美午夜在线观看| 日韩一级成人av| 国产欧美精品一区二区三区四区| 亚洲视频一区二区在线观看| 亚洲线精品一区二区三区| 视频一区二区中文字幕| 韩国v欧美v日本v亚洲v| 成人黄色电影在线| 欧美性xxxxxx少妇| 日韩精品资源二区在线| 国产色91在线| 亚洲一本大道在线| 久久精品国产99久久6| 高清在线不卡av| 欧美系列日韩一区| 久久无码av三级| 亚洲桃色在线一区| 美国三级日本三级久久99| 日韩一区二区三区免费观看| 2020国产精品| 一区二区三区视频在线看| 日本伊人午夜精品| 国产黄人亚洲片| 在线国产电影不卡| 精品国产亚洲在线| 自拍av一区二区三区| 日韩va亚洲va欧美va久久| 国产成人精品亚洲777人妖| 91精品91久久久中77777| 26uuuu精品一区二区| av福利精品导航| av综合在线播放| 欧美精品123区| 亚洲免费在线观看| 午夜a成v人精品| 东方欧美亚洲色图在线| 一本色道久久综合亚洲91| 在线91免费看| 亚洲毛片av在线| 国产高清视频一区| 欧美一级理论性理论a| 成人免费在线播放视频| 蜜臀a∨国产成人精品| 99亚偷拍自图区亚洲| 日韩精品中文字幕一区二区三区| ●精品国产综合乱码久久久久| 午夜国产精品影院在线观看| 成人激情黄色小说| 亚洲欧洲中文日韩久久av乱码| 国产成人免费在线视频| 日韩毛片精品高清免费| 久久嫩草精品久久久精品一| 91香蕉视频污在线| 国产专区综合网| 久久久久久97三级| 日韩欧美国产综合一区 | 欧美一级日韩不卡播放免费| 99re热视频这里只精品| 狠狠狠色丁香婷婷综合激情| 色综合久久久网| 国产精品嫩草影院av蜜臀| 青青青伊人色综合久久| 欧美性猛片aaaaaaa做受| 亚洲三级久久久| 911精品国产一区二区在线| 亚洲视频一区二区免费在线观看| 国产v日产∨综合v精品视频| xvideos.蜜桃一区二区| 另类小说一区二区三区| 欧美一级欧美三级在线观看| 午夜久久电影网| 欧美日韩国产高清一区二区| 一区二区三区在线免费观看| 99re视频精品| 亚洲男人的天堂一区二区| www.66久久| 亚洲人成网站在线| 在线观看亚洲专区| 一区二区不卡在线播放 | 欧美亚洲日本国产| 一区二区三区毛片| 色猫猫国产区一区二在线视频| 亚洲日本韩国一区| 在线观看免费一区| 亚洲h在线观看| 欧美精品久久久久久久久老牛影院| 亚洲成人在线观看视频| 777午夜精品免费视频| 三级在线观看一区二区| 制服丝袜亚洲精品中文字幕| 青青国产91久久久久久 | 国产精品狼人久久影院观看方式| 国产电影精品久久禁18| 日本一区二区三区dvd视频在线| 懂色av一区二区三区免费看| 国产精品白丝在线| 91久久香蕉国产日韩欧美9色| 亚洲国产美女搞黄色| 欧美一区二区三区成人| 国产又粗又猛又爽又黄91精品| 久久精品亚洲精品国产欧美kt∨| 岛国精品在线播放| 一区二区三区在线免费播放| 欧美日韩黄视频| 激情综合色丁香一区二区| 中文字幕 久热精品 视频在线| 91亚洲国产成人精品一区二区三| 亚洲精品视频免费观看| 777a∨成人精品桃花网| 国产很黄免费观看久久| 日韩码欧中文字| 91精品国产综合久久久久| 国产一区二区导航在线播放| 综合久久一区二区三区| 91精品久久久久久蜜臀| 国产.精品.日韩.另类.中文.在线.播放| 国产精品国产三级国产普通话99| 欧美日韩在线电影| 国产一区二区按摩在线观看| 一色屋精品亚洲香蕉网站| 欧美日韩一卡二卡| 国产成人h网站| 午夜精品一区二区三区免费视频| 精品国产一区二区三区忘忧草| 99麻豆久久久国产精品免费 | 亚洲国产日韩一级| 久久精品夜色噜噜亚洲a∨| 欧美午夜精品久久久久久孕妇| 捆绑变态av一区二区三区| 综合精品久久久| 日韩女优视频免费观看| 2014亚洲片线观看视频免费| 91免费版pro下载短视频| 久久成人精品无人区| 亚洲综合成人网| 国产日产精品1区| 欧美精品 日韩| 99久久精品免费看国产免费软件| 男人的天堂久久精品| 亚洲欧美激情一区二区| 久久久久国产精品麻豆| 欧美日韩免费观看一区三区| 99麻豆久久久国产精品免费优播| 国产综合色产在线精品| 午夜视频久久久久久|