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

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

?? sd.c

?? SDIO實(shí)現(xiàn)底層驅(qū)動(dòng)文件.非常有用.經(jīng)典!
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *   sd.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   driver functons for SD/MMC 
 *   
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================ 
 ****************************************************************************/
#include "kal_release.h"
#include "app_buff_alloc.h"
#include "gpt_sw.h"
#include "msdc_def.h"
#include "sd_def.h"
#include "intrCtrl.h"
#include "reg_base.h"

#if defined(__MSDC_SD_MMC__)
//global variables
T_SDC_HANDLE	gSD;

extern void GPTI_BusyWait(kal_uint16 len);
extern kal_uint8 MSDC_GetIOCtrlParam(void);
/*************************************************************************
* FUNCTION
*  SD_Acmd42
*
* DESCRIPTION
*	connect/disconnect the 50K Ohm pull-up resistor on CD/DAT3
*
* PARAMETERS
*
* RETURNS
*	SDC_CMD_STATUS
*
* GLOBALS AFFECTED
*	gSD
*
* NOTE
*	
*
*************************************************************************/

// Get CID(CMD2)
SDC_CMD_STATUS SD_Acmd42(kal_bool connect)
{
	SDC_CMD_STATUS status;

	// send APP_CMD
	if((status = SD_Cmd55(gSD.mRCA))!=NO_ERROR)
		return status;
	// send cmd6
	if((status = SD_Send_Cmd(SDC_CMD_ACMD42,connect))!=NO_ERROR)
		return status;
	//read R1
	if((status = SD_CheckStatus())!=NO_ERROR)
		return status;	

	gSD.mCD_DAT3 = KAL_FALSE;	// pull-up resistor is disconnected for data trnasfer
	return NO_ERROR;
}

/*************************************************************************
* FUNCTION
*  SD_SetMMC40_4bit_high_speed
*
* DESCRIPTION
*	Check inserted card is SD or MMC
*
* PARAMETERS
*	
*
* RETURNS
*  SD_CARD or MMC_CARD
*
* GLOBALS AFFECTED
*	gMSDC_Handle
*
*************************************************************************/
SDC_CMD_STATUS SD_SetMMC40_bus_high_speed(void)
{
		kal_uint32 clock, hs;
		
		MSDC_WriteReg32(MSDC_IOCON,0x1B);			
		// read the EXT_CSD
		if(SD_SendEXTCSD_MMC40(MSDC_Sector) != NO_ERROR)
			goto err;;

		// set high speed
		if(gSD.mCSD.ext_csd->card_type & HS_52M)
		{
			// should be 52000
			clock = 13000;
			hs = 1;
		}
		else if(gSD.mCSD.ext_csd->card_type & HS_26M)
		{
			// should be 26000
			clock = 13000;
			hs = 1;
		}
		else
		{
			clock = 13000;
			hs = 0;
		}
		if(hs)
		{
			// select proper power class
			if(SD_Switch_MMC40(SET_BYTE,EXT_CSD_POW_CLASS_INDEX,
				(gSD.mCSD.ext_csd->pwr_52_360&0xf) ,0) != NO_ERROR)
				goto err;
			
			// enable high speed (26M or 52M)
			if(SD_Switch_MMC40(SET_BYTE,EXT_CSD_HIGH_SPPED_INDEX,
				EXT_CSD_ENABLE_HIGH_SPEED,0) != NO_ERROR)
				goto err;

			// latch data at falling edge to cover the card driving capability
			// MSDC_SET_BIT32(MSDC_CFG,MSDC_CFG_RED);			
		}
		gMSDC_Handle.msdc_clock = MSDC_CLOCK;
		MSDC_SetClock(clock);
		
		// select bus width
		#if defined(MMC40_USE_4BIT_BUS)
		// enable 4-bit bus width
		if(SD_Switch_MMC40(SET_BYTE,EXT_CSD_BUS_WIDTH_INDEX,BIT_4_MMC40,0) != NO_ERROR)
			goto err;
		MSDC_SET_BIT32(SDC_CFG,SDC_CFG_MDLEN);
		gSD.bus_width = 4;		
		#elif defined(MMC40_USE_8BIT_BUS)
		// enable 8-bit bus width
		if(SD_Switch_MMC40(SET_BYTE,EXT_CSD_BUS_WIDTH_INDEX,BIT_8_MMC40,0) != NO_ERROR)
			goto err;
		MSDC_SET_BIT32(SDC_CFG,SDC_CFG_MDLEN8);
		gSD.bus_width = 8;		
		#endif
					
		if(SD_SendEXTCSD_MMC40(MSDC_Sector) != NO_ERROR)
			goto err;;
				
		return NO_ERROR;
err:
		return ERR_MMC_BUS_HS_ERROR;
}
/*************************************************************************
* FUNCTION
*  SD_CheckSDorMMC
*
* DESCRIPTION
*	Check inserted card is SD or MMC
*
* PARAMETERS
*	
*
* RETURNS
*  SD_CARD or MMC_CARD
*
* GLOBALS AFFECTED
*	gMSDC_Handle
*
*************************************************************************/
T_MSDC_CARD SD_CheckSDorMMC()
{
	SDC_CMD_STATUS status; 

	// 1. send ACMD41
	if((status = SD_Acmd41_SD())==NO_ERROR)
		return gMSDC_Handle.mMSDC_type;	// SD_CARD
	else if((status = SD_Cmd1_MMC())==NO_ERROR)
		return gMSDC_Handle.mMSDC_type;	// MMC_CARD

	return UNKNOWN_CARD;
}
/*************************************************************************
* FUNCTION
*  SD_SetDefault
*
* DESCRIPTION
*	set default values to gSD
*
* PARAMETERS
*	
*
* RETURNS
*
* GLOBALS AFFECTED
*	gSD
*
*************************************************************************/
void SD_SetDefault(void)
{
	kal_mem_set(&gSD,0,sizeof(T_SDC_HANDLE));
	gSD.mBKLength = 512;
	gSD.mRCA = 0;
	gSD.mInactive = KAL_FALSE;
	gSD.mState = IDLE_STA;
	gSD.bus_width = 1;
	gSD.mCD_DAT3 = KAL_TRUE;
}
/*************************************************************************
* FUNCTION
*  SD_Initialize
*
* DESCRIPTION
*	Initial SD controller and card
*
* PARAMETERS
*	
*
* RETURNS
*  SDC_CMD_STATUS
*
* GLOBALS AFFECTED
*	gSD
*
*************************************************************************/
SDC_CMD_STATUS SD_Initialize(void)
{
	kal_uint32 cid[4],csd[4],scr[4];
	kal_uint16 rca, iocon;
	SDC_CMD_STATUS status;

	if(gMSDC_Handle.mIsInitialized == KAL_TRUE)
	{
		return NO_ERROR;
	}
	// reset the events
	kal_set_eg_events(MSDC_Events, 0, KAL_AND);
	// reset msdc
	if(*(volatile kal_uint32*)MSDC_CFG & MSDC_CFG_RST)
	{
		MSDC_CLR_BIT32(MSDC_CFG, MSDC_CFG_RST);
	}
	else
	{
		RESET_MSDC();
	}
	// set rise edge data
	//MSDC_SET_BIT32(MSDC_CFG,MSDC_CFG_RED);
	// TODO: some card off, but some are on 
	//MSDC_SET_BIT32(MSDC_CFG,MSDC_CFG_CRED);
	
	// set the output driving capability from customization interface
	iocon = *(volatile kal_uint16*)MSDC_IOCON;
	iocon &= ~(0xff);
	iocon |= MSDC_GetIOCtrlParam();
	MSDC_WriteReg16(MSDC_IOCON,(kal_uint16)iocon);			
	
	// set pull up the data and cmd 
	BitFieldWrite32((kal_uint32*)MSDC_CFG,(kal_uint32)2,MSDC_CFG_PRCFG0);
	BitFieldWrite32((kal_uint32*)MSDC_CFG,(kal_uint32)2,MSDC_CFG_PRCFG1);
	BitFieldWrite32((kal_uint32*)MSDC_CFG,(kal_uint32)2,MSDC_CFG_PRCFG2);	
	// set read timeout x5ms
	BitFieldWrite32((kal_uint32*)SDC_CFG,(kal_uint32)40,SDC_CFG_DTOC);
	//set clock of serial clcok for initialization
	MSDC_CLR_BIT32(MSDC_CFG, MSDC_CFG_CLKSRC);
	gMSDC_Handle.msdc_clock = MSDC_CLOCK;
	MSDC_SetClock(MSDC_INI_CLOCK);	
	// disable 4-bit
	MSDC_CLR_BIT32(SDC_CFG,SDC_CFG_MDLEN);
	// initial global sturctures
	SD_SetDefault();
	// send the card to IDLE state
	if((status = SD_Reset())!=NO_ERROR)
	{
		goto err;
	}
	// set the IRQ MASK
	// set block length to 512
	BitFieldWrite32((kal_uint32*)SDC_CFG,(kal_uint32)512,SDC_CFG_BLKLEN);

	// and validate the OCR  (CMD0,CMD1 or ADMD41)
	if(SD_CheckSDorMMC() == UNKNOWN_CARD)
	{
		status = ERR_STATUS;
		goto err;
	}

	// get CID(CMD2)
	if((status = SD_GetCID(cid))!=NO_ERROR)
	{
		goto err;
	}
	// get or set RCA(CMD3)
	if((status = SD_ValidateRCA(&rca))!=NO_ERROR)
	{
		goto err;
	}
	// get CSD and analysis the CSD(CMD9)
	if((status = SD_GetCSD(gSD.mRCA,csd))!=NO_ERROR)
	{
		goto err;
	}		
	// Set driver stage register DSR to default value (0x0404)(CMD4)
	if(gSD.mCSD.dsr_imp)
		if((status = SD_SetDSR())!=NO_ERROR)
		{
			//dbg_print("6\r\n");
			goto err;
		}
	
	#if !defined(__MSDC_NO_WRITE_PROTECT__)
	// check write proctect switch(WP at SDC_STA)
	if((*(volatile kal_uint16*)SDC_STA & SDC_STA_WP))
		gSD.mWPEnabled = KAL_TRUE;
	#endif
	
	// select the card (CMD7) ,maybe locked 
	status = SD_SelectCard(gSD.mRCA);
	if(status == CARD_IS_LOCKED)
		gSD.mIsLocked = KAL_TRUE;

	// read the SD Configuration Register(ACMD51)
	if(gMSDC_Handle.mMSDC_type == SD_CARD)
	{
		#if defined(MSDC_USE_USB_CLK)
		MSDC_SET_BIT32(MSDC_CFG, MSDC_CFG_CLKSRC);
		gMSDC_Handle.msdc_clock = MSDC_CLOCK_USB;
		MSDC_SetClock(MSDC_SD_OP_CLOCK);
		#else
		MSDC_CLR_BIT32(MSDC_CFG, MSDC_CFG_CLKSRC);
		gMSDC_Handle.msdc_clock = MSDC_CLOCK;
		MSDC_SetClock(MSDC_OP_CLOCK);
		#endif
		if((status = SD_ReadSCR(scr))!=NO_ERROR)
		{
			goto err;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a美女胸又www黄视频久久| 欧洲精品中文字幕| 亚洲观看高清完整版在线观看| 日韩午夜av一区| 91成人在线精品| 国产成人亚洲综合色影视| 天天综合色天天| 亚洲欧美偷拍三级| 国产亚洲欧美一区在线观看| 91精品国产综合久久香蕉的特点| 91麻豆文化传媒在线观看| 国产在线精品不卡| 麻豆精品国产91久久久久久| 亚洲自拍偷拍图区| 亚洲视频图片小说| 亚洲国产精品成人综合| 日韩精品一区二区三区在线| 精品视频在线免费观看| 色综合天天在线| 成人国产一区二区三区精品| 激情综合色播五月| 久久99热这里只有精品| 日韩**一区毛片| 日韩精品色哟哟| 午夜精品aaa| 亚洲国产精品久久久久秋霞影院| 亚洲欧美在线高清| 国产精品青草久久| 国产精品色在线| 中文字幕第一区第二区| 欧美精品一区二区蜜臀亚洲| 日韩精品一区二区三区在线播放| 6080国产精品一区二区| 欧美老肥妇做.爰bbww视频| 91福利国产成人精品照片| 在线视频你懂得一区二区三区| 色综合久久久久综合体桃花网| av色综合久久天堂av综合| 成人白浆超碰人人人人| 成人av电影免费观看| www.在线成人| 一本大道久久a久久综合婷婷| 97久久精品人人做人人爽50路| 99久久免费国产| 色婷婷狠狠综合| 欧美色综合天天久久综合精品| 欧美三日本三级三级在线播放| 欧美日韩在线一区二区| 欧美高清视频在线高清观看mv色露露十八| 欧美色图免费看| 5858s免费视频成人| 精品一区二区在线播放| 日韩电影免费在线| 亚洲天堂av一区| 日韩中文字幕麻豆| 久久夜色精品国产噜噜av| 久久免费视频一区| 国产精品进线69影院| 亚洲三级在线免费观看| 亚洲777理论| 国内精品免费在线观看| 成人午夜免费视频| 欧美日韩激情一区二区| www成人在线观看| 亚洲视频狠狠干| 成人av第一页| 51精品视频一区二区三区| 日韩一二三区视频| 日本一区免费视频| 亚洲国产视频直播| 国产一区二区三区精品视频| 91视频.com| 日韩区在线观看| 国产精品久久久久久久久免费丝袜| 亚洲黄色尤物视频| 美女久久久精品| proumb性欧美在线观看| 欧美精三区欧美精三区| 中文字幕第一区第二区| 图片区小说区国产精品视频| 高潮精品一区videoshd| 欧美喷潮久久久xxxxx| 欧美国产97人人爽人人喊| 亚洲成人激情av| 成人免费看的视频| 欧美一区二区在线免费观看| 国产精品久久久久婷婷| 麻豆91精品视频| 91免费视频大全| 精品免费日韩av| 一区二区三区.www| 国产精品一区一区三区| 欧美日韩久久一区| 18成人在线观看| 国产在线麻豆精品观看| 欧美色电影在线| 亚洲同性同志一二三专区| 激情欧美日韩一区二区| 欧美日韩高清在线播放| 自拍av一区二区三区| 韩国女主播成人在线| 欧美精品777| 一区二区三区四区国产精品| 国产成人午夜高潮毛片| 欧美大白屁股肥臀xxxxxx| 亚洲自拍另类综合| 91免费国产视频网站| 国产婷婷精品av在线| 欧美bbbbb| 欧美人xxxx| 亚洲成人免费电影| 色成人在线视频| 亚洲男人电影天堂| aaa欧美日韩| 国产精品久久一卡二卡| 国产一区二区美女| 欧美电视剧在线观看完整版| 日韩黄色小视频| 91精品国产色综合久久久蜜香臀| 亚洲综合一二三区| 欧洲亚洲国产日韩| 夜夜亚洲天天久久| 色爱区综合激月婷婷| 亚洲女同ⅹxx女同tv| 99久久国产综合精品女不卡| 日本一区二区三区久久久久久久久不| 国产一区二区三区精品欧美日韩一区二区三区| 欧美一级在线观看| 秋霞影院一区二区| 日韩免费在线观看| 久久99国产乱子伦精品免费| 欧美大肚乱孕交hd孕妇| 国产又粗又猛又爽又黄91精品| 精品国内片67194| 国内精品在线播放| 国产喷白浆一区二区三区| 国产成人av一区二区三区在线 | 国产在线一区二区| 欧美成人精品二区三区99精品| 日本va欧美va精品| 欧美成人女星排名| 国产一区二区精品久久91| 欧美极品xxx| 99热在这里有精品免费| 亚洲摸摸操操av| 欧美日韩一二区| 久久草av在线| 亚洲国产精品成人综合色在线婷婷| 国产成人免费视频一区| 中文字幕在线不卡一区二区三区| 99精品国产热久久91蜜凸| 一区二区久久久| 日韩一区二区三区四区五区六区| 国产一区二区在线影院| 国产精品久久久久永久免费观看 | 国产欧美va欧美不卡在线| 成人午夜在线视频| 亚洲综合999| 日韩女同互慰一区二区| 成人永久免费视频| 亚洲一区自拍偷拍| 精品久久久久久久一区二区蜜臀| 国产成人精品免费一区二区| 亚洲人成精品久久久久| 欧美绝品在线观看成人午夜影视| 美国av一区二区| 中文字幕在线不卡国产视频| 欧美丝袜丝交足nylons| 国模无码大尺度一区二区三区| 一区在线播放视频| 欧美人动与zoxxxx乱| 国产成人精品www牛牛影视| 亚洲激情av在线| 久久香蕉国产线看观看99| 色悠久久久久综合欧美99| 久久精品国产在热久久| 亚洲码国产岛国毛片在线| 欧美一卡在线观看| 99热99精品| 精品亚洲国内自在自线福利| 亚洲精品久久嫩草网站秘色| 精品国产三级a在线观看| 日本韩国视频一区二区| 精品中文字幕一区二区| 亚洲精品欧美激情| 精品国产精品网麻豆系列| 91久久香蕉国产日韩欧美9色| 国产麻豆视频精品| 水蜜桃久久夜色精品一区的特点| 亚洲国产精品99久久久久久久久 | 国产成人精品亚洲日本在线桃色| 亚洲国产中文字幕在线视频综合| 国产日韩欧美精品一区| 69堂国产成人免费视频| 一本色道**综合亚洲精品蜜桃冫 | 欧美浪妇xxxx高跟鞋交| 91在线视频播放| 丁香另类激情小说| 久国产精品韩国三级视频| 亚洲妇女屁股眼交7|