mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(NandInitializerRed) 製品技術部からの要請により NANDのCIDを取得する関数を追加
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2003 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f03f62cb19
commit
a0c0229379
@ -57,7 +57,10 @@ LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \
|
|||||||
$(TWL_IPL_RED_ROOT)/include \
|
$(TWL_IPL_RED_ROOT)/include \
|
||||||
../common/include \
|
../common/include \
|
||||||
$(ROOT)/build/libraries/init/common/include \
|
$(ROOT)/build/libraries/init/common/include \
|
||||||
../../common/ARM7/include
|
../../common/ARM7/include \
|
||||||
|
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include \
|
||||||
|
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/fatfs \
|
||||||
|
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7
|
||||||
|
|
||||||
SRCDIR += ../../common/ARM7/src
|
SRCDIR += ../../common/ARM7/src
|
||||||
|
|
||||||
|
|||||||
@ -27,14 +27,13 @@
|
|||||||
#include <twl/camera.h>
|
#include <twl/camera.h>
|
||||||
#include <twl/camera/ARM7/i2c_sharp.h>
|
#include <twl/camera/ARM7/i2c_sharp.h>
|
||||||
#include <twl/camera/ARM7/i2c_micron.h>
|
#include <twl/camera/ARM7/i2c_micron.h>
|
||||||
|
#include <twl/sdmc.h>
|
||||||
|
|
||||||
typedef unsigned char byte; /* Don't change */
|
|
||||||
typedef unsigned short word; /* Don't change */
|
|
||||||
typedef unsigned long dword; /* Don't change */
|
|
||||||
#define BOOLEAN int
|
#define BOOLEAN int
|
||||||
|
|
||||||
extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading);
|
extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading);
|
||||||
extern BOOL sdmcFormatNandLog( BOOL verify_flag);
|
extern BOOL sdmcFormatNandLog( BOOL verify_flag);
|
||||||
|
extern void sdmcGetCID( SDMC_PORT_NO port, u32* dest);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
’è<EFBFBD>”’è‹`
|
’è<EFBFBD>”’è‹`
|
||||||
@ -134,6 +133,7 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
case KAMI_CDC_GO_DSMODE:
|
case KAMI_CDC_GO_DSMODE:
|
||||||
case KAMI_CLEAR_NAND_ERRORLOG:
|
case KAMI_CLEAR_NAND_ERRORLOG:
|
||||||
case KAMI_GET_CAMERA_MODULE_TYPE:
|
case KAMI_GET_CAMERA_MODULE_TYPE:
|
||||||
|
case KAMI_GET_NAND_CID:
|
||||||
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
||||||
{
|
{
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR);
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR);
|
||||||
@ -340,6 +340,14 @@ static void KamiThread(void *arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KAMI_GET_NAND_CID:
|
||||||
|
{
|
||||||
|
u8 buffer[16];
|
||||||
|
sdmcGetCID( SDMC_PORT_NAND, (u32*)buffer);
|
||||||
|
KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(buffer), (u8*)buffer );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,6 +68,7 @@ KAMIResult kamiCDC_GoDsMode( void );
|
|||||||
KAMIResult kamiClearNandErrorLog( void );
|
KAMIResult kamiClearNandErrorLog( void );
|
||||||
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg );
|
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg );
|
||||||
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes );
|
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes );
|
||||||
|
KAMIResult kamiGetNandCID( void* buffer );
|
||||||
|
|
||||||
// (重要)
|
// (重要)
|
||||||
// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。
|
// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。
|
||||||
|
|||||||
@ -173,6 +173,8 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
|
|||||||
u8 data[12];
|
u8 data[12];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
MI_CpuClear8( data, sizeof(data));
|
||||||
|
|
||||||
// ロック
|
// ロック
|
||||||
enabled = OS_DisableInterrupts();
|
enabled = OS_DisableInterrupts();
|
||||||
if (kamiWork.lock)
|
if (kamiWork.lock)
|
||||||
@ -192,7 +194,7 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
|
|||||||
KAMI_PACK_U32(&data[4], &buffer);
|
KAMI_PACK_U32(&data[4], &buffer);
|
||||||
KAMI_PACK_U32(&data[8], &count);
|
KAMI_PACK_U32(&data[8], &count);
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_NAND_IO, 12, (u8)is_read))
|
if (KamiSendPxiCommand(KAMI_NAND_IO, 13, (u8)is_read))
|
||||||
{
|
{
|
||||||
for (i = 0; i < 12; i+=3)
|
for (i = 0; i < 12; i+=3)
|
||||||
{
|
{
|
||||||
@ -217,9 +219,11 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
|
|||||||
KAMIResult kamiMcuWriteFirm(void* buffer )
|
KAMIResult kamiMcuWriteFirm(void* buffer )
|
||||||
{
|
{
|
||||||
OSIntrMode enabled;
|
OSIntrMode enabled;
|
||||||
u8 data[4];
|
u8 data[4+2]; // 3の倍数
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
MI_CpuClear8( data, sizeof(data));
|
||||||
|
|
||||||
// ロック
|
// ロック
|
||||||
enabled = OS_DisableInterrupts();
|
enabled = OS_DisableInterrupts();
|
||||||
if (kamiWork.lock)
|
if (kamiWork.lock)
|
||||||
@ -236,7 +240,7 @@ KAMIResult kamiMcuWriteFirm(void* buffer )
|
|||||||
// データ作成
|
// データ作成
|
||||||
KAMI_PACK_U32(&data[0], &buffer);
|
KAMI_PACK_U32(&data[0], &buffer);
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_MCU_WRITE_FIRM, 4, (u8)0))
|
if (KamiSendPxiCommand(KAMI_MCU_WRITE_FIRM, 5, (u8)0))
|
||||||
{
|
{
|
||||||
for (i = 0; i < 4; i+=3)
|
for (i = 0; i < 4; i+=3)
|
||||||
{
|
{
|
||||||
@ -265,6 +269,8 @@ KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read)
|
|||||||
u8 data[12];
|
u8 data[12];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
MI_CpuClear8( data, sizeof(data));
|
||||||
|
|
||||||
// ロック
|
// ロック
|
||||||
enabled = OS_DisableInterrupts();
|
enabled = OS_DisableInterrupts();
|
||||||
if (kamiWork.lock)
|
if (kamiWork.lock)
|
||||||
@ -290,7 +296,7 @@ KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read)
|
|||||||
KAMI_PACK_U32(&data[0], ®_no);
|
KAMI_PACK_U32(&data[0], ®_no);
|
||||||
KAMI_PACK_U32(&data[4], &value);
|
KAMI_PACK_U32(&data[4], &value);
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_MCU_IO, 12, (u8)is_read))
|
if (KamiSendPxiCommand(KAMI_MCU_IO, 13, (u8)is_read))
|
||||||
{
|
{
|
||||||
for (i = 0; i < 12; i+=3)
|
for (i = 0; i < 12; i+=3)
|
||||||
{
|
{
|
||||||
@ -319,6 +325,8 @@ KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read)
|
|||||||
u8 data[12];
|
u8 data[12];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
MI_CpuClear8( data, sizeof(data));
|
||||||
|
|
||||||
// ロック
|
// ロック
|
||||||
enabled = OS_DisableInterrupts();
|
enabled = OS_DisableInterrupts();
|
||||||
if (kamiWork.lock)
|
if (kamiWork.lock)
|
||||||
@ -344,7 +352,7 @@ KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read)
|
|||||||
KAMI_PACK_U32(&data[0], &addr);
|
KAMI_PACK_U32(&data[0], &addr);
|
||||||
KAMI_PACK_U32(&data[4], &value);
|
KAMI_PACK_U32(&data[4], &value);
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_ARM7_IO, 12, (u8)is_read))
|
if (KamiSendPxiCommand(KAMI_ARM7_IO, 13, (u8)is_read))
|
||||||
{
|
{
|
||||||
for (i = 0; i < 12; i+=3)
|
for (i = 0; i < 12; i+=3)
|
||||||
{
|
{
|
||||||
@ -506,6 +514,46 @@ KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes )
|
|||||||
return KAMI_RESULT_SEND_ERROR;
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: kamiGetNandCID
|
||||||
|
|
||||||
|
Description: NANDのCIDを取得します。
|
||||||
|
|
||||||
|
Arguments: buffer : 16バイトバッファ
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
KAMIResult kamiGetNandCID(void* buffer )
|
||||||
|
{
|
||||||
|
OSIntrMode enabled;
|
||||||
|
u8 data[4+2]; // 3の倍数
|
||||||
|
|
||||||
|
MI_CpuClear8( data, sizeof(data));
|
||||||
|
|
||||||
|
// ロック
|
||||||
|
enabled = OS_DisableInterrupts();
|
||||||
|
if (kamiWork.lock)
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
return KAMI_RESULT_BUSY;
|
||||||
|
}
|
||||||
|
kamiWork.lock = TRUE;
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
|
||||||
|
kamiWork.callback = NULL;
|
||||||
|
kamiWork.arg = 0;
|
||||||
|
kamiWork.data = (u8*)buffer;
|
||||||
|
|
||||||
|
if (KamiSendPxiCommand(KAMI_GET_NAND_CID, 0, 0))
|
||||||
|
{
|
||||||
|
KamiWaitBusy();
|
||||||
|
return (KAMIResult)kamiWork.result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
PXI関連
|
PXI関連
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -68,7 +68,8 @@ typedef enum KamiCommand
|
|||||||
KAMI_ARM7_IO,
|
KAMI_ARM7_IO,
|
||||||
KAMI_CDC_GO_DSMODE,
|
KAMI_CDC_GO_DSMODE,
|
||||||
KAMI_CLEAR_NAND_ERRORLOG,
|
KAMI_CLEAR_NAND_ERRORLOG,
|
||||||
KAMI_GET_CAMERA_MODULE_TYPE
|
KAMI_GET_CAMERA_MODULE_TYPE,
|
||||||
|
KAMI_GET_NAND_CID
|
||||||
}
|
}
|
||||||
KamiCommand;
|
KamiCommand;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user