mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-18 16:45:33 -04:00
128 lines
3.6 KiB
C
128 lines
3.6 KiB
C
#ifndef __vreg_twl__
|
||
#define __vreg_twl__
|
||
/* ========================================================================= */
|
||
extern u8 vreg_twl[];
|
||
|
||
|
||
/*
|
||
* 外から見たときのマイコンレジスタアドレス。
|
||
* 拡張性などを考えて飛び飛びにしてある。
|
||
*/
|
||
/*
|
||
* 割り込み要因フラグは
|
||
* MSB:外部電源供給有り/なし変化 (未実装)
|
||
* 6:Volキー操作(変更に限らず。MAX時に+でも。)
|
||
* 5:電池電圧 少 検出
|
||
* 4: 僅
|
||
* 3:電源スイッチ 押され検出
|
||
* 2:(未設定)
|
||
* 1:電源スイッチ OFF 時間押され検出
|
||
* LSB: リセット
|
||
*/
|
||
enum REG_TWL_ADRS
|
||
{ // 未定義アドレスへ書き込んだ際は無視
|
||
REG_TWL_ADRS_VER_INFO = 0x00,
|
||
REG_TWL_ADRS_PMIC_INFO,
|
||
REG_TWL_ADRS_BATT_INFO,
|
||
REG_TWL_ADRS_IRQ = 0x10,
|
||
REG_TWL_ADRS_COMMAND,
|
||
REG_TWL_ADRS_MODE,
|
||
REG_TWL_ADRS_POWER_INFO = 0x20,
|
||
REG_TWL_ADRS_POWER_SAVE,
|
||
REG_TWL_ADRS_WIFI = 0x30,
|
||
REG_TWL_ADRS_CAM,
|
||
REG_TWL_ADRS_VOL = 0x40,
|
||
REG_TWL_ADRS_BL,
|
||
REG_TWL_ADRS_CODEC_MIC_GAIN = 0x50,
|
||
REG_TWL_ADRS_ADC_CALIB = 0x60,
|
||
REG_TWL_ADRS_ADC_CALIB_STATUS,
|
||
REG_TWL_ADRS_ADC_CALIB_VALUE,
|
||
REG_TWL_ADRS_POWER_LED,
|
||
REG_TWL_ADRS_TEMP0 = 0x70,
|
||
REG_TWL_ADRS_TEMP1,
|
||
REG_TWL_ADRS_TEMP2,
|
||
REG_TWL_ADRS_TEMP3,
|
||
REG_TWL_ADRS_TEMP4,
|
||
REG_TWL_ADRS_TEMP5,
|
||
REG_TWL_ADRS_TEMP6,
|
||
REG_TWL_ADRS_TEMP7,
|
||
REG_TWL_ADRS_TIME_PWSW_DELAY = 0x80,
|
||
REG_TWL_ADRS_TIME_PWSW_THRESHOLD
|
||
};
|
||
|
||
#define REG_TWL_ADRS_NON_EXIST 0xFF
|
||
|
||
/*
|
||
* マイコン内部でのレジスタの実装
|
||
* もちろんつめてある
|
||
*/
|
||
enum REG_TWL_ADRS_INT
|
||
{
|
||
REG_TWL_INT_ADRS_VER_INFO = 0x00,
|
||
// REG_TWL_INT_ADRS_PMIC_INFO,
|
||
// REG_TWL_INT_ADRS_BATT_INFO,
|
||
REG_TWL_INT_ADRS_IRQ, // 0x10,
|
||
REG_TWL_INT_ADRS_COMMAND,
|
||
REG_TWL_INT_ADRS_MODE,
|
||
REG_TWL_INT_ADRS_POWER_INFO, // 0x20,
|
||
// REG_TWL_INT_ADRS_POWER_SAVE,
|
||
// REG_TWL_INT_ADRS_WIFI, // 0x30,
|
||
REG_TWL_INT_ADRS_CAM,
|
||
REG_TWL_INT_ADRS_VOL, // 0x40,
|
||
// REG_TWL_INT_ADRS_BL,
|
||
// REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50,
|
||
// REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB, // 0x60,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB_STATUS,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB_VALUE,
|
||
// REG_TWL_INT_ADRS_POWER_LED,
|
||
REG_TWL_INT_ADRS_TEMP0, // 0x70 - 0x77
|
||
REG_TWL_INT_ADRS_TEMP1,
|
||
REG_TWL_INT_ADRS_TEMP2,
|
||
REG_TWL_INT_ADRS_TEMP3,
|
||
REG_TWL_INT_ADRS_TEMP4,
|
||
REG_TWL_INT_ADRS_TEMP5,
|
||
REG_TWL_INT_ADRS_TEMP6,
|
||
REG_TWL_INT_ADRS_TEMP7,
|
||
// REG_TWL_INT_ADRS_TIME_PWSW_DELAY,
|
||
// REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD
|
||
_REG_TWL_INT_ADRS_ENDMARK,
|
||
};
|
||
|
||
|
||
|
||
/* ========================================================================= */
|
||
#define is_TWL ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x01 )
|
||
#define with_NAND ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x02 )
|
||
#define volSteps32 ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x80 )
|
||
|
||
#define reg_wifi_led ( vreg_twl[ REG_TWL_INT_ADRS_WIFI ] & 0x01 )
|
||
#define reg_wifi_led_blink ( vreg_twl[ REG_TWL_INT_ADRS_WIFI ] & 0x02 )
|
||
|
||
#define REG_TWL_ADRS_MODE__VOL32 ( 1 << 7 )
|
||
|
||
typedef enum CAM_LED_TWL_MODE
|
||
{
|
||
TWL_CAMLED_OFF,
|
||
TWL_CAMLED_ON,
|
||
TWL_CAMLED_BLINK,
|
||
TWL_CAMLED_DEF_ON
|
||
}twl_camLed_mode;
|
||
|
||
|
||
/* ========================================================================= */
|
||
void vreg_twl_init( );
|
||
void vreg_twl_write( u8 adrs, u8 data );
|
||
u8 adrs_table_twl_ext2int( u8 img );
|
||
u8 vreg_twl_read( u8 phy_adrs );
|
||
|
||
|
||
// 読んだらクリアなどの処理
|
||
#define vreg_twl_after_read( reg_adrs ); \
|
||
if( reg_adrs == REG_TWL_INT_ADRS_IRQ ) \
|
||
{ \
|
||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0;\
|
||
}
|
||
|
||
#endif
|