mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-18 16:45:33 -04:00

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@539 013db118-44a6-b54f-8bf7-843cb86687b1
323 lines
9.8 KiB
C
323 lines
9.8 KiB
C
#ifndef __vreg_ctr__
|
|
#define __vreg_ctr__
|
|
/*
|
|
|
|
|
|
$Id$
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
// VREG_C_MCU_STATUS
|
|
// bit[7.6] twl.sys_modeの[1.0] ctrから書けないが、fcr_reset時に適当にリセット
|
|
// bit[5] 〃 [7] ctrから書けないが、fcr_reset時に適当にリセット
|
|
#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 )
|
|
#define REG_BIT_RTC_BLACKOUT ( 1 << 0 )
|
|
|
|
|
|
// VREG_C_STATUS,
|
|
#define REG_BIT_LCD_POW ( 1 << 7 )
|
|
#define REG_BIT_BL_U ( 1 << 6 )
|
|
#define REG_BIT_BL_L ( 1 << 5 )
|
|
#define REG_BIT_BATT_CHARGE ( 1 << 4 )
|
|
#define REG_BIT_POW_SUPPLY ( 1 << 3 )
|
|
// 未使用 ( 1 << 2 )
|
|
#define REG_BIT_ST_SHELL_OPEN ( 1 << 1 )
|
|
// 未使用 ( 1 << 0 )
|
|
|
|
|
|
// VREG_C_STATUS_X
|
|
// 未使用 ( 1 << 6 )
|
|
// 未使用 ( 1 << 5 )
|
|
#define REG_BIT_WIFI_TX ( 1 << 4 )
|
|
// twl bl のミラー[1: ( 1 << 3 )
|
|
// 0]( 1 << 2 )
|
|
#define REG_BIT_ACCERO_ERR ( 1 << 1 )
|
|
#define REG_BIT_MGIC_ERR ( 1 << 0 )
|
|
|
|
#define REG_BIT_MASK_STATUS1_NTR_PM_REG 0x0C
|
|
|
|
|
|
// VREG_C_IRQ0
|
|
#define REG_BIT_IRQ_WDT_RESET ( 1 << 7 )
|
|
#define REG_BIT_SHELL_OPEN ( 1 << 6 )
|
|
#define REG_BIT_SHELL_CLOSE ( 1 << 5 )
|
|
#define REG_BIT_SW_WIFI_CLICK ( 1 << 4 )
|
|
#define REG_BIT_SW_HOME_RELEASE ( 1 << 3 )
|
|
#define REG_BIT_SW_HOME_CLICK ( 1 << 2 )
|
|
#define REG_BIT_SW_POW_HOLD ( 1 << 1 )
|
|
#define REG_BIT_SW_POW_CLICK ( 1 << 0 )
|
|
|
|
// VREG_C_IRQ1
|
|
#define REG_BIT_BT_CHG_START ( 1 << 7 )
|
|
#define REG_BIT_BT_CHG_STOP ( 1 << 6 )
|
|
#define REG_BIT_BT_REMAIN ( 1 << 5 )
|
|
#define REG_BIT_ACC_DAT_RDY ( 1 << 4 )
|
|
#define REG_BIT_ACC_ACK ( 1 << 3 )
|
|
#define REG_BIT_RTC_ALARM ( 1 << 2 )
|
|
#define REG_BIT_BT_DC_CONNECT ( 1 << 1 )
|
|
#define REG_BIT_BT_DC_DISC ( 1 << 0 )
|
|
|
|
// VREG_C_IRQ2
|
|
#define REG_BIT_TWL_VER_READ ( 1 << 7 )
|
|
//#define REG_BIT_TWL_SNDVOL_CHANGE ( 1 << 6 ) 廃止
|
|
#define REG_BIT_SLIDE_VOL_ACROSS_TWL_BOUNDARY ( 1 << 6 )
|
|
#define REG_BIT_TWL_BL_U_ON ( 1 << 5 )
|
|
#define REG_BIT_TWL_BL_U_OFF ( 1 << 4 )
|
|
#define REG_BIT_TWL_BL_L_ON ( 1 << 3 )
|
|
#define REG_BIT_TWL_BL_L_OFF ( 1 << 2 )
|
|
#define REG_BIT_TWL_OFF_REQ ( 1 << 1 )
|
|
#define REG_BIT_TWL_RESET_REQ ( 1 << 0 )
|
|
|
|
// VREG_C_IRQ3
|
|
#define REG_BIT_BL_U_ON ( 1 << 5 )
|
|
#define REG_BIT_BL_U_OFF ( 1 << 4 )
|
|
#define REG_BIT_BL_L_ON ( 1 << 3 )
|
|
#define REG_BIT_BL_L_OFF ( 1 << 2 )
|
|
#define REG_BIT_LCD_ON ( 1 << 1 )
|
|
#define REG_BIT_LCD_OFF ( 1 << 0 )
|
|
|
|
|
|
// そのうちどこかに...
|
|
//#define REG_BIT_VR_3D_CHANGE ( 1 << 7 )
|
|
|
|
|
|
|
|
// VREG_C_COMMAND0
|
|
//#define REG_BIT_CMD_LCD_ON ( 1 << 7 )
|
|
//#define REG_BIT_CMD_LCD_OFF ( 1 << 6 )
|
|
//#define REG_BIT_CMD_BL_ON ( 1 << 5 )
|
|
//#define REG_BIT_CMD_BL_OFF ( 1 << 4 )
|
|
#define REG_BIT_GOING_TO_SLEEP ( 1 << 4 )
|
|
#define REG_BIT_FCRAM_RESET_REQ ( 1 << 3 )
|
|
#define REG_BIT_RESET2_REQ ( 1 << 2 )
|
|
#define REG_BIT_RESET1_REQ ( 1 << 1 )
|
|
#define REG_BIT_OFF_REQ ( 1 << 0 )
|
|
|
|
// VREG_C_COMMAND1 (TWLに割り込みを入れる)
|
|
// 未使用 ( 1 << 7 )
|
|
// 未使用 ( 1 << 6 )
|
|
#define REG_BIT_SEND_TWL_VOL_CLICK ( 1 << 5 )
|
|
#define REG_BIT_SEND_TWL_BATT_EMPTY ( 1 << 4 )
|
|
#define REG_BIT_SEND_TWL_BATT_LOW ( 1 << 3 )
|
|
#define REG_BIT_SEND_TWL_OFF_DET ( 1 << 2 )
|
|
#define REG_BIT_SEND_TWL_RESET_DET ( 1 << 1 )
|
|
#define REG_BIT_SEND_TWL_PWSW_DET ( 1 << 0 )
|
|
|
|
// VREG_C_COMMAND2 液晶関係
|
|
#define REG_BIT_CMD_BL_U_ON ( 1 << 5 )
|
|
#define REG_BIT_CMD_BL_U_OFF ( 1 << 4 )
|
|
#define REG_BIT_CMD_BL_L_ON ( 1 << 3 )
|
|
#define REG_BIT_CMD_BL_L_OFF ( 1 << 2 )
|
|
#define REG_BIT_CMD_LCD_ON ( 1 << 1 )
|
|
#define REG_BIT_CMD_LCD_OFF ( 1 << 0 )
|
|
#define REG_BITS_CMD_BL ( REG_BIT_CMD_BL_U_ON | REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_ON | REG_BIT_CMD_BL_L_OFF )
|
|
|
|
|
|
// ↑TWLに通知するIRQレジスタ
|
|
#define REG_BIT_TWL_IRQ_PWSW_DET 0x08
|
|
#define REG_BIT_TWL_IRQ_RESET 0x01
|
|
#define REG_BIT_TWL_IRQ_OFF 0x02
|
|
#define REG_BIT_TWL_IRQ_BT_LOW 0x20
|
|
#define REG_BIT_TWL_IRQ_BT_EMPTY 0x10
|
|
#define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40
|
|
|
|
|
|
// CODEC上のPMIC NTR の代理レジスタ
|
|
#define REG_BIT_TWL_REQ_OFF ( 1 << 6 )
|
|
#define REG_BIT_TWL_REQ_BL_U ( 1 << 3 )
|
|
#define REG_BIT_TWL_REQ_BL_L ( 1 << 2 )
|
|
#define REG_BIT_TWL_REQ_RESET ( 1 << 0 )
|
|
|
|
|
|
// VREG_C_LED_NOTIFY_FLAG
|
|
#define REG_BIT_IN_LOOP ( 1 << 0 )
|
|
|
|
// HAL bitfields 0
|
|
#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 )
|
|
#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 )
|
|
//#define REG_BIT_HAL0_PM_IRQ_n // 使わない
|
|
#define REG_BIT_HAL0_RSV_5 ( 1 << 5 )
|
|
#define REG_BIT_HAL0_WL_TX ( 1 << 4 )
|
|
#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) // statusにあります
|
|
#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 )
|
|
#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 )
|
|
#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 )
|
|
|
|
|
|
// HAL bitfields 1
|
|
#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 )
|
|
#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 )
|
|
#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 )
|
|
#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 )
|
|
|
|
|
|
// VREG_C_WIFI_CALIB
|
|
#define REG_BIT_WIFI_CALIB_32K_HI_Z ( 1 << 1 )
|
|
#define REG_BIT_WIFI_CALIB_RSTS_AST ( 1 << 0 )
|
|
|
|
|
|
/*
|
|
テンプレ
|
|
#define REG_BIT_ ( 1 << 7 )
|
|
#define REG_BIT_ ( 1 << 6 )
|
|
#define REG_BIT_ ( 1 << 5 )
|
|
#define REG_BIT_ ( 1 << 4 )
|
|
#define REG_BIT_ ( 1 << 3 )
|
|
#define REG_BIT_ ( 1 << 2 )
|
|
#define REG_BIT_ ( 1 << 1 )
|
|
#define REG_BIT_ ( 1 << 0 )
|
|
*/
|
|
|
|
|
|
|
|
/*============================================================================*/
|
|
extern u8 vreg_ctr[];
|
|
|
|
/*============================================================================*/
|
|
enum VREG_C_ADRS
|
|
{ // 未定義アドレスへ書き込んだ際の動作は不定
|
|
VREG_C_MCU_VER_MAJOR = 0x00,
|
|
VREG_C_MCU_VER_MINOR,
|
|
VREG_C_MCU_STATUS,
|
|
|
|
VREG_C_VCOM_T = 0x03,
|
|
VREG_C_VCOM_B,
|
|
|
|
VREG_C_DBG01 = 0x05,
|
|
VREG_C_DBG02,
|
|
VREG_C_DBG03,
|
|
|
|
VREG_C_3D = 0x08,
|
|
VREG_C_SND_VOL,
|
|
VREG_C_BT_TEMP,
|
|
VREG_C_BT_REMAIN,
|
|
VREG_C_BT_REMAIN_FINE,
|
|
VREG_C_BT_VOLTAGE,
|
|
|
|
VREG_C_STATUS_1 = 0x0E,
|
|
VREG_C_STATUS = 0x0F,
|
|
|
|
VREG_C_IRQ0 = 0x10,
|
|
VREG_C_IRQ1,
|
|
VREG_C_IRQ2,
|
|
VREG_C_IRQ3,
|
|
VREG_C_IRQ4,
|
|
|
|
VREG_C_IRQ_MASK0 = 0x18,
|
|
VREG_C_IRQ_MASK1,
|
|
VREG_C_IRQ_MASK2,
|
|
VREG_C_IRQ_MASK3,
|
|
VREG_C_IRQ_MASK4,
|
|
|
|
VREG_C_COMMAND0 = 0x20,
|
|
VREG_C_COMMAND1,
|
|
VREG_C_COMMAND2,
|
|
VREG_C_COMMAND3, // 'r' でマイコンリセット、 'w' でWDTリセット
|
|
|
|
VREG_C_OFF_DELAY = 0x24,
|
|
// VREG_C_VOL_DIGITAL = 0x25, // todo 消すよ
|
|
// VREG_C_VOL_OPTION,
|
|
VREG_C_VOL_ADC_RAW = 0x27,
|
|
|
|
VREG_C_LED_BRIGHT = 0x28,
|
|
VREG_C_LED_POW,
|
|
VREG_C_LED_WIFI,
|
|
VREG_C_LED_CAM,
|
|
VREG_C_LED_3D,
|
|
VREG_C_LED_NOTIFY_DATA,
|
|
VREG_C_LED_NOTIFY_FLAG,
|
|
|
|
VREG_C_RBR_CONTROL = 0x2F, // 廃止
|
|
|
|
VREG_C_RTC_SEC = 0x30,
|
|
VREG_C_RTC_MIN,
|
|
VREG_C_RTC_HOUR,
|
|
VREG_C_RTC_YOBI,
|
|
VREG_C_RTC_DAY,
|
|
VREG_C_RTC_MONTH,
|
|
VREG_C_RTC_YEAR,
|
|
|
|
VREG_C_RTC_COMP,
|
|
|
|
VREG_C_RTC_ALARM_MIN = 0x38,
|
|
VREG_C_RTC_ALARM_HOUR,
|
|
VREG_C_RTC_ALARM_DAY,
|
|
VREG_C_RTC_ALARM_MONTH,
|
|
VREG_C_RTC_ALARM_YEAR,
|
|
|
|
VREG_C_RTC_SEC_FINE_L,
|
|
VREG_C_RTC_SEC_FINE_H,
|
|
|
|
VREG_C_WIFI_CALIB = 0x3F,
|
|
|
|
VREG_C_ACC_CONFIG = 0x40,
|
|
VREG_C_ACC_R_ADRS,
|
|
VREG_C_ACC_RESERVE,
|
|
VREG_C_ACC_W_ADRS,
|
|
VREG_C_ACC_W_BUF, // r,w 共用
|
|
|
|
VREG_C_ACC_XL = 0x45,
|
|
VREG_C_ACC_XH,
|
|
VREG_C_ACC_YL,
|
|
VREG_C_ACC_YH,
|
|
VREG_C_ACC_ZL,
|
|
VREG_C_ACC_ZH,
|
|
|
|
VREG_C_ACC_HOSU_L = 0x4B,
|
|
VREG_C_ACC_HOSU_M,
|
|
VREG_C_ACC_HOSU_H,
|
|
VREG_C_ACC_HOSU_SETTING,
|
|
VREG_C_ACC_HOSU_HIST = 0x4F,
|
|
|
|
VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50,
|
|
VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC,
|
|
|
|
VREG_C_HAL_OVW_CONT0 = 0x52,
|
|
VREG_C_HAL_OVW_DAT0,
|
|
VREG_C_HAL_OVW_CONT1, // reserved
|
|
VREG_C_HAL_OVW_DAT1, // reserved
|
|
|
|
VREG_C_HAL_OVW_BT_FUEL = 0x56,
|
|
VREG_C_HAL_OVW_BT_VOLTAGE,
|
|
|
|
VREG_C_VOL_CAL_MIN = 0x58,
|
|
VREG_C_VOL_CAL_MAX,
|
|
|
|
VREG_C_HAL_OVW_TEMPERATURE = 0x5A,
|
|
|
|
VREG_C_ENDMARK_
|
|
};
|
|
|
|
// ↓間は抜けにして、メモリも確保しないために 別に define してる
|
|
#define VREG_CX_INFO 0x7F
|
|
#define VREG_CX_FREE_ADRS 0x60
|
|
#define VREG_CX_FREE_DATA 0x61
|
|
// VREG_C_AMBIENT_BRIGHTNESS = 0xXX,
|
|
|
|
|
|
|
|
|
|
/*============================================================================*/
|
|
void vreg_ctr_init( );
|
|
void vreg_ctr_reset( );
|
|
void vreg_ctr_write( u8 adrs, u8 data );
|
|
u8 vreg_ctr_read( u8 phy_adrs );
|
|
void vreg_ctr_after_read( u8 adrs, u8 data );
|
|
void set_irq( u8 irqreg, u8 irq_flg );
|
|
|
|
|
|
#define is_wifi_calib_resets_ast ( vreg_ctr[ VREG_C_WIFI_CALIB ] & REG_BIT_WIFI_CALIB_RSTS_AST )
|
|
#define vreg_stop_acc ( vreg_ctr[ VREG_C_ACC_CONFIG ] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) )
|
|
#define vreg_set_acc_error ( vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR )
|
|
#define is_acc_on ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_ACQ )
|
|
#define is_pedo_on ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU )
|
|
#define is_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR )
|
|
#define vreg_set_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR )
|
|
#define vreg_clear_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] &= ~(REG_BIT_MGIC_ERR) )
|
|
#define is_bt_charging ( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE )
|
|
#define is_shell_open ( vreg_ctr[VREG_C_STATUS] & REG_BIT_ST_SHELL_OPEN )
|
|
|
|
|
|
#endif
|