mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
SDおよびNANDの2スロットに対応
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@104 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
5d2e961a86
commit
538057553a
@ -123,8 +123,8 @@ static void SDCARD_ATC0_irq(void); /* ATC0
|
||||
static void SYSFPGA_irq(void); /* SYSFPGAエラー割り込み処理 */
|
||||
|
||||
/*ポート1は無線固定なのでポート選択関数は公開しない*/
|
||||
static u16 i_sdmcSelectedNo(void); /* カードポートの選択 */
|
||||
static u16 i_sdmcSelect(u16 select); /* 現在のカードポート番号のチェック */
|
||||
//u16 sdmcSelectedNo(void); /* カードポートの選択 */
|
||||
//u16 sdmcSelect(u16 select); /* 現在のカードポート番号のチェック */
|
||||
|
||||
|
||||
|
||||
@ -875,7 +875,14 @@ PRINTDEBUG( "%d\n", __LINE__);
|
||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスをクリア */
|
||||
SDCARD_OutFlag = TRUE; /* 排出フラグをセット */
|
||||
}else{
|
||||
SDCARD_ErrStatus = SDCARD_Layer_Init();
|
||||
if( SD_CheckFPGAReg( SD_INFO1, SD_INFO1_DETECT)) {
|
||||
sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||
SDCARD_ErrStatus = SDCARD_Layer_Init();
|
||||
}
|
||||
if( SD_CheckFPGAReg( EXT_CD, EXT_CD_PORT1_DETECT)) {
|
||||
sdmcSelect( (u16)SDMC_PORT_NAND);
|
||||
SDCARD_ErrStatus = SDCARD_Layer_Init();
|
||||
}
|
||||
SDCARD_OutFlag = FALSE; /* 排出フラグをリセット */
|
||||
}
|
||||
|
||||
@ -2334,7 +2341,7 @@ static void SDCARD_Restore_port1(void)
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_sdmcSelectedNo
|
||||
Name: sdmcSelectedNo
|
||||
|
||||
Description: get selected port number.
|
||||
選択されているポート番号を取得する
|
||||
@ -2344,7 +2351,7 @@ static void SDCARD_Restore_port1(void)
|
||||
Returns: [15:8]port numbers which supported(サポートされているポート数)
|
||||
[7:0]port number which selected now(選択されているポート番号)
|
||||
*---------------------------------------------------------------------------*/
|
||||
static u16 i_sdmcSelectedNo(void)
|
||||
u16 sdmcSelectedNo(void)
|
||||
{
|
||||
u16 i_sdmcSelect_Value;
|
||||
|
||||
@ -2354,7 +2361,7 @@ static u16 i_sdmcSelectedNo(void)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: i_sdmcSelect
|
||||
Name: sdmcSelect
|
||||
|
||||
Description: select port.
|
||||
ポートを選択する
|
||||
@ -2364,7 +2371,7 @@ static u16 i_sdmcSelectedNo(void)
|
||||
Returns: 0 : success
|
||||
>0 : error
|
||||
*---------------------------------------------------------------------------*/
|
||||
static u16 i_sdmcSelect(u16 select)
|
||||
SDMC_ERR_CODE sdmcSelect(u16 select)
|
||||
{
|
||||
union
|
||||
{
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
#include <twl_sp.h>
|
||||
#include <twl/fatfs/ARM7/rtfs.h>
|
||||
#include <twl/devices/sdmc/ARM7/sdmc.h>
|
||||
#include <twl/devices/rom_sdmc/ARM7/sdmc.h>
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
定数定義
|
||||
@ -82,7 +82,7 @@ void TwlSpMain(void)
|
||||
// rtfs_init();
|
||||
|
||||
/*SDドライバ初期化*/
|
||||
result = sdmcInit( NULL, NULL);
|
||||
result = sdmcInit( SDMC_USE_DMA_2, NULL, NULL);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcInit : failed\n");
|
||||
while( 1) {};
|
||||
@ -90,38 +90,96 @@ void TwlSpMain(void)
|
||||
PRINTDEBUG( "sdmcInit : success\n");
|
||||
}
|
||||
|
||||
/*SDからブロックリード*/
|
||||
/*--- SDからブロックリード ---*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
/*----------------------------*/
|
||||
|
||||
/*NANDからブロックリード*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_NAND);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
|
||||
/*--- SDからブロックリード ---*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_CARD);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
/*NANDからブロックリード*/
|
||||
result = sdmcSelect( (u16)SDMC_PORT_NAND);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcSelect failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcSelect success.\n");
|
||||
}
|
||||
|
||||
result = sdmcReadFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}else{
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
}
|
||||
/*----------------------------*/
|
||||
|
||||
|
||||
/*SDへブロックライト*/
|
||||
MI_CpuFill8( BlockBuf2, 0xA5, 512);
|
||||
/* MI_CpuFill8( BlockBuf2, 0xA5, 512);
|
||||
result = sdmcWriteFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||
|
||||
*/
|
||||
|
||||
/*SDからブロックリード*/
|
||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
/* result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||
|
||||
*/
|
||||
|
||||
/*SDへブロックライト*/
|
||||
result = sdmcWriteFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
/* result = sdmcWriteFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||
if( result != 0) {
|
||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||
}
|
||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||
|
||||
*/
|
||||
/*デバイスドライバの登録*/
|
||||
/* if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
||||
PRINTDEBUG( "sdmcRtfsAttach failed.\n");
|
||||
|
||||
@ -11,6 +11,15 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*********************************************
|
||||
ポート番号
|
||||
*********************************************/
|
||||
typedef enum {
|
||||
SDMC_PORT_CARD = 0x400,
|
||||
SDMC_PORT_NAND = 0x401
|
||||
}SDMC_PORT_NO;
|
||||
|
||||
|
||||
/*********************************************
|
||||
DMA番号
|
||||
*********************************************/
|
||||
@ -111,6 +120,10 @@ SDMC_ERR_CODE sdmcWriteFifo(void* buf,u32 bufsize,u32 offset,void(*func)(void
|
||||
/*ライトする*/
|
||||
SDMC_ERR_CODE sdmcWrite(void* buf,u32 bufsize,u32 offset,void(*func)(void),SdmcResultInfo *info); /* テスト用カードライト */
|
||||
|
||||
/*ポート選択*/
|
||||
u16 sdmcSelectedNo(void);
|
||||
SDMC_ERR_CODE sdmcSelect(u16 select);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user