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エラー割り込み処理 */
|
static void SYSFPGA_irq(void); /* SYSFPGAエラー割り込み処理 */
|
||||||
|
|
||||||
/*ポート1は無線固定なのでポート選択関数は公開しない*/
|
/*ポート1は無線固定なのでポート選択関数は公開しない*/
|
||||||
static u16 i_sdmcSelectedNo(void); /* カードポートの選択 */
|
//u16 sdmcSelectedNo(void); /* カードポートの選択 */
|
||||||
static u16 i_sdmcSelect(u16 select); /* 現在のカードポート番号のチェック */
|
//u16 sdmcSelect(u16 select); /* 現在のカードポート番号のチェック */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -875,7 +875,14 @@ PRINTDEBUG( "%d\n", __LINE__);
|
|||||||
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスをクリア */
|
SDCARD_ErrStatus = SDMC_NORMAL; /* エラーステータスをクリア */
|
||||||
SDCARD_OutFlag = TRUE; /* 排出フラグをセット */
|
SDCARD_OutFlag = TRUE; /* 排出フラグをセット */
|
||||||
}else{
|
}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; /* 排出フラグをリセット */
|
SDCARD_OutFlag = FALSE; /* 排出フラグをリセット */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2334,7 +2341,7 @@ static void SDCARD_Restore_port1(void)
|
|||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: i_sdmcSelectedNo
|
Name: sdmcSelectedNo
|
||||||
|
|
||||||
Description: get selected port number.
|
Description: get selected port number.
|
||||||
選択されているポート番号を取得する
|
選択されているポート番号を取得する
|
||||||
@ -2344,7 +2351,7 @@ static void SDCARD_Restore_port1(void)
|
|||||||
Returns: [15:8]port numbers which supported(サポートされているポート数)
|
Returns: [15:8]port numbers which supported(サポートされているポート数)
|
||||||
[7:0]port number which selected now(選択されているポート番号)
|
[7:0]port number which selected now(選択されているポート番号)
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static u16 i_sdmcSelectedNo(void)
|
u16 sdmcSelectedNo(void)
|
||||||
{
|
{
|
||||||
u16 i_sdmcSelect_Value;
|
u16 i_sdmcSelect_Value;
|
||||||
|
|
||||||
@ -2354,7 +2361,7 @@ static u16 i_sdmcSelectedNo(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: i_sdmcSelect
|
Name: sdmcSelect
|
||||||
|
|
||||||
Description: select port.
|
Description: select port.
|
||||||
ポートを選択する
|
ポートを選択する
|
||||||
@ -2364,7 +2371,7 @@ static u16 i_sdmcSelectedNo(void)
|
|||||||
Returns: 0 : success
|
Returns: 0 : success
|
||||||
>0 : error
|
>0 : error
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static u16 i_sdmcSelect(u16 select)
|
SDMC_ERR_CODE sdmcSelect(u16 select)
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include <twl_sp.h>
|
#include <twl_sp.h>
|
||||||
#include <twl/fatfs/ARM7/rtfs.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();
|
// rtfs_init();
|
||||||
|
|
||||||
/*SDドライバ初期化*/
|
/*SDドライバ初期化*/
|
||||||
result = sdmcInit( NULL, NULL);
|
result = sdmcInit( SDMC_USE_DMA_2, NULL, NULL);
|
||||||
if( result != 0) {
|
if( result != 0) {
|
||||||
PRINTDEBUG( "sdmcInit : failed\n");
|
PRINTDEBUG( "sdmcInit : failed\n");
|
||||||
while( 1) {};
|
while( 1) {};
|
||||||
@ -90,38 +90,96 @@ void TwlSpMain(void)
|
|||||||
PRINTDEBUG( "sdmcInit : success\n");
|
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);
|
result = sdmcReadFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||||
if( result != 0) {
|
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へブロックライト*/
|
/*SDへブロックライト*/
|
||||||
MI_CpuFill8( BlockBuf2, 0xA5, 512);
|
/* MI_CpuFill8( BlockBuf2, 0xA5, 512);
|
||||||
result = sdmcWriteFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
result = sdmcWriteFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||||
if( result != 0) {
|
if( result != 0) {
|
||||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||||
}
|
}
|
||||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||||
|
*/
|
||||||
|
|
||||||
/*SDからブロックリード*/
|
/*SDからブロックリード*/
|
||||||
result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
/* result = sdmcReadFifo( BlockBuf2, 1, 0, NULL, &SdResult);
|
||||||
if( result != 0) {
|
if( result != 0) {
|
||||||
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
PRINTDEBUG( "sdmcReadFifo failed.\n");
|
||||||
}
|
}
|
||||||
PRINTDEBUG( "sdmcReadFifo success.\n");
|
PRINTDEBUG( "sdmcReadFifo success.\n");
|
||||||
|
*/
|
||||||
|
|
||||||
/*SDへブロックライト*/
|
/*SDへブロックライト*/
|
||||||
result = sdmcWriteFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
/* result = sdmcWriteFifo( BlockBuf, 1, 0, NULL, &SdResult);
|
||||||
if( result != 0) {
|
if( result != 0) {
|
||||||
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
PRINTDEBUG( "sdmcWriteFifo failed.\n");
|
||||||
}
|
}
|
||||||
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
PRINTDEBUG( "sdmcWriteFifo success.\n");
|
||||||
|
*/
|
||||||
/*デバイスドライバの登録*/
|
/*デバイスドライバの登録*/
|
||||||
/* if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
/* if( sdmcRtfsAttach( 4) == FALSE) { //sdmcをEドライブにする
|
||||||
PRINTDEBUG( "sdmcRtfsAttach failed.\n");
|
PRINTDEBUG( "sdmcRtfsAttach failed.\n");
|
||||||
|
|||||||
@ -11,6 +11,15 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************
|
||||||
|
ポート番号
|
||||||
|
*********************************************/
|
||||||
|
typedef enum {
|
||||||
|
SDMC_PORT_CARD = 0x400,
|
||||||
|
SDMC_PORT_NAND = 0x401
|
||||||
|
}SDMC_PORT_NO;
|
||||||
|
|
||||||
|
|
||||||
/*********************************************
|
/*********************************************
|
||||||
DMA番号
|
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); /* テスト用カードライト */
|
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
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user