mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@96 4ee2a332-4b2b-5046-8439-1ba90f034370
350 lines
20 KiB
C
350 lines
20 KiB
C
/*
|
||
** Copyright (c) 2000-2001 Matsushita Electric Industrial Co., Ltd.
|
||
** All Rights Reserved.
|
||
*/
|
||
|
||
/*
|
||
** $Module SDカードアクセスモジュール・インクルード
|
||
** $Filename SD_CARD_IP.H
|
||
** $Version 1.0 版
|
||
** $Date 01/02/16
|
||
** $Log 01/02/16 rev1.0作成
|
||
** 松下電器産業(株)半導体開発本部
|
||
*/
|
||
|
||
|
||
#ifndef __SD_CARD_IP_H__
|
||
#define __SD_CARD_IP_H__
|
||
|
||
//#define IO3 0 /* Insert Remove SW = FALSE IO3 = TRUE */
|
||
|
||
//#define MAX_SD_CLOCK_4M 0 /* MAX SD Clock 4.608MHz */
|
||
//#define MAX_SD_CLOCK_9M 1 /* MAX SD Clock 9.216MHz */
|
||
|
||
|
||
/*---------------------------------------------
|
||
ラッパーレジスタのビット制御(フラグ定義)
|
||
---------------------------------------------*/
|
||
/* SD_CNTレジスタ */
|
||
#define SDIF_CNT_USEDTC (0x0001) /* DTC使用フラグ (R/W) */
|
||
#define SDIF_CNT_USEFIFO (0x0002) /* FIFO使用フラグ (R/W) */
|
||
#define SDIF_CNT_FULL (0x0100) /* FIFO FULLフラグ (RO) */
|
||
#define SDIF_CNT_NEMP (0x0200) /* FIFO NOT EMPTYフラグ (RO) */
|
||
#define SDIF_CNT_FCLR (0x0400) /* FIFO クリアフラグ (WO) */
|
||
#define SDIF_CNT_FFIE (0x0800) /* FIFO FULLで割り込み (R/W) */
|
||
#define SDIF_CNT_FEIE (0x1000) /* FIFO EMPTYで割り込み (R/W) */
|
||
|
||
#define SDCARD_UseFifoFlag ((*SDIF_CNT) & SDIF_CNT_USEFIFO)
|
||
|
||
/*-------------------------------------
|
||
レジスタのビット制御(フラグ定義)
|
||
-------------------------------------*/
|
||
/* SD_CMDレジスタ*/
|
||
#define SD_CMD_CMD 0x0000 /* SDカードへの通常アクセス(CMD) */
|
||
#define SD_CMD_ACMD 0x0040 /* SDカードへのセキュリティアクセス(ACMD) */
|
||
|
||
/* SD_STOPレジスタ */
|
||
#define SD_STOP_STP 0x0001 /* データ転送終了を知らせる */
|
||
#define SD_STOP_SEC_ENABLE 0x0100 /* SD_SECCNTレジスタ有効(セクタカウントレジスタ) */
|
||
|
||
/* SD_SECCNTレジスタ */
|
||
#define SD_SECCNT_END 0x0000 /* SD_SECCNTレジスタ カウントチェック */
|
||
|
||
/* SD_SIZEレジスタ */
|
||
#define SD_SIZE_DATA_LENGTH_1B 0x0001 /* SDカード転送データサイズ 1Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_2B 0x0002 /* SDカード転送データサイズ 2Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_4B 0x0004 /* SDカード転送データサイズ 4Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_8B 0x0008 /* SDカード転送データサイズ 8Bytes (SCR) */
|
||
#define SD_SIZE_DATA_LENGTH_16B 0x0010 /* SDカード転送データサイズ 16Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_32B 0x0020 /* SDカード転送データサイズ 32Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_64B 0x0040 /* SDカード転送データサイズ 64Bytes (SD_Status) */
|
||
#define SD_SIZE_DATA_LENGTH_128B 0x0080 /* SDカード転送データサイズ 128Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_256B 0x0100 /* SDカード転送データサイズ 256Bytes */
|
||
#define SD_SIZE_DATA_LENGTH_512B 0x0200 /* SDカード転送データサイズ 512Bytes (データ) */
|
||
|
||
/* SD_OPTIONレジスタ */
|
||
#define SD_OPTION_WIDTH_1BIT 0x8000 /* ビット幅の選択 1bit幅 */
|
||
#define SD_OPTION_MSEL_C2NOUSE 0x4000 /* C2モジュール未使用 */
|
||
#define SD_CD_DETECT_TIME 0xFFF0 /* CD 検出タイムだけをクリアするためのマスク */
|
||
|
||
/* SD_INFO2レジスタ */
|
||
#define SD_INFO2_ERR_ILA 0x8000 /* イリーガルアクセスエラー */
|
||
#define SD_INFO2_BWE 0x0200 /* SDカードから512byteのデータ書込み要求 */
|
||
#define SD_INFO2_BRE 0x0100 /* SDカードから512byteのデータ読込み要求 */
|
||
#define SD_INFO2_ERR_ALLCLR 0x807F /* SD Card エラーレジスタクリア */
|
||
#define SD_INFO2_ERR_SDDAT0 0x0080 /* SD Card Busy bit */
|
||
#define SD_INFO2_ERR_RESTIMEOUT 0x0040 /* レスポンスタイムアウトエラー */
|
||
#define SD_INFO2_ERR_UNDERFLOW 0x0020 /* FIFO アンダーフローエラー */
|
||
#define SD_INFO2_ERR_OVERFLOW 0x0010 /* FIFO オーバーフローエラー */
|
||
#define SD_INFO2_ERR_TIMEOUT 0x0008 /* レスポンス以外のタイムアウトエラー */
|
||
#define SD_INFO2_ERR_END 0x0004 /* フレーム終了認識できないときの(END)エラー */
|
||
#define SD_INFO2_ERR_CRC 0x0002 /* CRC エラー */
|
||
#define SD_INFO2_ERR_CMD 0x0001 /* CMDエラー */
|
||
|
||
#define SD_INFO2_RW_SET 0x0300 /* SDカード Read/Write 要求割込み要因チェック */
|
||
#define SD_INFO2_ERROR_SET 0x807F /* SDカード エラー割込み要因チェック */
|
||
|
||
/* SD_INFO2_MASKレジスタ */
|
||
#define SD_INFO2_MASK_ILA 0x8000 /* イリーガルアクセスエラー割込みマスク */
|
||
#define SD_INFO2_MASK_BWE 0x0200 /* SDカードからのデータ書込み要求割込み禁止 */
|
||
#define SD_INFO2_MASK_BRE 0x0100 /* SDカードからのデータ読込み要求割込み禁止 */
|
||
#define SD_INFO2_MASK_ALLERRMASK 0x807F /* 全エラー割り込み禁止 */
|
||
#define SD_INFO2_MASK_EXCEPT_OVERFLOW 0x802F /* 全エラー割り込み禁止 FIFO Overflow Errorを除く */
|
||
#define SD_INFO2_MASK_RESTIMEOUT 0x0040 /* Time out 割込みEnable */
|
||
#define SD_INFO2_MASK_UNDERFLOW 0x0020 /* FIFO アンダーフロー 割込みEnable */
|
||
#define SD_INFO2_MASK_OVERFLOW 0x0010 /* FIFO オーバーフロー 割込みEnable */
|
||
#define SD_INFO2_MASK_TIMEOUT 0x0008 /* Time out 割込みEnable */
|
||
#define SD_INFO2_MASK_END 0x0004 /* END エラー 割込みEnable */
|
||
#define SD_INFO2_MASK_CRC 0x0002 /* CRC エラー 割込みEnable */
|
||
#define SD_INFO2_MASK_CMD 0x0001 /* CMD エラー 割込みEnable */
|
||
#define SD_INFO2_MASK_ERRSET 0x807F /* SDカード エラー割込み要因チェック */
|
||
|
||
/* SD_INFO1レジスタ */
|
||
#define SD_INFO1_DAT3DETECT 0x0400 /* (IO3検出) card detect(検出=1) : CTRでは使用できない*/
|
||
#define SD_INFO1_DAT3INSERT 0x0200 /* (IO3検出) card inserted(挿入=1) : CTRでは使用できない */
|
||
#define SD_INFO1_DAT3REMOVE 0x0100 /* (IO3検出) card removed(抜け=1) : CTRでは使用できない */
|
||
#define SD_INFO1_DAT3INIT 0x0300 /* (IO3検出) の初期化 */
|
||
#define SD_INFO1_WRITEPROTECT 0x0080 /* write protect(書き込み禁止=1) */
|
||
#define SD_INFO1_DETECT 0x0020 /* card detect(検出=1) */
|
||
|
||
#define SD_INFO1_INSERT 0x0010 /* card inserted(挿入=1) */
|
||
#define SD_INFO1_REMOVE 0x0008 /* card removed(抜け=1) */
|
||
|
||
#define SD_INFO1_ALL_END 0x0004 /* R/W access all end */
|
||
#define SD_INFO1_RES_END 0x0001 /* Response end */
|
||
#define SD_INFO1_INIT 0x0005 /* SD Cardの状態を初期化 */
|
||
|
||
#define SD_INFO1_SET 0x031D /* SDカード 挿抜 and RWアクセス終了 and レスポンス終了 要求割込み要因チェック */
|
||
|
||
/* SD_INFO1_MASKレジスタ (0:割り込み許可、1:割り込み禁止)*/
|
||
#define SD_INFO1_MASK_DAT3INSERT 0x0200 /* (IO3検出) card inserted(挿入) 割込み禁止 */
|
||
#define SD_INFO1_MASK_DAT3REMOVE 0x0100 /* (IO3検出) card removed(抜け) 割込み禁止 */
|
||
#define SD_INFO1_MASK_INSERT 0x0010 /* card inserted(挿入) 割込み禁止 */
|
||
#define SD_INFO1_MASK_REMOVE 0x0008 /* card removed(抜け) 割込み禁止 */
|
||
#define SD_INFO1_MASK_ALL_END 0x0004 /* R/W access all end 割込み禁止 */
|
||
#define SD_INFO1_MASK_RES_END 0x0001 /* Response end 割込み禁止 */
|
||
|
||
/* CC_EXT_MODEレジスタ */
|
||
#define CC_EXT_MODE_PIO 0x0000 /* PIOモード */
|
||
#define CC_EXT_MODE_DMA 0x0002 /* DMAモード */
|
||
|
||
/* SOFT_RSTレジスタ */
|
||
#define SOFT_RST_SDIF_RST 0x0001 /* SD I/Fモジュールをリセット */
|
||
|
||
/* SD_CLK_CTRLレジスタ */
|
||
#define SD_CLK_CTRL_SDCLKEN 0x0100 /* SDカードクロック出力イネーブル */
|
||
#define SD_CLK_CTRL_512 0x0180 /* SDクロックの周波数(分周比512)*/
|
||
#define SD_CLK_CTRL_256 0x0140 /* SDクロックの周波数(分周比256)*/
|
||
#define SD_CLK_CTRL_128 0x0120 /* SDクロックの周波数(分周比128)*/
|
||
#define SD_CLK_CTRL_64 0x0110 /* SDクロックの周波数(分周比 64)*/
|
||
#define SD_CLK_CTRL_32 0x0108 /* SDクロックの周波数(分周比 32)*/
|
||
#define SD_CLK_CTRL_16 0x0104 /* SDクロックの周波数(分周比 16)*/
|
||
#define SD_CLK_CTRL_8 0x0102 /* SDクロックの周波数(分周比 8)*/
|
||
#define SD_CLK_CTRL_4 0x0101 /* SDクロックの周波数(分周比 4)*/
|
||
#define SD_CLK_CTRL_2 0x0100 /* SDクロックの周波数(分周比 2)*/
|
||
|
||
|
||
/*-------------------------------------
|
||
マルチポート対応ビット制御(フラグ定義)
|
||
-------------------------------------*/
|
||
#define SDCARD_PORT_NO 0x0300 /* カードポート選択数 */
|
||
#define SDCARD_PORT_NO_MAX 0x04//0x02 /* カードポート最大選択数 */
|
||
#define SDCARD_PORT_NO_MIN 0x01 /* カードポート最小選択数 */
|
||
#define SDCARD_PORT_SELECT_NO 0x0001 /* カードポート番号ビット */
|
||
#define SDCARD_PORT0 0x0000 /* カードポート番号ビット */
|
||
#define SDCARD_PORT1 0x0001 /* カードポート番号ビット */
|
||
|
||
/* EXT_WPレジスタ(ポート1以降のライトプロテクト) */
|
||
#define EXT_WP_PORT1 0x0001 /* ポート1write protect(書き込み禁止=1)*/
|
||
|
||
/* EXT_CDレジスタ */
|
||
#define EXT_CD_PORT1_REMOVE 0x0001 /* ポート1 card detect(検出=1) */
|
||
#define EXT_CD_PORT1_INSERT 0x0002 /* ポート1 card inserted(挿入=1) */
|
||
#define EXT_CD_PORT1_DETECT 0x0004 /* ポート1 card removed(抜け=1) */
|
||
|
||
/* EXT_CD_DAT3レジスタ */
|
||
//#define EXT_CD_PORT1_DAT3INIT 0x0003 /* ポート1 card の状態 (IO3検出) の初期化 */
|
||
#define EXT_CD_PORT1_DAT3REMOVE 0x0001 /* ポート1 dat3 card detect(検出=1) */
|
||
#define EXT_CD_PORT1_DAT3INSERT 0x0002 /* ポート1 dat3 card inserted(挿入=1) */
|
||
#define EXT_CD_PORT1_DAT3DETECT 0x0004 /* ポート1 dat3 card removed(抜け=1) */
|
||
|
||
/* EXT_CD_DAT3_MASKレジスタ */
|
||
#define EXT_CD_MASK_PORT1INSERT 0x0002 /* port1 card inserted(挿入) 割込み禁止 */
|
||
#define EXT_CD_MASK_PORT1REMOVE 0x0001 /* port1 card removed(抜け) 割込み禁止 */
|
||
#define EXT_CD_MASK_PORT1DAT3INSERT 0x0002 /* port1 (IO3検出) card inserted(挿入) 割込み禁止 */
|
||
#define EXT_CD_MASK_PORT1DAT3REMOVE 0x0001 /* port1 (IO3検出) card removed(抜け) 割込み禁止 */
|
||
|
||
/*-------------------------------------
|
||
カードの選択
|
||
--------------------------------------*/
|
||
#define SDCARD_DETECT_VISUAL_BIT 0x0400 /*** upper layer card detected visual bit ***/
|
||
|
||
/*-------------------------------------
|
||
ライトプロテクト
|
||
-------------------------------------*/
|
||
#define SDCARD_WP_PERMANENT_BIT 0x0020 /*** permanent write protection ***/
|
||
#define SDCARD_WP_TEMPORARY_BIT 0x0010 /*** temporary write protection ***/
|
||
|
||
/*-------------------------------------
|
||
SD or MMCカードコマンド
|
||
-------------------------------------*/
|
||
#define GO_IDLE_STATE (0) /* resets all cards to idle state */
|
||
#define SEND_OP_COND (1) /* Asks all cards in idle state to send their operation conditions */
|
||
#define ALL_SEND_CID (2) /* send CID numbers */
|
||
#define SEND_RELATIVE_ADDR (3) /* ask the card to publish a new relative address(RCA) */
|
||
#define SET_BUS_WIDTH (6) /* ビット幅の選択 */
|
||
#define SELECT_CARD (7) /* Command toggles acard between thr Stand-by and Transfer states */
|
||
#define SEND_CSD (9) /* addressed card sends its card-specific data(CSD) */
|
||
#define STOP_TRANSMISSION (12) /* forces the card to stop transmission */
|
||
#define SD_SEND_STATUS (13) /* addressed card sends its status register */
|
||
#define SET_BLOCKLEN (16) /* sets the block length */
|
||
#define READ_MULTIPLE_BLOCK (18) /* マルチブロックリード */
|
||
#define WRITE_MULTIPLE_BLOCK (25) /* マルチブロックライト */
|
||
#define APP_CMD (55) /* CMD55 */
|
||
#define SD_STATUS (13) /* ACMD13 Send the SD_CARD status */
|
||
#define SEND_NUM_WR_SECTORS (22) /* ACMD22 書きこみ完了セクタ数取得 */
|
||
#define SD_APP_OP_COND (41) /* ACMD41 */
|
||
#define SEND_SCR (51) /* SD configuration register (SCR) */
|
||
|
||
/* MMCplus, eMMCの定義 */
|
||
#define EXT_CSD_ACCESS (6)
|
||
|
||
/* Extended Commandの定義 */
|
||
#define EXT_NORMAL (0)
|
||
#define EXT_SDIO (0x4000)
|
||
|
||
#define EXT_COM_R3 (0x0700)
|
||
|
||
#define EXT_CMD (0x00C0)
|
||
|
||
#define SEND_IF_COND (8) /* Physical Layer 2.0 で追加されたコマンド */
|
||
#define SEND_IF_COND_EXT (EXT_SDIO | EXT_COM_R3 | EXT_CMD | SEND_IF_COND)
|
||
|
||
|
||
/*-------------------------------------
|
||
IP レジスタアクセス マクロ関数
|
||
-------------------------------------*/
|
||
#define SD_OrFPGA(reg,value) ((reg) |= (value));
|
||
#define SD_AndFPGA(reg,value) ((reg) &= (value));
|
||
#define SD_SetFPGA(reg,value) ((reg) = (value));
|
||
#define SD_GetFPGA(dest,reg) ((dest) = (reg));
|
||
|
||
/***********************************************************************
|
||
構造体定数
|
||
***********************************************************************/
|
||
typedef union{
|
||
u32 dat;
|
||
struct {
|
||
u16 low;
|
||
u16 high;
|
||
} dt2word;
|
||
} LELONG;
|
||
|
||
/*-------------------------------------
|
||
その他(ビット制御)
|
||
-------------------------------------*/
|
||
#define RSP_R3_OCR31 0x8000 /* Use OCR Busy bit Check */
|
||
#define RSP_R3_OCR_VDD 0x0030 /* Use OCR VDD bit Check (3.2-3.3v,3.3-3.4v is OK)*/
|
||
|
||
/*--- SCR[0]に対する4bitバス幅対応フラグのマスク ---*/
|
||
//SCRのbit50に相当するが、SCRとSD_STATUSはMSBから送られてくることを考慮してある
|
||
#define SCR_DAT_BUS_WIDTH_4BIT 0x0400 /* SCR DAT Bus width supported 4bit */
|
||
|
||
/*--- 127bitCSD (CSD[0]~CSD[7])関連 ---*/
|
||
#define CSD_VDD_R_CURR_MIN 0x0038 /* "VDD_R_CURR_MIN" (for CSD[3]) */
|
||
#define CSD_VDD_R_CURR_MAX 0x0007 /* "VDD_R_CURR_MAX" (for CSD[3]) */
|
||
#define CSD_VDD_W_CURR_MIN 0xE000 /* "VDD_W_CURR_MIN" (for CSD[2]) */
|
||
#define CSD_VDD_W_CURR_MAX 0x1C00 /* "VDD_W_CURR_MAX" (for CSD[2]) */
|
||
|
||
#define CSD_READ_BL_LEN 0x0F00 /* "READ_BL_LEN" (for CSD[4])*/
|
||
#define CSD_WRITE_BL_LEN_BIT_25_24 0x0003 /* "WRITE_BL_LEN" (for CSD[1])*/
|
||
#define CSD_WRITE_BL_LEN_BIT_23_22 0xC000 /* "WRITE_BL_LEN" (for CSD[0]*/
|
||
#define CSD_READ_BL_PARTIAL 0x0080 /* "READ_BL_PARTIAL" (for CSD[4]) */
|
||
#define CSD_TRANSFER_RATE 0x0700 /* "Transfer rate unit" of "TRAN_SPEED" (for CSD[5]) */
|
||
#define CSD_TRAN_SPEED_100K 0x0000 /* 100Kbit/s (for CSD Transfer rate) */
|
||
#define CSD_TRAN_SPEED_1M 0x0001 /* 1Mbit/s (for CSD Transfer rate) */
|
||
#define CSD_TRAN_SPEED_10M 0x0002 /* 10Mbit/s (for CSD Transfer rate) */
|
||
#define CSD_TRAN_SPEED_100M 0x0003 /* 100Mbit/s (for CSD Transfer rate) */
|
||
#define CSD_TRAN_SPEED_OTHER 0x0004 /* Reserve (for CSD Transfer rate) */
|
||
|
||
#define CSD_C_SIZE_MULT 0x0380 /* RSP2 の bit[49:47] */
|
||
#define CSD_C_SIZE_BIT_73_72 0x0003 /* RSP3 の bit[73:72](C_SIZE) */
|
||
#define CSD_C_SIZE_BIT_71_62 0xFFC0 /* RSP3 の bit[71:62](C_SIZE) */
|
||
//SDHC(CSD format version2)の場合
|
||
#define CSD_C_SIZE_BIT_69_56 0x3FFF /* SD_CSD[3] */
|
||
#define CSD_C_SIZE_BIT_55_48 0xFF00 /* SD_CSD[2] */
|
||
|
||
#define CSD_STRUCT_BIT_127_126 0x00C0 /* SD_CSD[7] */
|
||
|
||
//#define VDD_R_CURR_MIN 0x0000 /* CSD max read current@VDD min */
|
||
//#define VDD_R_CURR_MAX 0x0007 /* CSD max read current@VDD max */
|
||
//#define VDD_W_CURR_MIN 0x0000 /* CSD max write current@VDD min */
|
||
//#define VDD_W_CURR_MAX 0x0007 /* CSD max write current@VDD max */
|
||
|
||
/*--- R1レスポンスの card status(32bit)に対するマスク ---*/
|
||
#define RSP_R1_STATUS_ERR 0xF9FF0008 /* R1(レスポンス)のカードステータスのチェック */
|
||
#define SDCARD_STATUS_OUT_OF_RANGE 0x80000000 /* Card Status OUT_OF_RANGE のチェック */
|
||
#define RSP_R1_CURRENT_STATE 0x1E00 /* CARD current state */
|
||
/*-------------------------------------------------------*/
|
||
|
||
/* レスポンスのRSP0 & RSP_R1_CURRENT_STATEを1ビット右シフトした値に対するフラグ */
|
||
#define CURRENT_STATE_DATA 0x0500 /* CARD current state data */
|
||
#define CURRENT_STATE_RCV 0x0600 /* CARD current state rcv */
|
||
|
||
/* カードステータス */
|
||
#define SD_MEMORY_CARD 0x00FF /* SD_CARD_TYPE SD memory card */
|
||
|
||
|
||
/*-------------------------------------
|
||
プロトタイプ宣言
|
||
-------------------------------------*/
|
||
void SD_Init(void); /* SD Cardインターフェース部をリセット&初期設定 */
|
||
void SD_EnableInfo(void); /* SD Card 挿抜 割り込みイネーブル・ディスエーブル */
|
||
u16 SD_Command(u16 ucCommand); /* SDカードコマンド送出 */
|
||
u16 SD_AppCommand(void); /* SDカード RCA = 1をセット後 CMD55 発行 */
|
||
u16 SD_AppOpCond(void); /* ACMD41 発行 busyでなくなるまで繰り返し */
|
||
u16 SD_SendOpCond(void); /* CMD1 発行 busyでなくなるまで繰り返し */
|
||
u16 SD_SendIfCond(void); /* CMD8 発行 (SDHCのみ反応してくる) */
|
||
u16 SD_SendRelativeAddr(void); /* CMD3 発行 正常終了時 RCA<-ResのRCA */
|
||
u16 SD_SelectCard(void); /* CMD7 発行 Command toggles acard between the Stand-by and Transfer states */
|
||
u16 SD_SetBlockLength(u32 ulBlockLength); /* ブロックレングス(1セクタの転送量)の設定 */
|
||
u16 SD_SendCID(void); /* card identification data の取得コマンド発行 */
|
||
u16 SD_SendCSD(void); /* card-specific data の取得コマンド発行 */
|
||
u16 SD_SendSCR(void); /* SD register の取得コマンド発行 */
|
||
u16 SD_SDStatus(void); /* SD STATUS の取得コマンド発行 */
|
||
u16 SD_SendStatus(void); /* SD status register の取得コマンド発行 */
|
||
u16 SD_MultiReadBlock(u32 ulOffset); /* マルチセクタリードコマンド発行 */
|
||
u16 SD_ClockDivSet(u16 usTranSpeed); /* カードの動作クロック設定 */
|
||
|
||
void SD_EnableClock( void); /* SDカードのクロック有効 */
|
||
void SD_DisableClock( void); /* SDカードのクロック無効(省電力) */
|
||
|
||
u16 SD_SelectBitWidth(s16 b4bit); /* ビット幅の選択 */
|
||
|
||
u16 MMCP_WriteBusWidth(s16 b4bit);
|
||
u16 MMCP_BusTest( BOOL readflag);
|
||
|
||
|
||
s16 SD_FPGA_irq(void); /* カード転送要求時のFPGAの制御 */
|
||
void SD_StopTransmission(void); /* カード転送終了をFPGAに通知する。 */
|
||
void SD_TransEndFPGA(void); /* カード転送の終了処理(割り込みマスクを戻す) */
|
||
u16 SD_CheckStatus(BOOL bRead); /* Normal response command カードステータスのチェック */
|
||
u16 SD_SwapByte(u16 *data); /* 上位byte、下位byteを入れ替える関数 */
|
||
|
||
void SD_EnableSeccnt( u32 ulSDCARD_SectorCount); /* SD_SECCNTレジスタ有効化&値設定 */
|
||
void SD_DisableSeccnt( void); /* SD_SECCNTレジスタ無効化 */
|
||
|
||
void SD_SetErr(u16 Error); /* エラーステータスを設定する */
|
||
void SD_ClrErr(u16 Error); /* エラーステータスをクリアする */
|
||
|
||
BOOL SD_CheckFPGAReg(u16 reg,u16 value); /* IPレジスタにフラグが立っているか判定 */
|
||
|
||
void SD_TransReadyFPGA(void); /* 転送処理準備FPGA設定 */
|
||
u16 SD_TransCommand(u16 ucCommand); /* 命令発行処理 */
|
||
|
||
u16 SD_MultiWriteBlock(u32 ulOffset); /* マルチセクタライトコマンド発行 */
|
||
u16 SD_SendNumWRSectors(void); /* ACMD22 書きこみ完了セクタ数取得コマンド発行 */
|
||
|
||
|
||
#endif /* __SD_CARD_IP_H__ */
|