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

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

?? mmconecard.c

?? How to control MMC interface under SZ platform
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************

 C   H E A D E R   F I L E

 (c) Copyright Motorola Semiconductors Hong Kong Limited 1999 - 2002
 ALL RIGHTS RESERVED

*******************************************************************************

 Project Name : Portable Personal System Manager - GT version 2.0
 Project No.  : PDAPSM05
 Last Modified: Jan 31, 2002
File Name:	  MMC.c
Description:  The funcitions stored in this file were interface with Device Mange

*******************************************************************************/

#include "rtoshdrs.h"
#include "dev_ptyp.h"
#include "dev_pdef.h"
#include "DEV_pptt.h"
#include "mmclocal.h"
#include "os_typ.h"
#include "mmc_ptt.h"
#include "DMA_def.h"
#include "DMA_pptt.h"
#include "HAL_pptt.h"
#include "DMA_typ.h"
#include "FLS_dd.h"
#include "Mem_pptt.h"

struct driver_FS _gMMCDriverFs={MMCInit,MMCRawRead,MMCRawWrite,MMCFormat, MMCRead,
                      MMCWrite,MMCTimeStamp,MMCDiskChange,MMCIoctl};

/******************************************************************************

 Function Name    : STATUS MmcSetupDriver()

 Input Parameters : VOID
 
 Output Parameters: VOID

 Value returned   : SYS_OK          : Sucessful operation

 Description      : Driver Setup Function, Function Name is fixed

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/

STATUS _MmcSetupDriver()
{

 	DEVICE mmcDevice={
 	
 	1,  						       /* Common fields. device type 1=pcfm,it is used for devices with USFiles support. 255 = devices without File System support */
    0,	     						   /* Common fields, number of open paths to this device */
	(DRIVER*)&_gMMCDriverFs,	   	   /* Common fields, pointer to device driver routines */
    "MMC",							   /* Common fields, device name */
    0,							       /*Common fields, Indicates the device' attributes. Its definition is as following:
    									bit 0 ~ 5  	--- Power mode attributes
    									bit 6 ~ 29 	--- reserved for future use
    									bit 30		--- reserved for DMA use, here set to 0
    									bit 31     	--- Indicate if the device has DMA capability, 1 */

    0x7,							   /* Only used for devices with File System support.bits: 0 = read, 1 = write , 2 = text mode*/
    0,    						       /* Only used for devices with File System support.for pcfm this will flag when the drive has been recalibrated.*/
    MMC_UNIT_NO,				       /* Only used for devices with File System support.device unit no.For multiunit devices.  */
    0,  							   /* Only used for devices with File System support.partition if hard disk (units 128-255).*/
    0,							       /* Only used for devices with File System support.Reserved for USFiles */

    0,								   /* Only used for devices with File System support.Reserved for USFiels */
	NULL, 
   						      /* Only used for devices with File System support.device base address */
	PPSMFILEMANAGER,		      /* Only used for devices with File System support.pointer to file manager routine*/ 

    PPSMPCPARM,			 				      /*Only used for devices with File System support.device parameter table pointer,for pcfm the
                                           table of info derived from the disk BPB. */
    NULL,					           /* Only used for devices with File System support.Pointer to the file*/
 	};

    _HalAttachIsr(HAL_INT_MMC,_MMCIrptHandle);
    _HalMaskIrptSource(HAL_INT_MMC);
    
	return _DevInstall(&mmcDevice);

}

/******************************************************************************

 Function Name    : MMCInit( DEVICE *devp )

 Input Parameters : DEVICE *devp DEVICE Table
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. Initialize
 					A card

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/
int MMCInit( DEVICE *devp )
{
 	
    MMC_STATUS  ret;/* ERROR DURING INITIALIZATION */

	TRACE("***************************************************************\n");
    ret = 0;
    _gMMCDMAChannel=0xFF;
  	
  	_HalUnMaskIrptSource(HAL_INT_MMC);
  	 
    TRACE("MMC init function\n");
    /*  INITIALIZE A CARD (FOR MMC MODE, CMD0 TO CMD3.)   */                  
    if ( ret = _MMCInitOneCard(&_gCardInfo  ) )
    {
        TRACE("MMC init function---Fail!  ERR_MEDIA_NOREADY\n");
        return( ERR_MEDIA_NOREADY );
    }
 
    return( 0 );
}
/******************************************************************************

 Function Name    : MMCRead( MMC_STATUS log_sect, PCFM_BUFFER *bufp )

 Input Parameters : MMC_STATUS log_sect 	 : Logical Sector Number
 					PCFM_BUFFER *buf : Buffer pointer
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. 
 					Read 1 block(SECTOR);

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/
int MMCRead( U32 log_sect, PCFM_BUFFER *bufp )
{
    U8  card_no;
    MMC_STATUS  ret;
	DMA_CONFIG DmaConfig;
    ret = 0;
	TRACE("***************************************************************\n");
    TRACE("MMC Read Function\n");
  
    _gMMCDMAChannel=0xFF;
    _gMMCDMAChannel=_DmaRequestChannel(DMA_TYPE_IO,DMA_MMC,&_gMMCDMAReq);
    if(_gMMCDMAChannel!=0xFF)
	{
		DmaConfig.Mask=DMA_BURSTLENGTH;
		if(_gCardInfo.type==MMC_TYPE_MMC)
			DmaConfig.BurstLength=16; //depond on MMC FIFO Size  
		else
			DmaConfig.BurstLength=0; //depond on MMC FIFO Size  
		_DmaConfigChannel(_gMMCDMAChannel,&DmaConfig);
	}
	 
    /*----------------------------------------------------------------------*/
    /*  ACQUIRE THE CARD NUMBER                                             */
    /*----------------------------------------------------------------------*/
    card_no = (bufp->devp->unit_no & ~MMC_UNIT_NO);
    /*----------------------------------------------------------------------*/
    /*  READ                                                                */
    /*----------------------------------------------------------------------*/
    if ( bufp->userbuf == 0 )
    {
        if ( ret = _MMCReadSectOneCard(log_sect, (uint16)1,
                                  bufp->buf) )
        {
            if(_gMMCDMAChannel!=0xFF)
            	_DmaReleaseChannel(_gMMCDMAChannel);
           
            return _MMCErrorConvert(ret) ;
        }
    }
    else
    {
        if ( ret = _MMCReadSectOneCard(log_sect, bufp->nsects,
                                  bufp->userbuf ) )
        {
    		if(_gMMCDMAChannel!=0xFF)
	          	_DmaReleaseChannel(_gMMCDMAChannel);
		
            return _MMCErrorConvert(ret) ;
        }
    }
	
	if(_gMMCDMAChannel!=0xFF)
	   	_DmaReleaseChannel(_gMMCDMAChannel);


    TRACE("MMC Read Function: Succcess\n");

    return( 0 );
}
/******************************************************************************

 Function Name    : MMCWrite( U32 log_sect, PCFM_BUFFER *bufp )

 Input Parameters : U32 log_sect 	 : Logical Sector Number
 					PCFM_BUFFER *buf : Buffer pointer
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. 
 					Write 1 block(SECTOR);

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/
int MMCWrite( U32 log_sect, PCFM_BUFFER *bufp )
{
    U8  card_no;
    MMC_STATUS  ret;
    DMA_CONFIG DmaConfig;
    
	TRACE("***************************************************************\n");
	TRACE("MMC Write Function\n");
		
	//_gMMCDMAChannel=0xFF;
    _gMMCDMAChannel=_DmaRequestChannel(DMA_TYPE_IO,DMA_MMC,&_gMMCDMAReq);
	if(_gMMCDMAChannel!=0xFF)
	{
		DmaConfig.Mask=DMA_BURSTLENGTH;
		if(_gCardInfo.type==MMC_TYPE_MMC)
			DmaConfig.BurstLength=16; //depond on MMC FIFO Size  
		else
			DmaConfig.BurstLength=0; //depond on MMC FIFO Size
		_DmaConfigChannel(_gMMCDMAChannel,&DmaConfig);
	}
	ret = 0;
    /*----------------------------------------------------------------------*/
    /*  ACQUIRE THE CARD NUMBER                                             */
    /*----------------------------------------------------------------------*/
    card_no = (bufp->devp->unit_no & ~MMC_UNIT_NO);
    /*----------------------------------------------------------------------*/
    /*  WRITE                                                               */
    /*----------------------------------------------------------------------*/
    if ( bufp->userbuf == 0 )
    {
        if ( ret = _MMCWriteSectOneCard( log_sect, (uint16)1,
                                   bufp->buf) )
        {
            if(_gMMCDMAChannel!=0xFF)
            	_DmaReleaseChannel(_gMMCDMAChannel);
            //_HalDetachIrpt()     TEMP
            
            return	_MMCErrorConvert(ret);
        }
    }
    else
    {
        if ( ret = _MMCWriteSectOneCard(log_sect, bufp->nsects,
                                   bufp->userbuf) )
        {
            if(_gMMCDMAChannel!=0xFF)
            	_DmaReleaseChannel(_gMMCDMAChannel);
 			//_HalDetachIrpt()     TEMP
            return	_MMCErrorConvert(ret);
        }
    }
 
    if(_gMMCDMAChannel!=0xFF)
       	_DmaReleaseChannel(_gMMCDMAChannel);
	
	//_HalDetachIrpt()     TEMP

	TRACE("MMC Write Function: Success\n");

    return( 0 );
}

/******************************************************************************

 Function Name    : MMCRead( DEVICE *devp, int cylinder, int head,
                   int nsects, void *bufp )

 Input Parameters : *devp    --> Device Table
           			cylinder --> Cylinder
    		       	head     --> Header
		            nsects   --> Sector
	    		    *bufp    --> Buffer Point
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. 
 					Format

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/
int MMCFormat( DEVICE *devp, int cylinder, int head,
                   int nsects, void *bufp )
{
    return( 0 );
}
/******************************************************************************

 Function Name    : MMCRawRead( DEVICE *devp,  int cylinder, int head, int sector,
	                  			int nsects, void *bufp )
	                  
 Input Parameters : *devp    -->  Device Table
		            cylinder -->  The number of cylinder
        	    	head     -->  The head number of header
        		    sector   -->  The number of sector per cylinder 
    	    	    nsects   -->  The number of sectors
	           		*bufp    -->  Buffer Pointer
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. 
 					Raw Read

 Cautions         : 
 
 Prev Condition   : VOID

 Post Condition   : VOID

******************************************************************************/
int MMCRawRead( DEVICE *devp,  int cylinder, int head, int sector,
                  int nsects, void *bufp )
{
    return( SYS_ERR );/* raw_read SHALL NOT BE CALLED BECAUSE THIS IS HDD FORMAT  */
}

/******************************************************************************

 Function Name    : MMCRawWrite( DEVICE *devp, int cylinder, int head, int sector,
				                   int nsects, void *bufp )
	                  
 Input Parameters : *devp    -->  Device Table
		            cylinder -->  The number of cylinder
        	    	head     -->  The head number of header
        		    sector   -->  The number of sector per cylinder 
    	    	    nsects   -->  The number of sectors
	           		*bufp    -->  Buffer Pointer
 
 Output Parameters: VOID

 Value returned   : int    0: Sucessful operation, others: meet Error

 Description      : Interface functions between USFiles and MMC driver. 
 					Raw Write

 Cautions         : Public function.
 
 Prev Condition   : VOID

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日本在线| 久久久综合精品| 国产麻豆成人精品| 亚洲精品中文字幕乱码三区| 日韩免费电影网站| av在线一区二区| 看片的网站亚洲| 亚洲综合在线第一页| 国产女人18毛片水真多成人如厕 | 麻豆成人综合网| 亚洲精品美国一| 久久老女人爱爱| 337p亚洲精品色噜噜噜| 99久久精品免费看| 国产一区二区三区在线观看免费视频 | 777亚洲妇女| 91蝌蚪porny| 国产成人精品三级麻豆| 蜜桃视频在线观看一区| 亚洲一卡二卡三卡四卡无卡久久| 国产天堂亚洲国产碰碰| 日韩一卡二卡三卡四卡| 欧美日韩在线播| 99精品欧美一区二区三区小说| 狠狠色综合播放一区二区| 午夜激情久久久| 亚洲午夜久久久久久久久电影院| 国产精品无码永久免费888| 欧美成人伊人久久综合网| 91精品国产91久久综合桃花| 欧美日免费三级在线| 97久久精品人人做人人爽| 懂色av一区二区三区蜜臀| 精彩视频一区二区三区| 欧美aa在线视频| 日本不卡一区二区| 丝袜a∨在线一区二区三区不卡| 亚洲女厕所小便bbb| 亚洲欧美在线aaa| 中文字幕在线不卡一区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲电影在线播放| 亚洲综合色网站| 洋洋av久久久久久久一区| 亚洲免费在线看| 一区二区三区不卡在线观看| 亚洲综合激情网| 亚洲综合图片区| 日韩中文欧美在线| 美女精品一区二区| 久久99久久99精品免视看婷婷| 麻豆精品新av中文字幕| 极品少妇xxxx精品少妇偷拍| 国内成+人亚洲+欧美+综合在线| 精品亚洲欧美一区| 国产一区欧美日韩| 国产成人av电影在线| 成人h精品动漫一区二区三区| 99视频在线观看一区三区| 99久久久免费精品国产一区二区 | 精品福利av导航| 国产欧美精品在线观看| 中文av一区二区| 一区二区三区精品视频| 天天操天天色综合| 琪琪一区二区三区| 国产精品一区2区| 91污片在线观看| 欧美日韩国产a| 精品不卡在线视频| 国产精品女主播在线观看| 亚洲最新视频在线观看| 日韩精品成人一区二区三区| 久久草av在线| av在线不卡免费看| 欧美日韩久久久久久| 精品国产乱码久久久久久久| 国产精品久99| 老司机免费视频一区二区三区| 岛国精品一区二区| 欧美主播一区二区三区| 日韩精品一区在线观看| 欧美极品xxx| 亚洲成人动漫在线免费观看| 国产伦精品一区二区三区视频青涩 | 日韩欧美中文字幕公布| 国产精品久久久久影院色老大| 亚洲成av人片在线观看无码| 国产一区二区三区日韩| 色狠狠av一区二区三区| 精品国产91九色蝌蚪| 一区二区三区在线免费观看| 精东粉嫩av免费一区二区三区| 色偷偷成人一区二区三区91| 精品福利av导航| 亚洲福利视频导航| 成人午夜视频在线观看| 91精品国产丝袜白色高跟鞋| 亚洲欧美一区二区三区久本道91 | 成人三级伦理片| 3d成人动漫网站| 亚洲欧美偷拍卡通变态| 裸体在线国模精品偷拍| 91九色02白丝porn| 日本一区二区视频在线观看| 蜜桃视频在线观看一区| 日本道在线观看一区二区| 久久久久国产一区二区三区四区| 午夜精品免费在线观看| 99国产精品久久久| 久久精品在线观看| 蜜臀91精品一区二区三区| 91精品福利在线| 1000部国产精品成人观看| 国产一区二区在线视频| 欧美一区二区三区人| 亚洲一区自拍偷拍| 99久久精品国产一区| 久久久.com| 韩国欧美国产1区| 欧美一级免费大片| 亚洲成av人影院| 欧美视频一区二区三区四区 | 午夜精品久久久久久| 在线影视一区二区三区| 日本一区二区三区四区| 国产成人午夜片在线观看高清观看| 日韩欧美亚洲国产另类| 偷偷要91色婷婷| 欧美日韩在线播放| 洋洋av久久久久久久一区| 91久久久免费一区二区| 亚洲一区二区欧美激情| 色国产精品一区在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 成人av网站大全| 欧美国产成人精品| 国产99久久久精品| 亚洲国产成人自拍| 丰满亚洲少妇av| 国产精品五月天| 99视频在线观看一区三区| 中文字幕综合网| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 2020国产精品自拍| 久久疯狂做爰流白浆xx| 亚洲精品在线观看网站| 麻豆精品视频在线| 日韩欧美的一区| 国产精一区二区三区| 中文字幕欧美日本乱码一线二线| 国产伦精品一区二区三区视频青涩 | 日韩精品在线看片z| 狠狠色丁香婷综合久久| 国产三级三级三级精品8ⅰ区| 国产成人精品亚洲777人妖| 国产精品不卡一区二区三区| 91蜜桃传媒精品久久久一区二区| 一区二区三区在线观看视频| 欧美日韩在线免费视频| 久久精品免费看| 国产日本亚洲高清| 91在线观看一区二区| 一区二区三区在线观看动漫 | 中文字幕一区日韩精品欧美| 91色视频在线| 日韩成人午夜精品| 久久网这里都是精品| 94-欧美-setu| 日本欧美一区二区三区| 国产丝袜在线精品| 91黄色激情网站| 激情小说欧美图片| 综合久久久久久| 日韩一级在线观看| 国产a精品视频| 亚洲动漫第一页| 国产精品少妇自拍| 欧美三级日韩在线| 国产精品99久久久久久似苏梦涵 | 国产麻豆视频精品| 国产精品免费视频一区| 欧美日韩大陆一区二区| 国产精品系列在线观看| 亚洲成人精品影院| 精品福利视频一区二区三区| 色欧美乱欧美15图片| 五月婷婷久久综合| 国产精品伦一区二区三级视频| 色婷婷综合久久久中文字幕| 亚洲欧美一区二区三区国产精品| 日韩欧美中文字幕一区| eeuss影院一区二区三区| 亚洲一区二区免费视频| 中文成人综合网| 欧美日韩色一区| 国产真实乱子伦精品视频| 亚洲一区二区精品久久av| 欧美成人a在线| 91在线视频在线|