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

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

?? s3c2410xsio.c

?? vxworks for S3c2410 bsp
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* s3c2410xSio.c - Samsung S3C2410X serial driver */#include "copyright_wrs.h"#include "vxWorks.h"#include "sioLib.h"#include "intLib.h"#include "errno.h"#include "s3c2410xSio.h"#include "ioLib.h"#define S3C2410X_BAUD_MIN         1200#define S3C2410X_BAUD_MAX         460860#define S3C2410X_SIO_DEFAULT_BAUD 9600#ifndef s3c2410x_UART_REG#define s3c2410x_UART_REG(pChan, reg) \	(*(volatile UINT32 *)((UINT32)(pChan)->regs + (reg)))#endif#ifndef S3C2410X_SIO_REG_READ#define S3C2410X_SIO_REG_READ(pChan, reg, result) \    ((result) = (*(volatile UINT32 *)((UINT32)(pChan)->regs + (reg))))#endif   #ifndef S3C2410X_SIO_REG_WRITE#define S3C2410X_SIO_REG_WRITE(pChan, reg, data) \    ((*(volatile UINT32 *)((UINT32)(pChan)->regs + (reg))) = (data))#endif   #ifndef s3c2410x_UART_REG_READ#define s3c2410x_UART_REG_READ(pChan, reg, result) \	(result) = (s3c2410x_UART_REG(pChan, reg))#endif#ifndef s3c2410x_UART_REG_WRITE#define s3c2410x_UART_REG_WRITE(pChan, reg, data) \	(s3c2410x_UART_REG(pChan, reg)) = (data)#endif#ifndef s3c2410x_UART_REG_BIT_SET#define s3c2410x_UART_REG_BIT_SET(pChan, reg, data) \	(s3c2410x_UART_REG(pChan, reg)) |= (data)#endif#ifndef s3c2410x_UART_REG_BIT_CLR#define s3c2410x_UART_REG_BIT_CLR(pChan, reg, data) \	(s3c2410x_UART_REG(pChan, reg)) &= ~(data)#endif#ifndef s3c2410x_INT_REG_READ#define s3c2410x_INT_REG_READ(reg,result) \	((result) = *(volatile UINT32 *)(reg))#endif#ifndef s3c2410x_INT_REG_WRITE#define s3c2410x_INT_REG_WRITE(reg,data) \	(*((volatile UINT32 *)(reg)) = (data))#endif#define _IS_USER_FIFO_/* for backward compatibility */#ifndef    SIO_HUP#   define SIO_OPEN    0x100A    #   define SIO_HUP     0x100B   #endifLOCAL int    s3c2410xTxStartup (SIO_CHAN * pSioChan);LOCAL int    s3c2410xCallbackInstall (SIO_CHAN *pSioChan, int callbackType,                                      STATUS (*callback)(), void *callbackArg);LOCAL int    s3c2410xPollOutput (SIO_CHAN *pSioChan, char    outChar);LOCAL int    s3c2410xPollInput (SIO_CHAN *pSioChan, char *thisChar);LOCAL int    s3c2410xIoctl (SIO_CHAN *pSioChan, int request, void *arg);LOCAL STATUS dummyCallback (void);/* local variables */LOCAL    SIO_DRV_FUNCS s3c2410xSioDrvFuncs =    {    s3c2410xIoctl,    s3c2410xTxStartup,    s3c2410xCallbackInstall,    s3c2410xPollInput,    s3c2410xPollOutput    };LOCAL BOOL s3c2410xIntrMode = FALSE;   /******************************************************************************** s3c2410xDevInit - initialize a S3C2410X_DUSART*** RETURNS: N/A*/void s3c2410xDevInit(S3C2410X_CHAN * pChan)    {    pChan->sio.pDrvFuncs    = &s3c2410xSioDrvFuncs;    pChan->getTxChar     = dummyCallback;    pChan->putRcvChar    = dummyCallback;    	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_ULCON,(INFRA_RED_NONE | PARITY_NONE | ONE_STOP | WORD_LEN));	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UCON,0x005);	#ifdef _IS_USER_FIFO_	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UFCON,0xd7);		#else	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UFCON,0x00);		#endif	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UMCON,0);    s3c2410xIoctl ((SIO_CHAN *)pChan, SIO_MODE_SET, (void *)SIO_MODE_POLL);    s3c2410xIoctl ((SIO_CHAN *)pChan, SIO_BAUD_SET, (void *)S3C2410X_SIO_DEFAULT_BAUD);	    }/******************************************************************************** s3c2410xDevInit2 - initialize a S3C2410X_DUSART, part 2*** RETURNS: N/A* ARGSUSED*/void s3c2410xDevInit2    (    S3C2410X_CHAN * pChan        /* device to initialize */    )    {    char      outchar = '\0';	UINT32	tempUINT32;    S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_ULCON,(INFRA_RED_NONE | PARITY_NONE | ONE_STOP | WORD_LEN));    S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UTXBUF,outchar);    S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UCON,UCON_RX|UCON_TX|0x80);		s3c2410x_INT_REG_READ(S3C2410X_INTSUBMSK,tempUINT32);	switch((int)(pChan->regs))	{	case SERIAL_B_BASE_ADR:		tempUINT32 &= ~((1<<SUBINT_LVL_RXD1)|(1<<SUBINT_LVL_TXD1));		break;	case SERIAL_A_BASE_ADR:	default:		tempUINT32 &= ~((1<<SUBINT_LVL_RXD0)|(1<<SUBINT_LVL_TXD0));	}	s3c2410x_INT_REG_WRITE(S3C2410X_INTSUBMSK,tempUINT32);	s3c2410xIntrMode = TRUE;	#ifdef _IS_USER_FIFO_	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UFCON,0xd7);		#else	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UFCON,0x00);		#endif	S3C2410X_SIO_REG_WRITE(pChan,S3C2410X_UCON,UCON_RX|UCON_TX|0x80);	s3c2410xIoctl ((SIO_CHAN *)pChan, SIO_BAUD_SET, (void *)S3C2410X_SIO_DEFAULT_BAUD);		s3c2410xIoctl ((SIO_CHAN *)pChan, SIO_MODE_SET, (void *)SIO_MODE_INT);		s3c2410x_UART_REG_READ(pChan, S3C2410X_URXBUF, tempUINT32);	    }/******************************************************************************** s3c2410xIntRcv - handle a channel's receive-character interrupt** RETURNS: N/A*/ void s3c2410xIntRcv    (    S3C2410X_CHAN *    pChan        /* channel generating the interrupt */    ){    char            inChar;    UINT32        status;        switch((int)(pChan->regs))	{				case SERIAL_B_BASE_ADR:			s3c2410x_INT_REG_WRITE(S3C2410X_SUBSRCPND, (1<<SUBINT_LVL_RXD1));			break;		case SERIAL_A_BASE_ADR:		default:			s3c2410x_INT_REG_WRITE(S3C2410X_SUBSRCPND, (1<<SUBINT_LVL_RXD0));	}    #ifdef _IS_USER_FIFO_	while(1)	{		S3C2410X_SIO_REG_READ(pChan,S3C2410X_UFSTAT, status);    	if((status & UFSTAT_RX_COUNT) == 0) 			break;        S3C2410X_SIO_REG_READ(pChan,S3C2410X_URXBUF, inChar);		        (*pChan->putRcvChar) (pChan->putRcvArg, inChar);    }        #else    S3C2410X_SIO_REG_READ(pChan,S3C2410X_USTAT, status);    if((status & USTAT_RX_READY) == USTAT_RX_READY)    {        S3C2410X_SIO_REG_READ(pChan,S3C2410X_URXBUF, inChar);        (*pChan->putRcvChar) (pChan->putRcvArg, inChar);    }	#endif	}static int sending = 0;		/******************************************************************************** s3c2410xIntTx - handle a channels transmitter-ready interrupt** RETURNS: N/A*/ void s3c2410xIntTx    (    S3C2410X_CHAN *    pChan        /* channel generating the interrupt */    )    {    char      outChar;    UINT32    status;    FAST int     oldlevel; 		    switch((int)(pChan->regs))	{				case SERIAL_B_BASE_ADR:			s3c2410x_INT_REG_WRITE(S3C2410X_SUBSRCPND, (1<<SUBINT_LVL_TXD1));			break;		case SERIAL_A_BASE_ADR:		default:			s3c2410x_INT_REG_WRITE(S3C2410X_SUBSRCPND, (1<<SUBINT_LVL_TXD0));	}	#ifdef _IS_USER_FIFO_     	S3C2410X_SIO_REG_READ(pChan,S3C2410X_UFSTAT, status);		if((status & UFSTAT_TX_FULL) == UFSTAT_TX_FULL) 		return;	#else	S3C2410X_SIO_REG_READ(pChan,S3C2410X_USTAT, status);		if((status & USTAT_TX_READY) != USTAT_TX_READY) 		return;	#endif	oldlevel = intLock ();    if ((*pChan->getTxChar) (pChan->getTxArg, &outChar) != ERROR)	{		#ifdef _IS_USER_FIFO_        S3C2410X_SIO_REG_WRITE(pChan, S3C2410X_UTXBUF, outChar);		while(1)		{						S3C2410X_SIO_REG_READ(pChan,S3C2410X_UFSTAT, status);        		if((status & UFSTAT_TX_FULL) == UFSTAT_TX_FULL) 				break;						if ((*pChan->getTxChar) (pChan->getTxArg, &outChar) == ERROR) 				break;						S3C2410X_SIO_REG_WRITE(pChan, S3C2410X_UTXBUF, outChar);		}		#else		S3C2410X_SIO_REG_WRITE(pChan, S3C2410X_UTXBUF, outChar);		#endif    }	        intUnlock (oldlevel);}/********************************************/void    s3c2410xInt    (S3C2410X_CHAN *pChan){	UINT32 intId;		s3c2410x_INT_REG_READ(S3C2410X_SUBSRCPND , intId);	if(intId & ((1<<SUBINT_LVL_TXD0)|(1<<SUBINT_LVL_TXD1)))	{		s3c2410xIntTx(pChan);			}	if(intId & ((1<<SUBINT_LVL_RXD0)|(1<<SUBINT_LVL_RXD1)))	{		s3c2410xIntRcv (pChan);	}	s3c2410x_INT_REG_WRITE(S3C2410X_INTSUBMSK , 0);}/******************************************************************************** s3c2410xTxStartup - start the interrupt transmitter** RETURNS: OK on success, ENOSYS if the device is polled-only, or* EIO on hardware error.*/LOCAL int s3c2410xTxStartup    (    SIO_CHAN * pSioChan                 /* channel to start */    )    {    S3C2410X_CHAN * pChan = (S3C2410X_CHAN *)pSioChan;		if(pChan->mode == SIO_MODE_INT)	{		intEnable(pChan->intLevelTx);		s3c2410xIntTx(pChan);		return OK;	}	else	{		return ERROR;	}    }/******************************************************************************** s3c2410xCallbackInstall - install ISR callbacks to get/put chars*** RETURNS: OK on success, or ENOSYS for an unsupported callback type.*/ LOCAL int s3c2410xCallbackInstall    (    SIO_CHAN *    pSioChan,                   int           callbackType,              STATUS        (*callback)(),              void *        callbackArg               )    {    S3C2410X_CHAN * pChan = (S3C2410X_CHAN *)pSioChan;    switch (callbackType)    {    case SIO_CALLBACK_GET_TX_CHAR:        pChan->getTxChar    = callback;        pChan->getTxArg     = callbackArg;        return (OK);    case SIO_CALLBACK_PUT_RCV_CHAR:        pChan->putRcvChar    = callback;        pChan->putRcvArg     = callbackArg;        return (OK);    default:        return (ENOSYS);    }    }/********************************************************************************* s3c2410xPollOutput - output a character in polled mode** RETURNS: OK if a character arrived, EIO on device error, EAGAIN* if the output buffer if full. ENOSYS if the device is* interrupt-only.*/LOCAL int s3c2410xPollOutput    (    SIO_CHAN *pSioChan,    char      outChar    )    {    S3C2410X_CHAN * pChan = (S3C2410X_CHAN *)pSioChan;    UINT32    status;    S3C2410X_SIO_REG_READ (pChan, S3C2410X_USTAT, status);    if ((status & USTAT_TX_READY) == 0x00)        return (EAGAIN);    S3C2410X_SIO_REG_WRITE(pChan, S3C2410X_UTXBUF, outChar);	    return (OK);    }/******************************************************************************** s3c2410xPollInput - poll the device for input** RETURNS: OK if a character arrived, EIO on device error, EAGAIN* if the input buffer if empty, ENOSYS if the device is* interrupt-only.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品综合久久久久久8888| 日韩av在线播放中文字幕| 欧美精品第一页| 国产成人精品网址| 爽爽淫人综合网网站| 国产精品乱人伦一区二区| 91麻豆精品国产91久久久久久| 色香蕉成人二区免费| 国产大陆亚洲精品国产| 日本欧美在线看| 亚洲综合自拍偷拍| 国产女同互慰高潮91漫画| 日韩色在线观看| 欧美私模裸体表演在线观看| av电影在线观看不卡| 精品一区二区在线看| 五月婷婷综合激情| 一级女性全黄久久生活片免费| 国产欧美日韩在线| xnxx国产精品| 欧美xingq一区二区| 777色狠狠一区二区三区| 在线国产亚洲欧美| 99久久精品费精品国产一区二区| 国产麻豆精品在线| 久久se精品一区精品二区| 视频一区欧美精品| 亚洲高清免费在线| 亚洲一区二区三区中文字幕在线| 亚洲丝袜自拍清纯另类| 中文字幕 久热精品 视频在线| 2020国产精品自拍| 精品日韩在线观看| 欧美tickling挠脚心丨vk| 欧美一级在线视频| 91精品久久久久久久91蜜桃| 欧美精品久久99久久在免费线| 欧洲亚洲国产日韩| 欧美中文字幕一二三区视频| 欧美亚洲综合色| 欧美日韩国产色站一区二区三区| 欧美中文字幕久久| 欧美日韩国产精品自在自线| 欧美日本在线播放| 337p亚洲精品色噜噜狠狠| 91精品午夜视频| 日韩精品一区二区三区在线播放| 日韩欧美国产精品一区| 精品99久久久久久| 国产午夜亚洲精品不卡| 国产精品免费丝袜| 亚洲女爱视频在线| 亚洲国产毛片aaaaa无费看| 亚洲成人动漫精品| 久久精品国产精品青草| 国产黄色精品视频| 91天堂素人约啪| 欧美日韩一区三区四区| 欧美一区三区二区| 久久久久久久久久久久电影| 中文字幕第一页久久| 亚洲欧美日韩久久精品| 亚洲国产精品嫩草影院| 久久99精品久久久久久国产越南 | 在线亚洲免费视频| 欧美日韩一区高清| 欧美mv日韩mv国产| 国产精品人人做人人爽人人添| 最近日韩中文字幕| 午夜精品久久久久久久99水蜜桃 | 成人午夜又粗又硬又大| 91麻豆国产福利在线观看| 欧美色视频一区| 精品国产1区2区3区| **性色生活片久久毛片| 午夜精品一区二区三区三上悠亚| 久久97超碰国产精品超碰| 成人av电影在线| 91精品国产一区二区| 国产欧美日本一区视频| 亚洲高清视频的网址| 国产成人在线免费| 欧美三级乱人伦电影| 欧美精品一区二区三区四区| 亚洲天堂精品在线观看| 九一九一国产精品| 日本高清不卡视频| 久久免费国产精品| 亚洲va欧美va国产va天堂影院| 国产精品888| 欧美亚洲一区二区在线| 久久久久综合网| 午夜视黄欧洲亚洲| 成人激情黄色小说| 91精品福利在线一区二区三区 | 精品免费国产二区三区| 夜夜揉揉日日人人青青一国产精品| 国产一区二区伦理片| 欧美午夜电影网| 国产精品欧美综合在线| 麻豆精品在线观看| 欧美日韩久久一区| 国产精品国产a| 国产一区在线不卡| 欧美日韩激情在线| 一区二区在线免费观看| 国产精品夜夜嗨| 日韩欧美中文字幕一区| 一区二区三区欧美久久| 成人久久久精品乱码一区二区三区| 欧美一级久久久久久久大片| 一区二区在线看| 99精品欧美一区| 国产精品视频在线看| 狠狠久久亚洲欧美| 91精品国产综合久久国产大片| 一区二区三区四区高清精品免费观看| 国产电影一区二区三区| 日韩精品专区在线影院重磅| 午夜精品久久久久久久99樱桃| 色综合色狠狠综合色| 中文幕一区二区三区久久蜜桃| 韩国欧美国产一区| 精品人伦一区二区色婷婷| 日韩不卡在线观看日韩不卡视频| 欧美四级电影网| 亚洲成人免费看| 欧美精品三级在线观看| 亚洲国产视频一区| 欧美日韩二区三区| 亚洲国产成人精品视频| 欧美色倩网站大全免费| 亚洲综合色网站| 在线视频一区二区免费| 一区二区三区美女视频| 一本到不卡免费一区二区| 亚洲女同ⅹxx女同tv| 色88888久久久久久影院按摩| 一区二区三区资源| 欧美三级电影一区| 视频一区二区中文字幕| 欧美精品丝袜久久久中文字幕| 日本在线观看不卡视频| 日韩一区二区三| 国产曰批免费观看久久久| 久久久久久久久久久久久夜| 成人性生交大合| 亚洲免费观看高清完整版在线 | jiyouzz国产精品久久| 中文字幕一区二区日韩精品绯色| 95精品视频在线| 一区二区三区电影在线播| 欧美日韩卡一卡二| 精品一区二区在线视频| 国产精品视频yy9299一区| 99精品国产91久久久久久| 一区二区成人在线视频| 欧美日韩aaaaa| 国产在线精品一区二区三区不卡 | 91精选在线观看| 国产乱码精品一区二区三区五月婷| 欧美国产亚洲另类动漫| 色综合久久久久综合体桃花网| 亚洲一区二区三区在线看| 欧美大尺度电影在线| 国产jizzjizz一区二区| 一区二区三区高清| 欧美成人猛片aaaaaaa| 成人一区在线观看| 亚洲一区二区三区四区中文字幕| 91精品国产免费久久综合| 国产精品一级片| 亚洲成人动漫精品| 久久久国产午夜精品| 色一情一伦一子一伦一区| 麻豆精品一区二区三区| 国产精品毛片大码女人| 欧美日韩国产影片| 国产91精品一区二区麻豆网站| 一区二区三区在线观看网站| 亚洲精品一区二区在线观看| 99re这里都是精品| 免费在线成人网| 亚洲天天做日日做天天谢日日欢 | 国产亚洲综合av| 欧美在线小视频| 成人综合在线网站| 五月天久久比比资源色| 国产精品美女视频| 91精品国产综合久久香蕉的特点| 成人午夜在线视频| 蜜臀av性久久久久蜜臀av麻豆| 亚洲男同1069视频| 国产日产亚洲精品系列| 欧美精品tushy高清| 99久久精品情趣| 国产一区二区三区观看| 亚洲成人久久影院| 亚洲男人天堂一区| 中文字幕精品一区二区精品绿巨人|