twl_wrapsdk/build/libraries/camera/ARM7/camera_i2c.c
yutaka f9dffc8721 support complex modules for camera
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@265 4ee2a332-4b2b-5046-8439-1ba90f034370
2007-08-31 09:53:38 +00:00

222 lines
7.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: TwlSDK - libraties - camera
File: camera_i2c.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <twl/camera/ARM7/i2c_micron.h>
#include <twl/camera/ARM7/i2c_sharp.h>
static CameraSelect cameraSharp = CAMERA_SELECT_NONE;
#define GET_MICRON(camera) (CameraSelect)(camera & ~cameraSharp)
#define GET_SHARP(camera) (CameraSelect)(camera & cameraSharp)
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CInit
Description: initialize CAMERA
Arguments: camera : one of CameraSelect
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CInit(CameraSelect camera)
{
BOOL ri = TRUE;
BOOL ro = TRUE;
(void)I2C_Lock();
if (camera & CAMERA_SELECT_IN)
{
if (FALSE == (ri = CAMERAi_M_I2CInit(CAMERA_SELECT_IN)))
{
cameraSharp |= CAMERA_SELECT_IN;
if (FALSE == (ri = CAMERAi_S_I2CInit(CAMERA_SELECT_IN)))
{
cameraSharp &= ~CAMERA_SELECT_IN;
}
}
}
if (camera & CAMERA_SELECT_OUT)
{
if (FALSE == (ro = CAMERAi_M_I2CInit(CAMERA_SELECT_OUT)))
{
cameraSharp |= CAMERA_SELECT_OUT;
if (FALSE == (ro = CAMERAi_S_I2CInit(CAMERA_SELECT_OUT)))
{
cameraSharp &= ~CAMERA_SELECT_OUT;
}
}
}
(void)I2C_Unlock();
return ri & ro;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CStandby
Description: goto standby
Arguments: camera : one of CameraSelect (IN/OUT/BOTH) to goto standby
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CStandby(CameraSelect camera)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CStandby(GET_MICRON(camera)) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CStandby(GET_SHARP(camera)) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CResume
Description: resume from standby
Arguments: camera : one of CameraSelect (IN/OUT) to resume
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResume(CameraSelect camera)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CResume(GET_MICRON(camera)) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CResume(GET_SHARP(camera)) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CResumeBoth
Description: resume both CAMERAs, but only one will output
Arguments: camera : one of CameraSelect (IN/OUT) to output
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResumeBoth(CameraSelect camera)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CResumeBoth(GET_MICRON(camera)) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CResumeBoth(GET_SHARP(camera)) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CResize
Description: resize CAMERA
Arguments: camera : one of CameraSelect
width : width of output image
height : height of output image
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResize(CameraSelect camera, u16 width, u16 height)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CResize(GET_MICRON(camera), width, height) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CResize(GET_SHARP(camera), width, height) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CFrameRate
Description: set CAMERA frame rate
Arguments: camera : one of CameraSelect
rate : fps (0: auto)
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CFrameRate(CameraSelect camera, int rate)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CFrameRate(GET_MICRON(camera), rate) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CFrameRate(GET_SHARP(camera), rate) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CEffect
Description: set CAMERA effect
Arguments: camera : one of CameraSelect
effect : one of CameraEffect
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CEffect(CameraSelect camera, CameraEffect effect)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CEffect(GET_MICRON(camera), effect) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CEffect(GET_SHARP(camera), effect) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
/*---------------------------------------------------------------------------*
Name: CAMERA_I2CFlip
Description: set CAMERA flip/mirror
Arguments: camera : one of CameraSelect
flip : one of CameraFlip
Returns: TRUE if success
*---------------------------------------------------------------------------*/
BOOL CAMERA_I2CFlip(CameraSelect camera, CameraFlip flip)
{
BOOL rm, rs;
(void)I2C_Lock();
rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
CAMERAi_M_I2CFlip(GET_MICRON(camera), flip) : TRUE;
rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
CAMERAi_S_I2CFlip(GET_SHARP(camera), flip) : TRUE;
(void)I2C_Unlock();
return rm & rs;
}
#if 0
<20><><EFBFBD>̑<EFBFBD><CC91><EFBFBD>API<50><49><EFBFBD><EFBFBD>
<20>z<EFBFBD><7A><EFBFBD>C<EFBFBD>g<EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>A<EFBFBD>I<EFBFBD><49>
<20>t<EFBFBD>H<EFBFBD>[<5B>}<7D>b<EFBFBD>g(YUYV<59>̏<EFBFBD><CC8F>ԁARGB444<34><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)
#endif