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

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

?? isadma.c

?? WINDRIVER MCP750 BSP
?? C
字號:
/* isaDma.c - DMA Controller Device (I8237) Utilities/Support Module *//* Copyright 1984-2001 Wind River Systems, Inc. *//* Copyright 1996,1997,1998 Motorola, Inc., All Rights Reserved *//*modification history--------------------01d,16sep01,dat  Use of WRS_ASM macro01c,15apr99,srr  Changed to WRS address space naming convention.01b,15apr98,dat  added INCLUDE_ISADMA01a,12dec97,rbb  created by Motorola.*//*DESCRIPTIONThis module contains routines that support ISA DMA transfers.  The routinesprovided will initialize the DMA configuration, start and stop DMA transfersand return the status of an ISA DMA transfer.This module is normally included as a source module.  The macro INCLUDE_ISADMAmust be defined if any code is to be compiled.Notes:1. These routines assume that a dual i8237 DMA controller device   is present (e.g., I82378ZB, W83C553F).*//* includes */#include "vxWorks.h"#include "i8237.h"#include "config.h"#ifdef INCLUDE_ISADMA	/* do nothing if not defined *//* defines */#ifndef EIEIO_SYNC# define EIEIO_SYNC  _WRS_ASM (" eieio; sync")#endif  /* EIEIO_SYNC */#define I8237_BASE_ADDRESS	ISA_MSTR_IO_LOCAL#define PCIV_PCIMPU_RAM_OFFSET	PCI_SLV_MEM_BUS/* typedefs *//* globals *//* forward declarations */extern void isaDmaInit();	/* initialize DMA (global configuration) */extern void isaDmaStart();	/* initialize DMA channel for transfer */extern void isaDmaStop();	/* disable DMA channel */extern UINT isaDmaStatus();	/* query DMA channel for transfer status *//* externals *//********************************************************************************* isaDmaInit - DMA controller initialization** This function's purpose is to initialize the dual DMA controller* device to a sane state.  This initialization is from a global* configuration standpoint, and needs only to be performed once.** RETURNS: N/A*/void isaDmaInit (void)    {    register UINT channel;    register UINT rvalue1, rvalue2;    register I8237_DMA1 *pDma1;    register I8237_DMA2 *pDma2;    /* setup pointers to the DMA controller devices */    pDma1 = (I8237_DMA1 *)(I8237_BASE_ADDRESS + I8237_DMA1_OFFSET);    pDma2 = (I8237_DMA2 *)(I8237_BASE_ADDRESS + I8237_DMA2_OFFSET);    /* perform a H/W reset of the devices */    pDma1->mc = 0x00;     EIEIO_SYNC;    pDma2->mc = 0x00;     EIEIO_SYNC;    /* initialize all channels to a sane state */    for (channel = 0; channel < 4; channel++) 	{        /*         * dependent upon the channel, setup the specifics:         *         * demand         * address-increment         * autoinitialize-disable         * read-transfer         */	switch (channel) 	    {	    case 0:		rvalue1 =		(I8237_MODE_TM_DEMAND|I8237_MODE_CH0SEL|I8237_MODE_TT_READ);		rvalue2 =		(I8237_MODE_TM_CASCADE|I8237_MODE_CH0SEL);		break;	    case 1:	        rvalue1 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH1SEL|I8237_MODE_TT_READ);	        rvalue2 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH1SEL|I8237_MODE_TT_READ);	        break;	    case 2:	        rvalue1 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH2SEL|I8237_MODE_TT_READ);	        rvalue2 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH2SEL|I8237_MODE_TT_READ);	        break;	    case 3:	        rvalue1 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH2SEL|I8237_MODE_TT_READ);	        rvalue2 =	        (I8237_MODE_TM_DEMAND|I8237_MODE_CH2SEL|I8237_MODE_TT_READ);	        break;	    default:	        rvalue1 = 0x00;	        rvalue2 = 0x00;	        break;	    }	/* write to write mode registers */	pDma1->wm = rvalue1; 	EIEIO_SYNC;	pDma2->wm = rvalue2; 	EIEIO_SYNC;	}    /* enable all channels */    pDma1->cm = 0x00;     EIEIO_SYNC;    pDma2->cm = 0x00;     EIEIO_SYNC;   /*    * initialize the global DMA configuration    *    * DACK# active low    * DREQ active high    * fixed priority    * channel group enable    */    pDma1->cs = 0x00;     EIEIO_SYNC;    pDma2->cs = 0x00;     EIEIO_SYNC;    }/********************************************************************************* isaDmaStart - start DMA transfer** This function's purpose is to initialize the specified DMA* channel for a DMA transfer.** RETURNS: N/A*/void isaDmaStart    (    register UINT dmaChannelNumber,		/* DMA channel number (0 - 7) */    register UINT dmaTransferMode,		/* DMA transfer mode */    register UINT dmaTransferType,		/* DMA transfer type */    register UINT address,			/* address */    register UINT nBytes			/* number of bytes */    )    {    register UINT rvalue;    register UINT channelNumber;    register I8237_DMA1 *pDma1;    register I8237_DMA2 *pDma2;    register I8237_PAGE *pPage;    register I8237_HIGHPAGE *pHigh;    /* setup pointers to the DMA controller devices */        pDma1 = (I8237_DMA1 *)(I8237_BASE_ADDRESS + I8237_DMA1_OFFSET);    pDma2 = (I8237_DMA2 *)(I8237_BASE_ADDRESS + I8237_DMA2_OFFSET);    pPage = (I8237_PAGE *)(I8237_BASE_ADDRESS + I8237_PAGE_OFFSET);    pHigh = (I8237_HIGHPAGE *)(I8237_BASE_ADDRESS + I8237_HIGH_OFFSET);    /*     * create DMA address (PCI/ISA to system memory)     * create physical i8237 channel number     * number of programmed bytes is less one than the transfer     */    address |= PCIV_PCIMPU_RAM_OFFSET;    channelNumber = dmaChannelNumber & 0x3;    nBytes--;    /*     * disable channel for DMA transfer initialization     * setup the address of the transfer     */    if (dmaChannelNumber < 4) 	{        /* disable the selected channel */        pDma1->wsmb = (I8237_WSMB_CHMASKSEL | channelNumber); 	EIEIO_SYNC;        /*         * initialize the address (A07-A00) of the transfer         * initialize the address (A15-A08) of the transfer         */        pDma1->cbp = 0x00; 	EIEIO_SYNC;        pDma1->bac[channelNumber].bca = (UCHAR)(address >> 0); 	EIEIO_SYNC;        pDma1->bac[channelNumber].bca = (UCHAR)(address >> 8); 	EIEIO_SYNC;        /* initialize the count of the transfer */        pDma1->cbp = 0x00; 	EIEIO_SYNC;        pDma1->bac[channelNumber].bcc = (UCHAR)(nBytes >> 0); 	EIEIO_SYNC;        pDma1->bac[channelNumber].bcc = (UCHAR)(nBytes >> 8); 	EIEIO_SYNC;	}     else 	{        /* disable the selected channel */        pDma2->wsmb = (I8237_WSMB_CHMASKSEL | channelNumber); 	EIEIO_SYNC;        /*         * initialize the address (A07-A00) of the transfer         * initialize the address (A15-A08) of the transfer         */        pDma2->cbp = 0x00; 	EIEIO_SYNC;        pDma2->bac[channelNumber].bca = (UCHAR)(address >> 0); 	EIEIO_SYNC;        pDma2->bac[channelNumber].bca = (UCHAR)(address >> 8); 	EIEIO_SYNC;        /* initialize the count of the transfer */        pDma2->cbp = 0x00; 	EIEIO_SYNC;        pDma2->bac[channelNumber].bcc = (UCHAR)(nBytes >> 0); 	EIEIO_SYNC;        pDma2->bac[channelNumber].bcc = (UCHAR)(nBytes >> 8); 	EIEIO_SYNC;	}    /*     * setup the address (A23-A16) of the transfer     * setup the address (A31-A24) of the transfer     */    switch (dmaChannelNumber) 	{	case 0:	    pPage->p_ch0 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch0 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	    case 1:	    pPage->p_ch1 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch1 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	case 2:	    pPage->p_ch2 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch2 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	case 3:	    pPage->p_ch3 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch3 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	case 5:	    pPage->p_ch5 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch5 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	case 6:	    pPage->p_ch6 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch6 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	case 7:	    pPage->p_ch7 = (UCHAR)(address >> 16); 	    EIEIO_SYNC;	    pHigh->p_ch7 = (UCHAR)(address >> 24); 	    EIEIO_SYNC;	    break;	}    /* initialize the transfer specifics (write mode register) */        switch (channelNumber) 	{	case 0:	    rvalue = dmaTransferMode | dmaTransferType | I8237_MODE_CH0SEL;	    break;	case 1:	    rvalue = dmaTransferMode | dmaTransferType | I8237_MODE_CH1SEL;	    break;	case 2:	    rvalue = dmaTransferMode | dmaTransferType | I8237_MODE_CH2SEL;	    break;	case 3:	    rvalue = dmaTransferMode | dmaTransferType | I8237_MODE_CH3SEL;	    break;	default:	    rvalue = 0x00;	    break;	}    /* enable channel for DMA transfer */       if (dmaChannelNumber < 4) 	{	pDma1->wm = rvalue; 	EIEIO_SYNC;	pDma1->wsmb = channelNumber; 	EIEIO_SYNC;        }    else 	{	pDma2->wm = rvalue; 	EIEIO_SYNC;	pDma2->wsmb = channelNumber; 	EIEIO_SYNC;	}    }/********************************************************************************* isaDmaStop - Stop DMA transfer** This functions purpose is to disable (stop) the specified DMA* channel for a DMA transfer.** RETURNS: N/A*/void isaDmaStop    (    register UINT dmaChannelNumber	/* DMA channel number (0 - 7) */    )    {    register UINT channelNumber;    register I8237_DMA1 *pDma1;    register I8237_DMA2 *pDma2;    /* setup pointers to the DMA controller devices */    pDma1 = (I8237_DMA1 *)(I8237_BASE_ADDRESS + I8237_DMA1_OFFSET);    pDma2 = (I8237_DMA2 *)(I8237_BASE_ADDRESS + I8237_DMA2_OFFSET);    /* create physical i8237 channel number */    channelNumber = dmaChannelNumber & 0x3;    /* disable channel */    if (dmaChannelNumber < 4) 	{        pDma1->wsmb = (I8237_WSMB_CHMASKSEL | channelNumber); 	EIEIO_SYNC;        }     else 	{        pDma2->wsmb = (I8237_WSMB_CHMASKSEL | channelNumber); 	EIEIO_SYNC;        }    }/********************************************************************************* isaDmaStatus - get DMA transfer status** This function's purpose is to query the specified DMA channel* for DMA transfer status.  And to return this status in a* logical format (see values below).** RETURNS: DMA Transfer Status*  	   0: Request=0, TerminalCount=0*	   1: Request=0, TerminalCount=1*	   2: Request=1, TerminalCount=0*	   3: Request=1, TerminalCount=1*/UINT isaDmaStatus    (    register UINT dmaChannelNumber	/* DMA channel number (0 - 7) */    )    {    register UINT rvalue, svalue;    register UINT channelNumber;    register I8237_DMA1 *pDma1;    register I8237_DMA2 *pDma2;    /* setup pointers to the DMA controller devices */    pDma1 = (I8237_DMA1 *)(I8237_BASE_ADDRESS + I8237_DMA1_OFFSET);    pDma2 = (I8237_DMA2 *)(I8237_BASE_ADDRESS + I8237_DMA2_OFFSET);    /* create physical i8237 channel number */     channelNumber = dmaChannelNumber & 0x3;    /* read DMA status register */      if (dmaChannelNumber < 4)         {        rvalue = pDma1->cs; 	EIEIO_SYNC;        }     else         {        rvalue = pDma2->cs; 	EIEIO_SYNC;        }    /* mask off unwanted channels' status */       rvalue &= ((0x10 << channelNumber) | (0x01 << channelNumber));    /* convert to logical status */        svalue = 0;    if (rvalue & 0xF0) 	{ 	svalue |= 0x2; 	}    if (rvalue & 0x0F) 	{ 	svalue |= 0x1; 	}    return (svalue);}#endif /* INCLUDE_ISADMA */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品视频| 久久久亚洲精品石原莉奈| 久久亚洲一区二区三区明星换脸| 国产精品乱人伦中文| 日韩1区2区日韩1区2区| 成人av在线影院| 精品国产免费一区二区三区香蕉 | 国产99久久久精品| 欧美一区二区三区视频免费播放| 最新久久zyz资源站| 国产在线国偷精品产拍免费yy| 精品久久人人做人人爰| 一区二区三区日韩欧美精品| 成人一二三区视频| 久久亚洲综合色一区二区三区 | 欧美日韩精品系列| 国产精品成人一区二区三区夜夜夜| 激情国产一区二区| 日韩欧美一级片| 免费成人结看片| 欧美一区二区三区系列电影| 亚洲va国产天堂va久久en| 在线一区二区三区四区| 亚洲欧洲制服丝袜| 91网站视频在线观看| 亚洲欧美在线另类| 成人国产在线观看| 亚洲女人****多毛耸耸8| 91免费观看国产| 一区二区三区毛片| 在线视频综合导航| 亚洲一区在线观看免费| 在线观看不卡视频| 亚洲国产成人va在线观看天堂| 欧洲色大大久久| 亚洲在线成人精品| 欧美日韩国产123区| 首页国产丝袜综合| 日韩精品一区二区在线| 国模无码大尺度一区二区三区| 精品国产91乱码一区二区三区| 极品少妇xxxx偷拍精品少妇| 久久这里都是精品| 波多野结衣一区二区三区| 亚洲欧洲日韩女同| 欧美色综合网站| 久久激情五月激情| 久久久国产一区二区三区四区小说| 国产成人精品综合在线观看 | 亚洲高清免费视频| 91精品国产91久久综合桃花| 美女网站一区二区| 欧美国产欧美综合| 色吧成人激情小说| 老司机免费视频一区二区三区| 久久精品视频一区二区三区| gogogo免费视频观看亚洲一| 亚洲综合小说图片| 久久综合资源网| 91天堂素人约啪| 麻豆免费精品视频| 国产精品进线69影院| 欧美日本在线视频| 从欧美一区二区三区| 亚洲第一福利视频在线| 久久精品综合网| 精品视频1区2区3区| 国产精品中文字幕日韩精品| 亚洲精品欧美综合四区| 精品久久久影院| av一区二区三区黑人| 欧美aⅴ一区二区三区视频| 国产清纯在线一区二区www| 欧美三级欧美一级| 成人深夜福利app| 日本人妖一区二区| 亚洲精选免费视频| 国产欧美日韩中文久久| 欧美人妖巨大在线| 97久久超碰国产精品电影| 久久国产精品色| 亚洲在线观看免费视频| 国产精品美女久久久久久久久久久| 欧美三级中文字幕| av一区二区不卡| 国产老肥熟一区二区三区| 亚洲一区二区精品视频| 国产精品人成在线观看免费| 日韩网站在线看片你懂的| 在线一区二区视频| av不卡一区二区三区| 久久精品理论片| 日本伊人午夜精品| 亚洲一区二区三区中文字幕| 久久久电影一区二区三区| 欧美日韩国产另类一区| 91看片淫黄大片一级| 国产69精品久久99不卡| 精品亚洲国产成人av制服丝袜| 亚洲第一福利一区| 亚洲精品国产一区二区精华液 | 国产综合久久久久久久久久久久| 亚洲黄一区二区三区| 国产精品久久夜| 国产人伦精品一区二区| 国产色产综合产在线视频| 日韩欧美亚洲一区二区| 91精品综合久久久久久| 欧美日韩一本到| 欧美三区在线观看| 欧美日韩久久不卡| 在线不卡的av| 日韩欧美亚洲国产另类| 久久男人中文字幕资源站| 在线播放一区二区三区| 欧美一区二区大片| 亚洲精品在线免费播放| 国产亚洲成年网址在线观看| 中文字幕的久久| 亚洲精品水蜜桃| 婷婷国产在线综合| 青青草原综合久久大伊人精品 | 国内国产精品久久| 国产成人在线观看| 99精品视频在线播放观看| 波多野结衣在线一区| av中文字幕在线不卡| 91亚洲精品乱码久久久久久蜜桃| 色欧美片视频在线观看在线视频| 91久久精品一区二区二区| 欧美老人xxxx18| 久久久久久久免费视频了| 中文字幕在线观看一区| 亚洲欧美aⅴ...| 亚洲成人中文在线| 国产在线国偷精品产拍免费yy| 国产麻豆精品一区二区| 成人ar影院免费观看视频| 在线观看亚洲精品| 日韩欧美国产一区二区三区| 久久久久亚洲蜜桃| 亚洲男女一区二区三区| 秋霞成人午夜伦在线观看| 国产69精品久久久久777| 日本高清不卡视频| 欧美xingq一区二区| 中文字幕一区二区三区四区| 视频精品一区二区| 极品少妇一区二区三区精品视频| 97精品视频在线观看自产线路二| 91精品国产综合久久精品app| 精品国产a毛片| 亚洲一区二区三区四区中文字幕| 国内一区二区视频| 欧美色综合天天久久综合精品| 欧美一级日韩一级| 亚洲欧洲无码一区二区三区| 奇米色一区二区| 日本韩国一区二区| 国产网站一区二区三区| 日韩高清一区二区| 99久久国产综合精品色伊| 日韩一级精品视频在线观看| 亚洲男人的天堂av| 国产福利一区在线观看| 4438x亚洲最大成人网| 中文字幕乱码亚洲精品一区| 日韩电影免费在线看| 在线视频观看一区| 国产精品久久毛片av大全日韩| 精一区二区三区| 欧美日韩亚洲综合一区二区三区| 亚洲欧洲美洲综合色网| 国产精品一级片| 91麻豆精品国产自产在线| 亚洲欧美一区二区三区极速播放| 国产乱码精品一区二区三区忘忧草| 欧美精品视频www在线观看| 亚洲欧美在线视频观看| 东方欧美亚洲色图在线| 精品动漫一区二区三区在线观看| 偷拍日韩校园综合在线| 91传媒视频在线播放| **性色生活片久久毛片| 东方欧美亚洲色图在线| 欧美精品一区视频| 日本视频免费一区| 51精品秘密在线观看| 香蕉久久一区二区不卡无毒影院 | 国产ts人妖一区二区| www久久久久| 国产精品99久久久| 久久久久久99精品| 国产精品99久| 中文字幕免费不卡在线| 99久久伊人久久99| 国产精品美女久久久久久久久| 国产成人8x视频一区二区| 久久久久久黄色| 成人激情小说网站|