mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
X3以降のマイコンへ対応。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@327 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
5c26b23b71
commit
772b56225b
@ -42,6 +42,13 @@ TWL_MEMSIZE ?= 8M
|
|||||||
TWL_CODEGEN ?= ARM
|
TWL_CODEGEN ?= ARM
|
||||||
TWL_PROC ?= ARM9
|
TWL_PROC ?= ARM9
|
||||||
|
|
||||||
|
#
|
||||||
|
# TS Board Version
|
||||||
|
# TWL_TS_VERSION = [200/300/400]
|
||||||
|
#
|
||||||
|
TWL_TS_VERSION ?= 400
|
||||||
|
TS_VERSION ?= $(if $(TWL_TS_VERSION),_TS$(TWL_TS_VERSION))
|
||||||
|
|
||||||
# replace NitroSDK
|
# replace NitroSDK
|
||||||
NITRO_PLATFORM = TS
|
NITRO_PLATFORM = TS
|
||||||
NITRO_MEMSIZE = $(TWL_MEMSIZE)
|
NITRO_MEMSIZE = $(TWL_MEMSIZE)
|
||||||
|
|||||||
@ -32,7 +32,8 @@ SUBDIRS += \
|
|||||||
dsp \
|
dsp \
|
||||||
spi \
|
spi \
|
||||||
el \
|
el \
|
||||||
mcu \
|
|
||||||
|
# mcu \
|
||||||
|
|
||||||
endif # TWL_PLATFORM != DSTEG
|
endif # TWL_PLATFORM != DSTEG
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,10 @@
|
|||||||
#define TWL_MCU_H_
|
#define TWL_MCU_H_
|
||||||
|
|
||||||
#ifdef SDK_ARM7
|
#ifdef SDK_ARM7
|
||||||
#include <twl/mcu/ARM7/mcu.h>
|
#include <twl/mcu/ARM7/mcu_reg.h>
|
||||||
|
#include <twl/mcu/ARM7/i2c.h>
|
||||||
|
#include <twl/mcu/ARM7/control.h>
|
||||||
|
#include <twl/mcu/ARM7/intr.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TWL_MCU_H_ */
|
/* TWL_MCU_H_ */
|
||||||
|
|||||||
652
include/twl/mcu/ARM7/control.h
Normal file
652
include/twl/mcu/ARM7/control.h
Normal file
@ -0,0 +1,652 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK - mcu - include
|
||||||
|
File: control.h
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Date:: 2008-03-06#$
|
||||||
|
$Rev: 4551 $
|
||||||
|
$Author: yutaka $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef TWL_MCU_CONTROL_H_
|
||||||
|
#define TWL_MCU_CONTROL_H_
|
||||||
|
|
||||||
|
#include <twl/mcu/ARM7/mcu_reg.h>
|
||||||
|
#include <twl/mcu/ARM7/i2c.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
MCUは、SDK_TS_VERSIONによらず 300 以降に対応します。
|
||||||
|
SDK_TS_VERSION <= 200 の場合、以下のAPIに限り 200 互換となります。
|
||||||
|
Supported: GetVersion, GetRevision, GetFreeRegister, SetFreeRegister
|
||||||
|
*/
|
||||||
|
#if SDK_TS_VERSION <= 200
|
||||||
|
#define MCU_OLD_REG_TEMP_ADDR 0x18
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
その他
|
||||||
|
*/
|
||||||
|
#define MCU_VERSION_MIN (2 << MCU_REG_VER_INFO_VERSION_SHIFT)
|
||||||
|
|
||||||
|
#define MCU_BL_BRIGHTNESS_MAX 4
|
||||||
|
#define MCU_VOLUME_MAX 31
|
||||||
|
#define MCU_FREE_REG_NUMBER_MAX (MCU_REG_TEMP_LAST_ADDR - MCU_REG_TEMP_ADDR)
|
||||||
|
|
||||||
|
/*
|
||||||
|
alias
|
||||||
|
*/
|
||||||
|
#define MCU_GetHotBootFlag() (MCU_GetFreeRegister(0) & OS_MCU_RESET_VALUE_BUF_HOTBT_MASK ? TRUE : FALSE)
|
||||||
|
#define MCU_SetHotBootFlag(hotboot) MCU_SetFreeRegister(0, (u8)(hotboot ? OS_MCU_RESET_VALUE_BUF_HOTBT_MASK : 0))
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MCU_SYSTEMMODE_NITRO = (0 << MCU_REG_MODE_SYSTEM_SHIFT),
|
||||||
|
MCU_SYSTEMMODE_TWL = (1 << MCU_REG_MODE_SYSTEM_SHIFT)
|
||||||
|
}
|
||||||
|
MCUSystemMode;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MCU_CAMERA_LED_OFF = (0 << MCU_REG_CAMERA_LED_SHIFT),
|
||||||
|
MCU_CAMERA_LED_ON = (1 << MCU_REG_CAMERA_LED_SHIFT),
|
||||||
|
MCU_CAMERA_LED_BLINK = (2 << MCU_REG_CAMERA_LED_SHIFT),
|
||||||
|
MCU_CAMERA_LED_RESERVED1 = (3 << MCU_REG_CAMERA_LED_SHIFT)
|
||||||
|
}
|
||||||
|
MCUCameraLed;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MCU_GPIO_DIR_OUTPUT = 0,
|
||||||
|
MCU_GPIO_DIR_INPUT = 1
|
||||||
|
}
|
||||||
|
MCUGpioDir;
|
||||||
|
|
||||||
|
#ifdef SDK_ARM7
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetVersion
|
||||||
|
|
||||||
|
Description: get MCU version.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: MCU version (0-15)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetVersion( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_VER_INFO_ADDR );
|
||||||
|
if ( data < MCU_VERSION_MIN )
|
||||||
|
{
|
||||||
|
#if SDK_TS_VERSION <= 200
|
||||||
|
OS_TWarning("MCU version is too old to support this library.");
|
||||||
|
#else
|
||||||
|
OS_TPanic("MCU version is too old to support this library.");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return (u8)( ( data & MCU_REG_VER_INFO_VERSION_MASK ) >> MCU_REG_VER_INFO_VERSION_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetRevision
|
||||||
|
|
||||||
|
Description: get MCU revision.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: MCU revision (0-15)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetRevision( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_VER_INFO_ADDR );
|
||||||
|
if ( data < MCU_VERSION_MIN )
|
||||||
|
{
|
||||||
|
#if SDK_TS_VERSION <= 200
|
||||||
|
OS_TWarning("MCU version is too old to support this library.");
|
||||||
|
#else
|
||||||
|
OS_TPanic("MCU version is too old to support this library.");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return (u8)( ( data & MCU_REG_VER_INFO_REVISION_MASK ) >> MCU_REG_VER_INFO_REVISION_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetPmicManufacturer
|
||||||
|
|
||||||
|
Description: get PMIC manufacturer.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: manufacturer ID (0-7)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetPmicManufacturer( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_PMIC_INFO_ADDR );
|
||||||
|
return (u8)( ( data & MCU_REG_PMIC_INFO_MAKER_MASK ) >> MCU_REG_PMIC_INFO_MAKER_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetPmicVersion
|
||||||
|
|
||||||
|
Description: get PMIC version.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: MCU version (0-3)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetPmicVersion( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_PMIC_INFO_ADDR );
|
||||||
|
return (u8)( ( data & MCU_REG_VER_INFO_REVISION_MASK ) >> MCU_REG_VER_INFO_REVISION_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetBatteryManufacturer
|
||||||
|
|
||||||
|
Description: get battery manufacturer.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: manufacturer ID (0-7)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetBatteryManufacturer( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_BATT_INFO_ADDR );
|
||||||
|
return (u8)( ( data & MCU_REG_BATT_INFO_MAKER_MASK ) >> MCU_REG_BATT_INFO_MAKER_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_NotifyShutdown
|
||||||
|
|
||||||
|
Description: notify system is going to shutdown
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_NotifyShutdown( void )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_COMMAND_ADDR, MCU_REG_COMMAND_PWOFF_MASK );
|
||||||
|
// return MCU_SetFlags( MCU_REG_COMMAND_ADDR, MCU_REG_COMMAND_PWOFF_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_HardwareReset
|
||||||
|
|
||||||
|
Description: execute hardware reset routine
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_HardwareReset( void )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_COMMAND_ADDR, MCU_REG_COMMAND_RESET_MASK );
|
||||||
|
// return MCU_SetFlags( MCU_REG_COMMAND_ADDR, MCU_REG_COMMAND_RESET_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GoDsMode
|
||||||
|
|
||||||
|
Description: set system mode to MCU_SYSTEMMODE_NITRO in MCU.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_GoDsMode( void )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_MODE_ADDR, MCU_SYSTEMMODE_NITRO );
|
||||||
|
// return MCU_SetParams( MCU_REG_MODE_ADDR, MCU_SYSTEMMODE_NITRO, MCU_REG_MODE_SYSTEM_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GoTwlMode
|
||||||
|
|
||||||
|
Description: set system mode to MCU_SYSTEMMODE_TWL in MCU.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_GoTwlMode( void )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_MODE_ADDR, MCU_SYSTEMMODE_TWL );
|
||||||
|
// return MCU_SetParams( MCU_REG_MODE_ADDR, MCU_SYSTEMMODE_TWL, MCU_REG_MODE_SYSTEM_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_IsExternalDC
|
||||||
|
|
||||||
|
Description: check external DC ( AC adapter ) is plugged.
|
||||||
|
NOTE: it's not meaning that power is supplied or not.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if plugged.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_IsExternalDC( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_POWER_INFO_ADDR );
|
||||||
|
return (BOOL)( (data & MCU_REG_POWER_INFO_EXTDC_MASK) >> MCU_REG_POWER_INFO_EXTDC_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_IsExtesionMode
|
||||||
|
|
||||||
|
Description: check extension mode is available.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if extension mode is available.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_IsExtesionMode( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_POWER_MODE_ADDR );
|
||||||
|
return (BOOL)( (data & MCU_REG_POWER_MODE_EXT_MASK) >> MCU_REG_POWER_MODE_EXT_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetExtesionMode
|
||||||
|
|
||||||
|
Description: enable/disable extension mode.
|
||||||
|
|
||||||
|
Arguments: enabled enable/dislabe
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetExtesionMode( BOOL enabled )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_POWER_MODE_ADDR, (u8)(enabled ? MCU_REG_POWER_MODE_EXT_MASK : 0) );
|
||||||
|
// return MCU_SetParams( MCU_REG_POWER_MODE_ADDR, (u8)(enabled ? MCU_REG_POWER_MODE_EXT_MASK : 0), MCU_REG_POWER_MODE_EXT_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetBatteryLevel
|
||||||
|
|
||||||
|
Description: get battery level
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: battery level
|
||||||
|
|
||||||
|
0(Empty) -0 % Red (blink)
|
||||||
|
1(Low) 0-5 % Red (blink)
|
||||||
|
3 1-12 % Red
|
||||||
|
7 10-25 % Blue
|
||||||
|
11 20-50 % Blue
|
||||||
|
15 40-100 % Blue
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetBatteryLevel( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_POWER_INFO_ADDR );
|
||||||
|
return (u8)( (data & MCU_REG_POWER_INFO_LEVEL_MASK) >> MCU_REG_POWER_INFO_LEVEL_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetWifiLedStatus
|
||||||
|
|
||||||
|
Description: get wifi LED status
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE is on
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_GetWifiLedStatus( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_WIFI_ADDR );
|
||||||
|
return (BOOL)( ( data & MCU_REG_WIFI_LED_MASK ) >> MCU_REG_WIFI_LED_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetWifiLedStatus
|
||||||
|
|
||||||
|
Description: set wifi LED status
|
||||||
|
|
||||||
|
Arguments: enabled TRUE if enabled
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetWifiLedStatus( BOOL enabled )
|
||||||
|
{
|
||||||
|
return MCU_SetParams( MCU_REG_WIFI_ADDR, (u8)(enabled ? MCU_REG_WIFI_LED_MASK : 0), MCU_REG_WIFI_LED_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetWifiStatus
|
||||||
|
|
||||||
|
Description: whether wifi is enabled
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE means enabled, otherwise in hardware reset
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_GetWifiStatus( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_WIFI_ADDR );
|
||||||
|
return (BOOL)( ( data & MCU_REG_WIFI_NRESET_MASK ) >> MCU_REG_WIFI_NRESET_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetWifiStatus
|
||||||
|
|
||||||
|
Description: set wifi to be enabled/disabled
|
||||||
|
|
||||||
|
Arguments: enabled TRUE if set enabled
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetWifiStatus( BOOL enabled )
|
||||||
|
{
|
||||||
|
return MCU_SetParams( MCU_REG_WIFI_ADDR, (u8)( enabled ? MCU_REG_WIFI_NRESET_MASK : 0), MCU_REG_WIFI_NRESET_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetCameraLedStatus
|
||||||
|
|
||||||
|
Description: get camera LED status
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: one of MCUCameraLed
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline MCUCameraLed MCU_GetCameraLedStatus( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_CAMERA_ADDR );
|
||||||
|
return (MCUCameraLed)( ( data & MCU_REG_CAMERA_LED_MASK ) >> MCU_REG_CAMERA_LED_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetCameraLedStatus
|
||||||
|
|
||||||
|
Description: set camera LED status
|
||||||
|
|
||||||
|
Arguments: led one of MCUCameraLed
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetCameraLedStatus( MCUCameraLed led )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_CAMERA_ADDR, led );
|
||||||
|
// return MCU_SetParams( MCU_REG_CAMERA_ADDR, led, MCU_REG_CAMERA_LED_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetGpioDirection
|
||||||
|
|
||||||
|
Description: get GPIO direction
|
||||||
|
|
||||||
|
Arguments: pin pin number (only 0 is suppined)
|
||||||
|
|
||||||
|
Returns: one of MCUGpioDir
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline MCUGpioDir MCU_GetGpioDirection( u8 pin )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_GPIO_DIR_ADDR );
|
||||||
|
SDK_ASSERT( pin == 0 );
|
||||||
|
return (MCUGpioDir)( ( data >> pin ) & 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetGpioDirection
|
||||||
|
|
||||||
|
Description: set GPIO direction
|
||||||
|
|
||||||
|
Arguments: pin pin number (only 0 is suppined)
|
||||||
|
dir one of MCUGpioDir
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetGpioDirection( u8 pin, MCUGpioDir dir )
|
||||||
|
{
|
||||||
|
SDK_ASSERT( pin == 0 );
|
||||||
|
return MCU_SetParams( MCU_REG_GPIO_DIR_ADDR, (u8)( dir << pin ), (u8)( 1 << pin ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetGpioData
|
||||||
|
|
||||||
|
Description: get GPIO data
|
||||||
|
|
||||||
|
Arguments: pin pin number (only 0 is suppined)
|
||||||
|
|
||||||
|
Returns: 1 bit data
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_GetGpioData( u8 pin )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_GPIO_DATA_ADDR );
|
||||||
|
SDK_ASSERT( pin == 0 );
|
||||||
|
return (BOOL)( ( data >> pin ) & 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetGpioData
|
||||||
|
|
||||||
|
Description: set GPIO data
|
||||||
|
|
||||||
|
Arguments: pin pin number (only 0 is suppined)
|
||||||
|
data 0(FALSE) or 1(TRUE)
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetGpioData( u8 pin, BOOL data )
|
||||||
|
{
|
||||||
|
SDK_ASSERT( pin == 0 );
|
||||||
|
return MCU_SetParams( MCU_REG_GPIO_DATA_ADDR, (u8)( (data & 1) << pin ), (u8)( 1 << pin ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetVolume
|
||||||
|
|
||||||
|
Description: get current volume.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: volume (0-31)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetVolume( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_VOLUME_ADDR );
|
||||||
|
return (u8)( ( data & MCU_REG_VOLUME_VOLUME_MASK ) >> MCU_REG_VOLUME_VOLUME_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetVolume
|
||||||
|
|
||||||
|
Description: set current volume.
|
||||||
|
|
||||||
|
Arguments: volume volume (0-31)
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetVolume( u8 volume )
|
||||||
|
{
|
||||||
|
if ( volume <= MCU_VOLUME_MAX )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_VOLUME_ADDR, (u8)( volume << MCU_REG_VOLUME_VOLUME_SHIFT ) );
|
||||||
|
// return MCU_SetParams( MCU_REG_VOLUME_ADDR, (u8)( volume << MCU_REG_VOLUME_VOLUME_SHIFT ), MCU_REG_VOLUME_VOLUME_MASK );
|
||||||
|
}
|
||||||
|
return FALSE; // invalid parameters
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetBackLightBrightness
|
||||||
|
|
||||||
|
Description: get current back light brightness.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: brightness (0-MCU_BL_BRIGHTNESS_MAX)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetBackLightBrightness( void )
|
||||||
|
{
|
||||||
|
u8 data = MCU_ReadRegister( MCU_REG_BL_ADDR );
|
||||||
|
return (u8)( ( data & MCU_REG_BL_BRIGHTNESS_MASK ) >> MCU_REG_BL_BRIGHTNESS_SHIFT );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetBackLightBrightness
|
||||||
|
|
||||||
|
Description: set current back light brightness.
|
||||||
|
|
||||||
|
Arguments: brightness back light brightness (0-MCU_BL_BRIGHTNESS_MAX)
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetBackLightBrightness( u8 brightness )
|
||||||
|
{
|
||||||
|
if ( brightness <= MCU_BL_BRIGHTNESS_MAX )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_BL_ADDR, (u8)( brightness << MCU_REG_BL_BRIGHTNESS_SHIFT ) );
|
||||||
|
// return MCU_SetParams( MCU_REG_BL_ADDR, (u8)( brightness << MCU_REG_BL_BRIGHTNESS_SHIFT ), MCU_REG_BL_BRIGHTNESS_MASK );
|
||||||
|
}
|
||||||
|
return FALSE; // invalid parameter
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetFreeRegister
|
||||||
|
|
||||||
|
Description: get free register.
|
||||||
|
|
||||||
|
Arguments: number register number (0-7)
|
||||||
|
|
||||||
|
Returns: data
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_GetFreeRegister( u8 number )
|
||||||
|
{
|
||||||
|
if ( number <= MCU_FREE_REG_NUMBER_MAX )
|
||||||
|
{
|
||||||
|
#if SDK_TS_VERSION <= 200
|
||||||
|
u8 data = MCU_ReadRegister( (u8)( MCU_OLD_REG_TEMP_ADDR + number ) );
|
||||||
|
if ( data == 0x5a )
|
||||||
|
{
|
||||||
|
return MCU_ReadRegister( (u8)( MCU_REG_TEMP_ADDR + number ) );
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
#else
|
||||||
|
return MCU_ReadRegister( (u8)( MCU_REG_TEMP_ADDR + number ) );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0x00; // invalid parameter
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetFreeRegister
|
||||||
|
|
||||||
|
Description: set free register.
|
||||||
|
|
||||||
|
Arguments: number register number (0-7)
|
||||||
|
data buffer to store data
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetFreeRegister( u8 number, u8 value )
|
||||||
|
{
|
||||||
|
if ( number <= MCU_FREE_REG_NUMBER_MAX )
|
||||||
|
{
|
||||||
|
#if SDK_TS_VERSION <= 200
|
||||||
|
BOOL result = MCU_WriteRegister( (u8)( MCU_OLD_REG_TEMP_ADDR + number ), value );
|
||||||
|
return MCU_WriteRegister( (u8)( MCU_REG_TEMP_ADDR + number ), value ) & result;
|
||||||
|
#else
|
||||||
|
return MCU_WriteRegister( (u8)( MCU_REG_TEMP_ADDR + number ), value );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return FALSE; // invalid parameter
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
工場の生産工程でのみ使われる予定のAPI (TODO: ARM9から呼び出せる必要あり)
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_StartBatteryCalibration
|
||||||
|
|
||||||
|
Description: execute battery calibration ( un-official command )
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_StartBatteryCalibration( void )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_BATT_CALIB_ADDR, MCU_REG_BATT_CALIB_MODE_MASK );
|
||||||
|
// return MCU_SetFlags( MCU_REG_BATT_CALIB_ADDR, MCU_REG_BATT_CALIB_MODE_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetBatteryCalibrationStatus
|
||||||
|
|
||||||
|
Description: whether battery calibration was done ( un-official command )
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: 1 if done, 2 or 3 if error
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_IsBatteryCalibrationDone( void )
|
||||||
|
{
|
||||||
|
return MCU_ReadRegister( MCU_REG_CALIB_STATUS_ADDR );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
すぐに削除される予定のAPI
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetPowerSwitchThreshould
|
||||||
|
|
||||||
|
Description: set reset/no sense threshould time ( temporary command )
|
||||||
|
|
||||||
|
Arguments: ticks time parameter
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetPowerSwitchThreshould( u8 ticks )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_RESET_TIME_ADDR, (u8)(ticks << MCU_REG_RESET_TIME_VALUE_SHIFT) );
|
||||||
|
// return MCU_SetParams( MCU_REG_RESET_TIME_ADDR, (u8)(ticks << MCU_REG_RESET_TIME_VALUE_SHIFT), MCU_REG_RESET_TIME_VALUE_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetPowerOffThreshould
|
||||||
|
|
||||||
|
Description: set reset/power off threshould time ( temporary command )
|
||||||
|
|
||||||
|
Arguments: ticks time parameter
|
||||||
|
|
||||||
|
Returns: TRUE if success
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline BOOL MCU_SetPowerOffThreshould( u8 ticks )
|
||||||
|
{
|
||||||
|
return MCU_WriteRegister( MCU_REG_PWOFF_TIME_ADDR, (u8)(ticks << MCU_REG_PWOFF_TIME_VALUE_SHIFT) );
|
||||||
|
// return MCU_SetParams( MCU_REG_PWOFF_TIME_ADDR, (u8)(ticks << MCU_REG_PWOFF_TIME_VALUE_SHIFT), MCU_REG_PWOFF_TIME_VALUE_MASK );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_MilliSecondsToThreshouldTicks
|
||||||
|
|
||||||
|
Description: calculate threshould value from msec
|
||||||
|
|
||||||
|
Arguments: msec msec value
|
||||||
|
|
||||||
|
Returns: threshould ticks
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline u8 MCU_MilliSecondsToThreshouldTicks( u32 msec )
|
||||||
|
{
|
||||||
|
SDK_ASSERT( msec > 20 );
|
||||||
|
return (u8)((msec - 20) / 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // SDK_ARM7
|
||||||
|
|
||||||
|
#ifdef _cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* TWL_MCU_CONTROL_H_ */
|
||||||
@ -1,5 +1,5 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Project: TwlSDK - libraries - mcu
|
Project: TwlSDK - mcu - include
|
||||||
File: i2c.h
|
File: i2c.h
|
||||||
|
|
||||||
Copyright 2007 Nintendo. All rights reserved.
|
Copyright 2007 Nintendo. All rights reserved.
|
||||||
@ -10,13 +10,15 @@
|
|||||||
not be disclosed to third parties or copied or duplicated in any form,
|
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.
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
$Log: $
|
$Date:: $
|
||||||
$NoKeywords: $
|
$Rev$
|
||||||
|
$Author$
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifndef TWL_MCU_I2C_COMMON_H_
|
#ifndef TWL_MCU_I2C_H_
|
||||||
#define TWL_MCU_I2C_COMMON_H_
|
#define TWL_MCU_I2C_H_
|
||||||
|
|
||||||
|
#ifdef SDK_ARM7
|
||||||
|
|
||||||
#include <twl/types.h>
|
|
||||||
#include <twl/i2c/ARM7/i2c.h>
|
#include <twl/i2c/ARM7/i2c.h>
|
||||||
|
|
||||||
#ifdef _cplusplus
|
#ifdef _cplusplus
|
||||||
@ -63,46 +65,6 @@ static inline u8 MCU_ReadRegister( u8 reg )
|
|||||||
return I2C_ReadRegister( I2C_SLAVE_MICRO_CONTROLLER, reg );
|
return I2C_ReadRegister( I2C_SLAVE_MICRO_CONTROLLER, reg );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: MCUi_WriteRegisters
|
|
||||||
|
|
||||||
Description: set value to decive registers through I2C.
|
|
||||||
|
|
||||||
Arguments: reg : decive register
|
|
||||||
bufp : data array to be written
|
|
||||||
size : data size
|
|
||||||
|
|
||||||
Returns: None
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static inline BOOL MCUi_WriteRegisters( u8 reg, const u8 *bufp, size_t size )
|
|
||||||
{
|
|
||||||
return I2Ci_WriteRegisters( I2C_SLAVE_MICRO_CONTROLLER, reg, bufp, size );
|
|
||||||
}
|
|
||||||
static inline BOOL MCU_WriteRegisters( u8 reg, const u8 *bufp, size_t size )
|
|
||||||
{
|
|
||||||
return I2C_WriteRegisters( I2C_SLAVE_MICRO_CONTROLLER, reg, bufp, size );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: MCUi_ReadRegisters
|
|
||||||
|
|
||||||
Description: get value from decive registers through I2C.
|
|
||||||
|
|
||||||
Arguments: reg : decive register
|
|
||||||
bufp : data array to be read
|
|
||||||
size : data size
|
|
||||||
|
|
||||||
Returns: value which is read from specified decive register
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static inline BOOL MCUi_ReadRegisters( u8 reg, u8 *bufp, size_t size )
|
|
||||||
{
|
|
||||||
return I2Ci_ReadRegisters( I2C_SLAVE_MICRO_CONTROLLER, reg, bufp, size );
|
|
||||||
}
|
|
||||||
static inline BOOL MCU_ReadRegisters( u8 reg, u8 *bufp, size_t size )
|
|
||||||
{
|
|
||||||
return I2C_ReadRegisters( I2C_SLAVE_MICRO_CONTROLLER, reg, bufp, size );
|
|
||||||
}
|
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// I2C BIT CONTROL
|
// I2C BIT CONTROL
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -119,11 +81,20 @@ static inline BOOL MCU_ReadRegisters( u8 reg, u8 *bufp, size_t size )
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline BOOL MCUi_SetParams( u8 reg, u8 setBits, u8 maskBits )
|
static inline BOOL MCUi_SetParams( u8 reg, u8 setBits, u8 maskBits )
|
||||||
{
|
{
|
||||||
return I2Ci_SetParams( I2C_SLAVE_MICRO_CONTROLLER, reg, setBits, maskBits );
|
u8 tmp;
|
||||||
|
tmp = MCU_ReadRegister( reg );
|
||||||
|
tmp &= ~maskBits;
|
||||||
|
setBits &= maskBits;
|
||||||
|
tmp |= setBits;
|
||||||
|
return MCU_WriteRegister( reg, tmp );
|
||||||
}
|
}
|
||||||
static inline BOOL MCU_SetParams( u8 reg, u8 setBits, u8 maskBits )
|
static inline BOOL MCU_SetParams( u8 reg, u8 setBits, u8 maskBits )
|
||||||
{
|
{
|
||||||
return I2C_SetParams( I2C_SLAVE_MICRO_CONTROLLER, reg, setBits, maskBits );
|
BOOL result;
|
||||||
|
(void)I2C_Lock();
|
||||||
|
result = MCUi_SetParams( reg, setBits, maskBits );
|
||||||
|
(void)I2C_Unlock();
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
@ -168,5 +139,7 @@ static inline BOOL MCU_ClearFlags( u8 reg, u8 clrBits )
|
|||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TWL_MCU_I2C_COMMON_H_ */
|
#endif // SDK_ARM7
|
||||||
|
|
||||||
|
/* TWL_MCU_I2C_H_ */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
172
include/twl/mcu/ARM7/intr.h
Normal file
172
include/twl/mcu/ARM7/intr.h
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK - mcu - include
|
||||||
|
File: intr.h
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Date:: 2008-02-15#$
|
||||||
|
$Rev: 4187 $
|
||||||
|
$Author: yutaka $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef TWL_MCU_INTR_H_
|
||||||
|
#define TWL_MCU_INTR_H_
|
||||||
|
|
||||||
|
#include <twl/types.h>
|
||||||
|
#include <twl/mcu/ARM7/mcu_reg.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
CPU割り込み
|
||||||
|
*/
|
||||||
|
#define MCU_IE OS_IE_GPIO33_2
|
||||||
|
|
||||||
|
/*
|
||||||
|
MCU割り込みビット数
|
||||||
|
*/
|
||||||
|
#define MCU_IRQ_TABLE_MAX 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
MCU割り込み種別
|
||||||
|
*/
|
||||||
|
// 外部DCプラグの挿抜が発生した (アプリケーションユーティリティ)
|
||||||
|
//#define MCU_IE_EXTERNAL_DC_TRIGGER MCU_REG_IRQ_EXTDC_MASK
|
||||||
|
// バッテリ切れ最終予告水域になった (アプリケーションユーティリティ)
|
||||||
|
#define MCU_IE_BATTERY_LOW_TRIGGER MCU_REG_IRQ_BATTLOW_MASK
|
||||||
|
// バッテリ切れ水域になった (電源OFFと同様の処理開始)
|
||||||
|
#define MCU_IE_BATTERY_EMPTY_TRIGGER MCU_REG_IRQ_BATTEMP_MASK
|
||||||
|
// 電源ボタンが不感時間を超えて押された (リセット/電源OFFのどちらかの発生が確定)
|
||||||
|
#define MCU_IE_POWER_SWITCH_PRESSED MCU_REG_IRQ_PWSW_MASK
|
||||||
|
// 電源ボタンによる電源OFF指示
|
||||||
|
#define MCU_IE_POWER_OFF_REQUEST MCU_REG_IRQ_PWOFF_MASK
|
||||||
|
// 電源ボタンによるリセット指示
|
||||||
|
#define MCU_IE_RESET_REQUEST MCU_REG_IRQ_RESET_MASK
|
||||||
|
|
||||||
|
/*
|
||||||
|
ブロック設定
|
||||||
|
*/
|
||||||
|
#define MCU_BLOCK OS_MESSAGE_BLOCK
|
||||||
|
#define MCU_NOBLOCK OS_MESSAGE_NOBLOCK
|
||||||
|
|
||||||
|
#ifdef _cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
割り込みハンドラ
|
||||||
|
*/
|
||||||
|
typedef void (*MCUIrqFunction)(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
電源ボタンの状態
|
||||||
|
*/
|
||||||
|
typedef enum MCUPwswStatus
|
||||||
|
{
|
||||||
|
MCU_PWSW_UNKNOWN, // 押されていない
|
||||||
|
MCU_PWSW_IN_PROGRESS, // 押しているが未確定
|
||||||
|
MCU_PWSW_RESET, // リセットと確定した
|
||||||
|
MCU_PWSW_POWER_OFF, // 電源OFFと確定した
|
||||||
|
|
||||||
|
MCU_PWSW_MAX
|
||||||
|
}
|
||||||
|
MCUPwswStatus;
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_InitIrq
|
||||||
|
|
||||||
|
Description: MCUの割り込みを利用可能とする
|
||||||
|
|
||||||
|
Arguments: priority 割り込み処理スレッドの優先度(初回のみ有効)
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void MCU_InitIrq(u32 priority);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_SetIrqFunction
|
||||||
|
|
||||||
|
Description: MCU割り込みハンドラの登録
|
||||||
|
|
||||||
|
Arguments: intrBit 設定するMCU割り込み要因
|
||||||
|
function 割り込みハンドラ
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void MCU_SetIrqFunction(u8 intrBit, MCUIrqFunction function);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetIrqFunction
|
||||||
|
|
||||||
|
Description: MCU割り込みハンドラの取得
|
||||||
|
|
||||||
|
Arguments: intrBit 設定するMCU割り込み要因
|
||||||
|
|
||||||
|
Returns: 設定済みの割り込みハンドラ
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
MCUIrqFunction MCU_GetIrqFunction(u8 intrBit);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_CallIrqFunction
|
||||||
|
|
||||||
|
Description: 引数の割り込みに対応したコールバックを呼び出します。
|
||||||
|
PwswStatusは更新しません。
|
||||||
|
|
||||||
|
Arguments: intrBit 割り込みハンドラを呼び出したい
|
||||||
|
MCU割り込み要因のビットOR
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void MCU_CallIrqFunction(u8 intrBit);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_CheckIrq
|
||||||
|
|
||||||
|
Description: MCUの割り込みが発生していないか確認する。
|
||||||
|
MCU_REG_IRQ_ADDRを直接Readする代わりにこれを使用してください。
|
||||||
|
遅延して割り込みハンドラを呼び出したい場合は、その
|
||||||
|
タイミングでMCU_CallIrqFunction()を呼び出してください。
|
||||||
|
|
||||||
|
Arguments: callHandler 登録済みハンドラを呼び出すかどうか
|
||||||
|
|
||||||
|
Returns: 発生していた割り込みに対応するMCU_IE_*のビットOR
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
u8 MCU_CheckIrq(BOOL callHandler);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_GetPwswStatus
|
||||||
|
|
||||||
|
Description: MCUの電源ボタンの状態を取得する
|
||||||
|
ブロックする場合、IN_PROGRESSであれば、RESETまたはPOWER_OFFに
|
||||||
|
なるまでOS_Sleep(1)する
|
||||||
|
|
||||||
|
Arguments: block 確定していないなら確定するまで待つかどうか
|
||||||
|
MCU_BLOCK: 待つ
|
||||||
|
MCU_NOBLOCK: 待たない
|
||||||
|
|
||||||
|
Returns: one of MCUPwswStatus
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
MCUPwswStatus MCU_GetPwswStatus(s32 block);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MCU_ResetPwswStatus
|
||||||
|
|
||||||
|
Description: MCUの電源ボタンの状態をクリアする (なかったことにする)
|
||||||
|
MCU_PWSW_IN_PROGRESSの場合は無視される
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void MCU_ResetPwswStatus(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // TWL_MCU_INTR_H_
|
||||||
@ -17,76 +17,182 @@
|
|||||||
#ifndef TWL_MCU_MCU_REG_H_
|
#ifndef TWL_MCU_MCU_REG_H_
|
||||||
#define TWL_MCU_MCU_REG_H_
|
#define TWL_MCU_MCU_REG_H_
|
||||||
|
|
||||||
#define MCU_REG_INFO_ADDR 0x00
|
#define MCU_REG_VER_INFO_ADDR 0x00
|
||||||
#define MCU_REG_IRQ_ADDR 0x01
|
#define MCU_REG_PMIC_INFO_ADDR 0x01
|
||||||
#define MCU_REG_MODE_ADDR 0x02
|
#define MCU_REG_BATT_INFO_ADDR 0x02
|
||||||
|
|
||||||
#define MCU_REG_WIFILED_ADDR 0x10
|
#define MCU_REG_IRQ_ADDR 0x10
|
||||||
#define MCU_REG_CAMLED_ADDR 0x11
|
#define MCU_REG_COMMAND_ADDR 0x11
|
||||||
#define MCU_REG_CARDLED_1_ADDR 0x12
|
#define MCU_REG_MODE_ADDR 0x12
|
||||||
#define MCU_REG_CARDLED_2_ADDR 0x13
|
|
||||||
|
|
||||||
#define MCU_REG_TEMP_ADDR 0x18
|
#define MCU_REG_POWER_INFO_ADDR 0x20
|
||||||
#define MCU_REG_TEMP_LAST_ADDR 0x1f
|
#define MCU_REG_POWER_MODE_ADDR 0x21
|
||||||
|
|
||||||
#define MCU_REG_VOLUME_ADDR 0x20
|
#define MCU_REG_WIFI_ADDR 0x30
|
||||||
|
#define MCU_REG_CAMERA_ADDR 0x31
|
||||||
|
#define MCU_REG_GPIO_DIR_ADDR 0x32
|
||||||
|
#define MCU_REG_GPIO_DATA_ADDR 0x33
|
||||||
|
|
||||||
/* MCU_REG_INFO */
|
#define MCU_REG_VOLUME_ADDR 0x40
|
||||||
|
#define MCU_REG_BL_ADDR 0x41
|
||||||
|
|
||||||
#define MCU_REG_INFO_VERSION_SHIFT 4
|
#define MCU_REG_BATT_CALIB_ADDR 0x60
|
||||||
#define MCU_REG_INFO_VERSION_SIZE 4
|
#define MCU_REG_CALIB_STATUS_ADDR 0x61
|
||||||
#define MCU_REG_INFO_VERSION_MASK 0xf0
|
|
||||||
|
|
||||||
#define MCU_REG_INFO_REVISION_SHIFT 0
|
#define MCU_REG_TEMP_ADDR 0x70
|
||||||
#define MCU_REG_INFO_REVISION_SIZE 4
|
#define MCU_REG_TEMP_LAST_ADDR 0x77
|
||||||
#define MCU_REG_INFO_REVISION_MASK 0x0f
|
|
||||||
|
#define MCU_REG_RESET_TIME_ADDR 0x80 // temporary
|
||||||
|
#define MCU_REG_PWOFF_TIME_ADDR 0x81 // temporary
|
||||||
|
|
||||||
|
/* MCU_REG_VER_INFO */
|
||||||
|
|
||||||
|
#define MCU_REG_VER_INFO_VERSION_SHIFT 4
|
||||||
|
#define MCU_REG_VER_INFO_VERSION_SIZE 4
|
||||||
|
#define MCU_REG_VER_INFO_VERSION_MASK 0xf0
|
||||||
|
|
||||||
|
#define MCU_REG_VER_INFO_REVISION_SHIFT 0
|
||||||
|
#define MCU_REG_VER_INFO_REVISION_SIZE 4
|
||||||
|
#define MCU_REG_VER_INFO_REVISION_MASK 0x0f
|
||||||
|
|
||||||
|
/* MCU_REG_PMIC_INFO */
|
||||||
|
|
||||||
|
#define MCU_REG_PMIC_INFO_MAKER_SHIFT 4
|
||||||
|
#define MCU_REG_PMIC_INFO_MAKER_SIZE 3
|
||||||
|
#define MCU_REG_PMIC_INFO_MAKER_MASK 0x70
|
||||||
|
|
||||||
|
#define MCU_REG_PMIC_INFO_VERSION_SHIFT 0
|
||||||
|
#define MCU_REG_PMIC_INFO_VERSION_SIZE 2
|
||||||
|
#define MCU_REG_PMIC_INFO_VERSION_MASK 0x03
|
||||||
|
|
||||||
|
/* MCU_REG_BATT_INFO */
|
||||||
|
|
||||||
|
#define MCU_REG_BATT_INFO_MAKER_SHIFT 4
|
||||||
|
#define MCU_REG_BATT_INFO_MAKER_SIZE 3
|
||||||
|
#define MCU_REG_BATT_INFO_MAKER_MASK 0x70
|
||||||
|
|
||||||
/* MCU_REG_IRQ */
|
/* MCU_REG_IRQ */
|
||||||
|
|
||||||
|
#define MCU_REG_IRQ_EXTDC_SHIFT 7 // not worked
|
||||||
|
#define MCU_REG_IRQ_EXTDC_SIZE 1 // not worked
|
||||||
|
#define MCU_REG_IRQ_EXTDC_MASK 0x80 // not worked
|
||||||
|
|
||||||
|
#define MCU_REG_IRQ_BATTLOW_SHIFT 5
|
||||||
|
#define MCU_REG_IRQ_BATTLOW_SIZE 1
|
||||||
|
#define MCU_REG_IRQ_BATTLOW_MASK 0x20
|
||||||
|
|
||||||
|
#define MCU_REG_IRQ_BATTEMP_SHIFT 4
|
||||||
|
#define MCU_REG_IRQ_BATTEMP_SIZE 1
|
||||||
|
#define MCU_REG_IRQ_BATTEMP_MASK 0x10
|
||||||
|
|
||||||
|
#define MCU_REG_IRQ_PWSW_SHIFT 3
|
||||||
|
#define MCU_REG_IRQ_PWSW_SIZE 1
|
||||||
|
#define MCU_REG_IRQ_PWSW_MASK 0x08
|
||||||
|
|
||||||
|
#define MCU_REG_IRQ_PWOFF_SHIFT 1
|
||||||
|
#define MCU_REG_IRQ_PWOFF_SIZE 1
|
||||||
|
#define MCU_REG_IRQ_PWOFF_MASK 0x02
|
||||||
|
|
||||||
#define MCU_REG_IRQ_RESET_SHIFT 0
|
#define MCU_REG_IRQ_RESET_SHIFT 0
|
||||||
#define MCU_REG_IRQ_RESET_SIZE 1
|
#define MCU_REG_IRQ_RESET_SIZE 1
|
||||||
#define MCU_REG_IRQ_RESET_MASK 0x01
|
#define MCU_REG_IRQ_RESET_MASK 0x01
|
||||||
|
|
||||||
|
/* MCU_REG_COMMAND */
|
||||||
|
|
||||||
|
#define MCU_REG_COMMAND_PWOFF_SHIFT 1 // not worked but using to notify to MCU
|
||||||
|
#define MCU_REG_COMMAND_PWOFF_SIZE 1 // not worked but using to notify to MCU
|
||||||
|
#define MCU_REG_COMMAND_PWOFF_MASK 0x02 // not worked but using to notify to MCU
|
||||||
|
|
||||||
|
#define MCU_REG_COMMAND_RESET_SHIFT 0
|
||||||
|
#define MCU_REG_COMMAND_RESET_SIZE 1
|
||||||
|
#define MCU_REG_COMMAND_RESET_MASK 0x01
|
||||||
|
|
||||||
/* MCU_REG_MODE */
|
/* MCU_REG_MODE */
|
||||||
|
|
||||||
#define MCU_REG_MODE_SYSTEM_SHIFT 0
|
#define MCU_REG_MODE_SYSTEM_SHIFT 0
|
||||||
#define MCU_REG_MODE_SYSTEM_SIZE 2
|
#define MCU_REG_MODE_SYSTEM_SIZE 2
|
||||||
#define MCU_REG_MODE_SYSTEM_MASK 0x03
|
#define MCU_REG_MODE_SYSTEM_MASK 0x03
|
||||||
|
|
||||||
/* MCU_REG_WIFILED */
|
/* MCU_REG_POWER_INFO */
|
||||||
|
|
||||||
#define MCU_REG_WIFILED_SHIFT 0
|
#define MCU_REG_POWER_INFO_EXTDC_SHIFT 7
|
||||||
#define MCU_REG_WIFILED_SIZE 1
|
#define MCU_REG_POWER_INFO_EXTDC_SIZE 1
|
||||||
#define MCU_REG_WIFILED_MASK 0x01
|
#define MCU_REG_POWER_INFO_EXTDC_MASK 0x80
|
||||||
|
|
||||||
/* MCU_REG_CAMLED */
|
#define MCU_REG_POWER_INFO_LEVEL_SHIFT 0
|
||||||
|
#define MCU_REG_POWER_INFO_LEVEL_SIZE 4
|
||||||
|
#define MCU_REG_POWER_INFO_LEVEL_MASK 0x0f
|
||||||
|
|
||||||
#define MCU_REG_CAMLED_PATTERN_SHIFT 4
|
/* MCU_REG_POWER_MODE */
|
||||||
#define MCU_REG_CAMLED_PATTERN_SIZE 4
|
|
||||||
#define MCU_REG_CAMLED_PATTERN_MASK 0xf0
|
|
||||||
|
|
||||||
#define MCU_REG_CAMLED_PARAM_SHIFT 0
|
#define MCU_REG_POWER_MODE_EXT_SHIFT 0
|
||||||
#define MCU_REG_CAMLED_PARAM_SIZE 4
|
#define MCU_REG_POWER_MODE_EXT_SIZE 1
|
||||||
#define MCU_REG_CAMLED_PARAM_MASK 0x0f
|
#define MCU_REG_POWER_MODE_EXT_MASK 0x01
|
||||||
|
|
||||||
/* MCU_REG_CARDLED_1, MCU_REG_CARDLED_2 */
|
/* MCU_REG_WIFI */
|
||||||
|
|
||||||
#define MCU_REG_CARDLED_SHIFT 0
|
#define MCU_REG_WIFI_NRESET_SHIFT 4
|
||||||
#define MCU_REG_CARDLED_SIZE 2
|
#define MCU_REG_WIFI_NRESET_SIZE 1
|
||||||
#define MCU_REG_CARDLED_MASK 0x03
|
#define MCU_REG_WIFI_NRESET_MASK 0x10
|
||||||
|
|
||||||
#define MCU_REG_CARDLED_1_SHIFT MCU_REG_CARDLED_SHIFT
|
#define MCU_REG_WIFI_LED_SHIFT 0
|
||||||
#define MCU_REG_CARDLED_1_SIZE MCU_REG_CARDLED_SIZE
|
#define MCU_REG_WIFI_LED_SIZE 1
|
||||||
#define MCU_REG_CARDLED_1_MASK MCU_REG_CARDLED_MASK
|
#define MCU_REG_WIFI_LED_MASK 0x01
|
||||||
|
|
||||||
#define MCU_REG_CARDLED_2_SHIFT MCU_REG_CARDLED_SHIFT
|
/* MCU_REG_CAMERA */
|
||||||
#define MCU_REG_CARDLED_2_SIZE MCU_REG_CARDLED_SIZE
|
|
||||||
#define MCU_REG_CARDLED_2_MASK MCU_REG_CARDLED_MASK
|
|
||||||
|
|
||||||
/* MCU_REG_VOL */
|
#define MCU_REG_CAMERA_LED_SHIFT 0
|
||||||
|
#define MCU_REG_CAMERA_LED_SIZE 2
|
||||||
|
#define MCU_REG_CAMERA_LED_MASK 0x03
|
||||||
|
|
||||||
#define MCU_REG_VOLUME_SHIFT 0
|
/* MCU_REG_GPIO_DIR */
|
||||||
#define MCU_REG_VOLUME_SIZE 5
|
|
||||||
#define MCU_REG_VOLUME_MASK 0x1f
|
#define MCU_REG_GPIO_DIR_PIN0_SHIFT 0
|
||||||
|
#define MCU_REG_GPIO_DIR_PIN0_SIZE 1
|
||||||
|
#define MCU_REG_GPIO_DIR_PIN0_MASK 0x01
|
||||||
|
|
||||||
|
/* MCU_REG_GPIO_DATA */
|
||||||
|
|
||||||
|
#define MCU_REG_GPIO_DATA_PORT0_SHIFT 0
|
||||||
|
#define MCU_REG_GPIO_DATA_PORT0_SIZE 1
|
||||||
|
#define MCU_REG_GPIO_DATA_PORT0_MASK 0x01
|
||||||
|
|
||||||
|
/* MCU_REG_VOLUME */
|
||||||
|
|
||||||
|
#define MCU_REG_VOLUME_VOLUME_SHIFT 0
|
||||||
|
#define MCU_REG_VOLUME_VOLUME_SIZE 5
|
||||||
|
#define MCU_REG_VOLUME_VOLUME_MASK 0x1f
|
||||||
|
|
||||||
|
/* MCU_REG_BL */
|
||||||
|
|
||||||
|
#define MCU_REG_BL_BRIGHTNESS_SHIFT 0
|
||||||
|
#define MCU_REG_BL_BRIGHTNESS_SIZE 3
|
||||||
|
#define MCU_REG_BL_BRIGHTNESS_MASK 0x07
|
||||||
|
|
||||||
|
/* MCU_REG_BATT_CALIB */
|
||||||
|
|
||||||
|
#define MCU_REG_BATT_CALIB_MODE_SHIFT 0
|
||||||
|
#define MCU_REG_BATT_CALIB_MODE_SIZE 1
|
||||||
|
#define MCU_REG_BATT_CALIB_MODE_MASK 0x01
|
||||||
|
|
||||||
|
/* MCU_REG_CALIB_STATUS */
|
||||||
|
|
||||||
|
#define MCU_REG_CALIB_STATUS_STATUS_SHIFT 0
|
||||||
|
#define MCU_REG_CALIB_STATUS_STATUS_SIZE 2
|
||||||
|
#define MCU_REG_CALIB_STATUS_STATUS_MASK 0x03
|
||||||
|
|
||||||
|
/* MCU_REG_TEMP */
|
||||||
|
|
||||||
|
/* MCU_REG_RESET_TIME */
|
||||||
|
|
||||||
|
#define MCU_REG_RESET_TIME_VALUE_SHIFT 0
|
||||||
|
#define MCU_REG_RESET_TIME_VALUE_SIZE 8
|
||||||
|
#define MCU_REG_RESET_TIME_VALUE_MASK 0xff
|
||||||
|
|
||||||
|
/* MCU_REG_PWOFF_TIME */
|
||||||
|
|
||||||
|
#define MCU_REG_PWOFF_TIME_VALUE_SHIFT 0
|
||||||
|
#define MCU_REG_PWOFF_TIME_VALUE_SIZE 8
|
||||||
|
#define MCU_REG_PWOFF_TIME_VALUE_MASK 0xff
|
||||||
|
|
||||||
#endif /* TWL_MCU_MCU_REG_H_ */
|
#endif /* TWL_MCU_MCU_REG_H_ */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user