mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
マイコンアクセス用PXIを改善。カメラモジュールタイプ取得PXIを追加。(製品技術部:検査工程対応)
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1307 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
0466cb01da
commit
7bc35270e1
@ -24,10 +24,9 @@
|
|||||||
#include "nvram.h"
|
#include "nvram.h"
|
||||||
#include <twl/ltdmain_begin.h>
|
#include <twl/ltdmain_begin.h>
|
||||||
#include <twl/mcu.h>
|
#include <twl/mcu.h>
|
||||||
|
#include <twl/camera.h>
|
||||||
//#include <c:/TWL_SDK/build/libraries/fatfs/ARM7.TWL/include/twl/rtfs.h>
|
#include <twl/camera/ARM7/i2c_sharp.h>
|
||||||
//#include <c:/TWL_SDK/build/libraries/fatfs/ARM7.TWL/include/twl/devices/sdmc/ARM7/sdmc.h>
|
#include <twl/camera/ARM7/i2c_micron.h>
|
||||||
|
|
||||||
|
|
||||||
typedef unsigned char byte; /* Don't change */
|
typedef unsigned char byte; /* Don't change */
|
||||||
typedef unsigned short word; /* Don't change */
|
typedef unsigned short word; /* Don't change */
|
||||||
@ -134,6 +133,7 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
case KAMI_ARM7_IO:
|
case KAMI_ARM7_IO:
|
||||||
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:
|
||||||
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);
|
||||||
@ -253,23 +253,23 @@ static void KamiThread(void *arg)
|
|||||||
{
|
{
|
||||||
BOOL is_read;
|
BOOL is_read;
|
||||||
u32 reg_no;
|
u32 reg_no;
|
||||||
void* buffer;
|
u32 write;
|
||||||
u32 value;
|
u32 read;
|
||||||
|
|
||||||
is_read = (BOOL)kamiWork.data[0];
|
is_read = (BOOL)kamiWork.data[0];
|
||||||
KAMI_UNPACK_U32(®_no, &kamiWork.data[1]);
|
KAMI_UNPACK_U32(®_no, &kamiWork.data[1]);
|
||||||
KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]);
|
KAMI_UNPACK_U32(&write, &kamiWork.data[5]);
|
||||||
KAMI_UNPACK_U32(&value, &kamiWork.data[9]);
|
|
||||||
|
|
||||||
if (is_read)
|
if (is_read)
|
||||||
{
|
{
|
||||||
*(u8 *)buffer = MCU_ReadRegister( (u8)reg_no );
|
read = MCU_ReadRegister( (u8)reg_no );
|
||||||
|
KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u8), (u8*)&read );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MCU_WriteRegister( (u8)reg_no, (u8)value );
|
MCU_WriteRegister( (u8)reg_no, (u8)write );
|
||||||
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -317,6 +317,37 @@ static void KamiThread(void *arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KAMI_GET_CAMERA_MODULE_TYPE:
|
||||||
|
{
|
||||||
|
CameraModuleTypes types;
|
||||||
|
if (CAMERAi_IsSharpModule(CAMERA_SELECT_IN))
|
||||||
|
{
|
||||||
|
types.in = CAMERA_MODULE_TYPE_SHARP;
|
||||||
|
}
|
||||||
|
else if (CAMERAi_IsMicronModule(CAMERA_SELECT_IN))
|
||||||
|
{
|
||||||
|
types.in = CAMERA_MODULE_TYPE_MICRON;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
types.in = CAMERA_MODULE_TYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
if (CAMERAi_IsSharpModule(CAMERA_SELECT_OUT))
|
||||||
|
{
|
||||||
|
types.out = CAMERA_MODULE_TYPE_SHARP;
|
||||||
|
}
|
||||||
|
else if (CAMERAi_IsMicronModule(CAMERA_SELECT_OUT))
|
||||||
|
{
|
||||||
|
types.out = CAMERA_MODULE_TYPE_MICRON;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
types.out = CAMERA_MODULE_TYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(CameraModuleTypes), (u8*)&types);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,9 +65,11 @@ KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
|
|||||||
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read);
|
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read);
|
||||||
KAMIResult kamiCDC_GoDsMode( void );
|
KAMIResult kamiCDC_GoDsMode( void );
|
||||||
KAMIResult kamiClearNandErrorLog( void );
|
KAMIResult kamiClearNandErrorLog( void );
|
||||||
|
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg );
|
||||||
|
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes );
|
||||||
|
|
||||||
// (<28>d—v)
|
// (<28>d—v)
|
||||||
// ARM7が読み書きするためリード後はInvalidate、ライト前はフラッシュしてください。
|
// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。
|
||||||
//
|
//
|
||||||
static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count)
|
static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -254,12 +254,18 @@ KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read)
|
|||||||
|
|
||||||
kamiWork.callback = NULL;
|
kamiWork.callback = NULL;
|
||||||
kamiWork.arg = 0;
|
kamiWork.arg = 0;
|
||||||
kamiWork.data = 0;
|
if (is_read)
|
||||||
|
{
|
||||||
|
kamiWork.data = (u8*)buffer;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kamiWork.data = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// データ作成
|
// データ作成
|
||||||
KAMI_PACK_U32(&data[0], ®_no);
|
KAMI_PACK_U32(&data[0], ®_no);
|
||||||
KAMI_PACK_U32(&data[4], &buffer);
|
KAMI_PACK_U32(&data[4], &value);
|
||||||
KAMI_PACK_U32(&data[8], &value);
|
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_MCU_IO, 12, (u8)is_read))
|
if (KamiSendPxiCommand(KAMI_MCU_IO, 12, (u8)is_read))
|
||||||
{
|
{
|
||||||
@ -400,6 +406,83 @@ KAMIResult kamiClearNandErrorLog( void )
|
|||||||
return KAMI_RESULT_SEND_ERROR;
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: kamiGetCameraModuleTypesAsync
|
||||||
|
|
||||||
|
Description: カメラモジュールタイプを取得します(非同期版)
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg )
|
||||||
|
{
|
||||||
|
OSIntrMode enabled;
|
||||||
|
|
||||||
|
if (pTypes == NULL)
|
||||||
|
{
|
||||||
|
return KAMI_RESULT_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
enabled = OS_DisableInterrupts();
|
||||||
|
if (kamiWork.lock)
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
return KAMI_RESULT_BUSY;
|
||||||
|
}
|
||||||
|
kamiWork.lock = TRUE;
|
||||||
|
kamiWork.callback = callback;
|
||||||
|
kamiWork.arg = arg;
|
||||||
|
kamiWork.data = (u8*)pTypes;
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
|
||||||
|
if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0))
|
||||||
|
{
|
||||||
|
return KAMI_RESULT_SUCCESS;
|
||||||
|
}
|
||||||
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: kamiGetCameraModuleTypes
|
||||||
|
|
||||||
|
Description: カメラモジュールタイプを取得します(同期版)
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes )
|
||||||
|
{
|
||||||
|
OSIntrMode enabled;
|
||||||
|
|
||||||
|
if (pTypes == NULL)
|
||||||
|
{
|
||||||
|
return KAMI_RESULT_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
enabled = OS_DisableInterrupts();
|
||||||
|
if (kamiWork.lock)
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
return KAMI_RESULT_BUSY;
|
||||||
|
}
|
||||||
|
kamiWork.lock = TRUE;
|
||||||
|
kamiWork.callback = NULL;
|
||||||
|
kamiWork.arg = 0;
|
||||||
|
kamiWork.data = (u8*)pTypes;
|
||||||
|
(void)OS_RestoreInterrupts(enabled);
|
||||||
|
|
||||||
|
if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0))
|
||||||
|
{
|
||||||
|
KamiWaitBusy();
|
||||||
|
return (KAMIResult)kamiWork.result;
|
||||||
|
}
|
||||||
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
PXI関連
|
PXI関連
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -57,6 +57,7 @@ typedef enum KAMIPxiResult
|
|||||||
}
|
}
|
||||||
KAMIPxiResult;
|
KAMIPxiResult;
|
||||||
|
|
||||||
|
|
||||||
typedef enum KamiCommand
|
typedef enum KamiCommand
|
||||||
{
|
{
|
||||||
KAMI_TEST_COMMAND,
|
KAMI_TEST_COMMAND,
|
||||||
@ -66,10 +67,28 @@ typedef enum KamiCommand
|
|||||||
KAMI_MCU_IO,
|
KAMI_MCU_IO,
|
||||||
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
|
||||||
}
|
}
|
||||||
KamiCommand;
|
KamiCommand;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum CameraModuleType
|
||||||
|
{
|
||||||
|
CAMERA_MODULE_TYPE_UNKNOWN,
|
||||||
|
CAMERA_MODULE_TYPE_SHARP,
|
||||||
|
CAMERA_MODULE_TYPE_MICRON
|
||||||
|
}
|
||||||
|
CameraModuleType;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct CameraModuleTypes
|
||||||
|
{
|
||||||
|
CameraModuleType in;
|
||||||
|
CameraModuleType out;
|
||||||
|
}
|
||||||
|
CameraModuleTypes;
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user