mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
148 lines
4.1 KiB
C
148 lines
4.1 KiB
C
/* ============================================================================
|
||
|
||
TWL互換側のI2Cレジスタ
|
||
|
||
=========================================================================== */
|
||
|
||
#include "incs.h"
|
||
#include "jhl_defs.h"
|
||
#include "vreg_twl.h"
|
||
|
||
|
||
u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
|
||
|
||
|
||
/* ============================================================================
|
||
仮想レジスタの初期化
|
||
=========================================================================== */
|
||
void vreg_twl_init(){
|
||
|
||
#if 0
|
||
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_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
|
||
|
||
#endif
|
||
}
|
||
|
||
|
||
|
||
|
||
//*******************************************************************************
|
||
// I2C仮想レジスタに書きます。
|
||
// 引数 adrs は内部アドレス
|
||
// 存在しないアドレスにアクセスした場合、何もしません。
|
||
void vreg_twl_write( u8 adrs, u8 data ){
|
||
|
||
if( REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD >= adrs ){ // アドレス範囲外
|
||
vreg_twl[ adrs ] = data;
|
||
}
|
||
return;
|
||
}
|
||
|
||
|
||
|
||
//*******************************************************************************
|
||
// I2C仮想レジスタから読みます。
|
||
// 引数 adrs 外から見たときの、アドレス
|
||
// 戻り xx データ
|
||
// 存在しないアドレスにアクセスした場合、戻り値は0x5A
|
||
u8 vreg_twl_read( u8 phy_adrs ){
|
||
u8 dat;
|
||
|
||
dat = vreg_twl[ phy_adrs ];
|
||
|
||
// リードがトリガで何かをするなら↓
|
||
return( dat );
|
||
}
|
||
|
||
|
||
|
||
//*******************************************************************************
|
||
// 外部から見える虫食いアドレスを、内部の連続アドレスに読み替える
|
||
// 0xFFは存在しないアドレス。
|
||
u8 adrs_table_twl_ext2int( u8 img ){
|
||
u8 adrsH, adrsL;
|
||
|
||
adrsH = ( img & 0xF0 );
|
||
adrsL = ( img & 0x0F );
|
||
if( adrsH > 0x80 ){
|
||
return( 0xFF );
|
||
}
|
||
if( adrsH == 0x50 ){
|
||
return( 0xFF );
|
||
}
|
||
|
||
if( adrsH <= 0x30 ){ // 0x00 - 0x3F
|
||
if( adrsH <= 0x10 ){ // 0x00 - 0x1F
|
||
if( adrsH == 0x10 ){ // 0x1*
|
||
if( adrsL <= ( REG_TWL_ADRS_MODE & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_IRQ + adrsL );
|
||
}
|
||
}else{ // 0x0*
|
||
if( adrsL <= ( REG_TWL_ADRS_BATT_INFO & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_VER_INFO + adrsL );
|
||
}
|
||
}
|
||
}else{ // 0x20 - 0x3F
|
||
if( adrsH == 0x20 ){ // 0x2?
|
||
if( adrsL <= ( REG_TWL_ADRS_POWER_SAVE & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_POWER_INFO + adrsL );
|
||
}
|
||
}else{ // 0x3*
|
||
if( adrsL <= ( REG_TWL_ADRS_CAM & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_WIFI + adrsL );
|
||
}
|
||
}
|
||
}
|
||
}else{
|
||
if( adrsH <= 0x60 ){
|
||
if( adrsH == 0x60 ){
|
||
if( adrsL <= ( REG_TWL_ADRS_POWER_LED & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_ADC_CALIB + adrsL );
|
||
}
|
||
}else{ // 40台
|
||
if( adrsL <= ( REG_TWL_ADRS_BL & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_VOL + adrsL );
|
||
}
|
||
}
|
||
}else{
|
||
if( adrsH == 0x70 ){
|
||
if( adrsL <= ( REG_TWL_ADRS_TEMP7 & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_TEMP0 + adrsL );
|
||
}
|
||
}else{ // 80台
|
||
if( adrsL <= ( REG_TWL_ADRS_TIME_PWSW_THRESHOLD & 0x0F ) ){
|
||
return( REG_TWL_INT_ADRS_TIME_PWSW_DELAY + adrsL );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return( 0xFF );
|
||
}
|
||
|