#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