[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/peripheral/inc/bmt_sw.h b/mcu/driver/peripheral/inc/bmt_sw.h
new file mode 100644
index 0000000..3728709
--- /dev/null
+++ b/mcu/driver/peripheral/inc/bmt_sw.h
@@ -0,0 +1,429 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2010
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * bmt_sw.h
+ *
+ * Project:
+ * --------
+ * Maui_Software
+ *
+ * Description:
+ * ------------
+ * This file is intends for BMT driver and adaption.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _BMT_SW_H
+#define _BMT_SW_H
+
+#include "drv_features.h"
+#include "chr_parameter.h"
+#include "dcl.h"
+
+// ============================================================ //
+// Definitions for BMT Module Only
+// ============================================================ //
+#if defined(__EVB__)
+#if !defined(DRV_MISC_ADC_FIXED_VBAT_WA)
+#define DRV_MISC_ADC_FIXED_VBAT_WA
+#endif
+#endif
+
+#if(CHR_BATTERY_TYPE == LI_ION_BATTERY)
+#define CHR_WITH_LI_ION_BATTERY
+#else
+#define CHR_WITH_NI_MH_BATTERY
+#endif
+
+/* Battery State */
+#define CHR_PRE 0
+#define CHR_FAST 1
+#define CHR_TOPOFF 2
+#define CHR_BATFULL 3
+#define CHR_ERROR 4
+#define CHR_HOLD 5
+#define CHR_POSTFULL 6
+#define CHR_PRE_FULL_CHECK 7
+
+/* TON, TOFF */
+#define CHRTON 0
+#define CHRTOFF 1
+
+/* Safety Timer Configuration */
+#define BMT_SAFETY_TIMER_ON 1
+#define BMT_SAFETY_TIMER_OFF 0
+
+/* Counts of ADC Measurement */
+#define BMT_EVALUATE_VALUE 10
+
+/* __TC01__ Configuration */
+#if defined(__TC01__)
+#define __DRV_BMT_ALWAYS_PULSE_CHARGING__ // TC01 request pulse charging in CV
+#define __DRV_BMT_ESTIMATIVE_TIMER_ON_TOPOFF__
+#define __DRV_BMT_DISABLE_STOP_TIMER__
+#define __DRV_BMT_CHARGING_COMPLETE_MSG__
+#define __DRV_BMT_REPORT_VBAT_IN_BOOTING__
+
+#if ((!defined(L4_NOT_PRESENT)) && (!defined(__MAUI_BASIC__)) )
+#define __DRV_BATTERY_EXIST_DETECTION__
+// #define BATTERY_EXIST_DETECTION_SW_POLLING_PERIOD_IN_TICK (3250) // 15 sec = (1000/4.615) * 15
+#endif // #if ( (!defined(L4_NOT_PRESENT)) && (!defined(__MAUI_BASIC__)) )
+
+#define __BMT_CHARGE_GUARD_TIME__
+ #define BMT_TOTAL_CHARGE_TIME (6 * 60) // 6 hours = 360 mins
+ #ifdef __BMT_CHARGE_GUARD_TIME__
+ #define BMT_CHARGE_GUARD_TIME_PERIOD (2 * 60 + 50) // 2 hours and 50 mins = 170 mins
+ #if (BMT_CHARGE_GUARD_TIME_PERIOD > BMT_TOTAL_CHARGE_TIME)
+ #error "[BMT]Error!! BMT_TOTAL_CHARGE_TIME should >= BMT_CHARGE_GUARD_TIME_PERIOD!!"
+ #endif
+ #endif // __BMT_CHARGE_GUARD_TIME__
+
+#if defined(__GENERAL_EXTERNAL_CHARGER__)
+
+// Debug mode, take Fac.UART cable as charger
+//#define DEBUG_TREAT_FAC_UART_CABLE_AS_CHARGER
+
+#endif // #if defined(__GENERAL_EXTERNAL_CHARGER__)
+
+
+#else // Else of #if defined(__TC01__)
+
+#define __BMT_PAUSE_CHARGE_STOP_SAFETY_TIMER__
+
+#if defined(__DRV_BMT_BATTERY_LARGER_1600MA__)
+ #define BMT_TOTAL_CHARGE_TIME (12 * 60) // 12 hours = 720 mins
+#elif defined(__DRV_BMT_ULTRA_LOW_COST_CHARGER__)
+ #define BMT_TOTAL_CHARGE_TIME (8 * 60) // 8 hours = 480 mins
+#else
+ #define BMT_TOTAL_CHARGE_TIME (6 * 60) // 6 hours = 360 mins
+#endif //#if defined(__DRV_BMT_ULTRA_LOW_COST_CHARGER__)
+
+#endif // End of #if defined(__TC01__)
+
+// ============================================================ //
+// Useless Definitions
+// ============================================================ //
+/* Power key position */
+#if 0
+#ifndef CANNON
+/* under construction !*/
+#else
+/* under construction !*/
+#endif
+#endif
+
+// ============================================================ //
+// Data structures for BMT Module Only
+// ============================================================ //
+typedef void (* CHR_FUNC)(void);
+
+typedef struct {
+ kal_uint8 TON;/*sec*/
+ kal_uint8 TOFF;/*sec*/
+} CHRTStruct;
+
+/* Customize Charging Parameters */
+typedef struct {
+ kal_int32 TYPICAL_LI_BATTYPE;
+ kal_int32 TYPICAL_NI_BATTYPE;
+ kal_uint32 BATT_EXIST_ADC_THRESHOLD;
+ kal_int32 VCHARGER_HIGH;
+ kal_int32 VCHARGER_LOW;
+ kal_int32 BATTMP_MINUS_40C;
+ kal_int32 BATTMP_0C;
+ kal_int32 BATTMP_45C;
+ kal_int32 ICHARGE_ON_HIGH;
+ kal_int32 ICHARGE_ON_LOW;
+ kal_int32 ICHARGE_OFF_HIGH;
+
+ kal_int32 V_PRE2FAST_THRES;
+ kal_int32 FAST_ICHARGE_HIGHLEVEL; /* 600ma,for table search */
+ kal_int32 FAST_ICHARGE_LOWLEVEL; /* 400ma,for table search */
+ kal_int32 I_TOPOFF2FAST_THRES; /* 250ma,TOPOFF->FAST */
+ kal_int32 I_TOPOFF2FULL_THRES; /* 120ma,TOPOFF->BATFULL */
+
+#if defined(CHR_WITH_LI_ION_BATTERY)
+ kal_int32 V_FAST2TOPOFF_THRES;
+ kal_int32 V_FULL2FAST_THRES; /* BATFULL->FAST */
+ kal_int32 MAX_VBAT_LI;
+ kal_int32 V_PROTECT_HIGH_LI;
+ kal_int32 V_PROTECT_LOW_LI;
+#endif
+
+#if defined(CHR_WITH_NI_MH_BATTERY)
+ kal_int32 V_TEMP_FAST2FULL_THRES_NI; /* 50oC,FAST->BATFULL */
+ kal_int32 V_FULL2FAST_THRES_NI;
+ kal_int32 MAX_VBAT_NI;
+#endif
+
+ /*Time delay*/
+ /* PRE CHARGE ,search table*/
+ /*TON = 3s,TOFF=2s*/
+ kal_uint32 PRE_TON;
+ kal_uint32 PRE_TOFF;
+
+/* FAST CHARGE ,search table*/
+/*TON = 3s,TOFF=0s*/
+ kal_uint32 TOPOFF_TON;
+ kal_uint32 TOPOFF_TOFF;
+#if defined(DRV_BMT_PULSE_CHARGING)
+ kal_uint32 BATPOSTFULL_TWAIT_LI;
+ kal_uint32 BATPOSTFULL_TON_LI;
+ kal_uint32 BATPOSTFULL_TOFF_LI;
+#endif //#if defined(DRV_BMT_PULSE_CHARGING)
+
+#if defined(CHR_WITH_LI_ION_BATTERY)
+ kal_uint32 BATFULL_TON_LI; /*unit : second*/
+ kal_uint32 BATFULL_TOFF_LI;
+#else
+ kal_uint32 BATFULL_TON_NI; /*unit : second*/
+ kal_uint32 BATFULL_TOFF_NI;
+#endif
+ kal_uint32 BATFULL_TOFF;
+ kal_uint32 BATHOLD_OFF;
+ kal_uint32 bmt_measure_discard_time; /*24 ticks*/
+
+ kal_int32 CurrOffset[3];
+/*GPIO control*/
+#ifndef __CUST_NEW__
+ kal_uint8 GPIO_CHRCTRL;
+ kal_uint8 GPIO_BATDET;
+ kal_uint8 GPIO_VIBRATOR;
+#endif /* __CUST_NEW__ */
+ kal_uint8 TONOFFTABLE[6][2];
+ kal_bool bmt_check_battery;
+ kal_bool bmt_check_charger;
+ kal_bool bmt_check_temp;
+ kal_bool bmt_battery_type;
+} bmt_customized_struct;
+
+// ============================================================ //
+// Useless Data structures
+// ============================================================ //
+typedef struct{
+ void (*measure_func)(kal_uint8);
+ void (*read_back)(kal_uint8);
+}BMT_MeasFuncs;
+
+// ============================================================ //
+// Enumeration for BMT Module Only
+// ============================================================ //
+typedef enum{
+ USB_IN_STATE,
+ USB100_STATE,
+ USB500_STATE,
+ USB_OUT_STATE,
+ AC_IN_STATE,
+ AC_OUT_STATE,
+ USB_INIT_STATE
+}bmt_usb_state_enum;
+
+typedef enum{
+ BMT_AC_IN,
+ BMT_USB_IN
+}bmt_usb_charger_enum;
+
+// ============================================================ //
+// Useless Enumeration
+// ============================================================ //
+// Charging status enum
+typedef enum
+{
+ BMT_CHR_STATUS_NONE = 0x00000000,
+ BMT_CHR_STATUS_CHARGE_CURRENT_TOO_HIGH = 0x00000001, // BIT00
+ BMT_CHR_STATUS_CHARGE_CURRENT_TOO_LOW = 0x00000002, // BIT01
+ BMT_CHR_STATUS_DISCHARGE_CURRENT_TOO_HIGH = 0x00000004, // BIT02
+ BMT_CHR_STATUS_CHARGE_VBATTEMP_TOO_HIGH = 0x00000008, // BIT03
+ BMT_CHR_STATUS_CHARGE_VBATTEMP_TOO_LOW = 0x00000010, // BIT04
+ BMT_CHR_STATUS_CHARGE_VBAT_TOO_HIGH = 0x00000020, // BIT05
+ BMT_CHR_STATUS_CHARGE_VCHARGER_TOO_HIGH = 0x00000040, // BIT06
+ BMT_CHR_STATUS_CHARGE_VCHARGER_TOO_LOW = 0x00000080, // BIT07
+ BMT_CHR_STATUS_CHARGE_FULL = 0x00000100, // BIT08
+ BMT_CHR_STATUS_BATT_BAD_CONTACT = 0x00000200, // BIT09
+ BMT_CHR_STATUS_TALK_HOLD = 0x00000400, // BIT10
+
+ BMT_CHR_STATUS_MAX = 0x10000000 // BIT31
+}bmt_chr_status_enum;
+
+
+// ============================================================
+// Exported APIs (Only for BMT Module)
+
+/* For ADC schedule & measure*/
+extern kal_int32 adc_measureVoltage(kal_uint8 chann, double *adc_value);
+
+#ifdef __BMT_CHARGE_GUARD_TIME__
+extern void bmt_set_guardtimer(kal_uint32 tick);
+extern void bmt_stop_guardtimer(void);
+#endif // #ifdef __BMT_CHARGE_GUARD_TIME__
+#if defined(__DRV_BMT_ESTIMATIVE_TIMER_ON_TOPOFF__)
+extern void bmt_set_estimativetimer(kal_uint32 tick);
+extern void bmt_stop_estimativetimer(void);
+#endif // #if defined(__DRV_BMT_ESTIMATIVE_TIMER_ON_TOPOFF__)
+
+extern void bmt_stop_stoptimer(void);
+extern void BMT_Charge(kal_bool data); /* in drv directory */
+extern void bmt_initialize(void);
+extern void bmt_set_chr_current(void);
+extern void bmt_Modify_PowerOn_Type(kal_uint8 power_type);
+extern void bmt_find_and_set_the_nearest_current(PMU_CHR_CURRENT_ENUM SetCurrent);
+extern void bmt_find_and_set_the_nearest_charger_high_voltage(DCL_UINT32 voltage);
+extern kal_uint8 bmt_Get_PowerOn_Type(void);
+extern kal_bool bmt_frequently_check_on_state(void);
+#if defined(DRV_BMT_HW_PRECC_WORKAROUND)
+extern kal_bool bmt_frequently_check_off_state(void);
+#endif
+extern kal_bool BMT_VBatVoltageIsFull(kal_uint32 voltage);
+extern kal_bool BMT_Current_Voltage(DCL_ADC_CHANNEL_TYPE_ENUM ch, kal_uint32 *voltage, double *adc_value);
+extern kal_bool bmt_check_if_bat_on(void);
+extern bmt_usb_charger_enum bmt_IsUSBorCharger(void);
+
+#if defined(__DRV_BATTERY_EXIST_DETECTION__)
+extern kal_uint32 bmt_get_batt_exist_det_period(void);
+#endif // #if defined(__DRV_BATTERY_EXIST_DETECTION__)
+extern DCL_STATUS bmt_get_customized_para(BMT_CTRL_GET_CUSTOMIZED_PARA_T *GetCustomizedPara);
+
+// ============================================================
+// External Variables
+extern bmt_customized_struct *bmt_charging_para;
+extern bmt_customized_struct bmt_custom_chr_def;
+#if defined(DRV_BMT_HW_PRECC_WORKAROUND)
+extern kal_bool SW_Workaround_Flag;
+extern kal_bool Manual_Disable_Charge_Flag;
+extern kal_uint8 HW_Plug_Status;
+#endif
+
+// ============================================================
+// MoDIS parser skip start
+// Exported functions, used by driver level functions
+
+// MoDIS parser skip end
+
+// ============================================================
+// MoDIS parser skip start
+// Unknown functions, maybe previous owner forgot to delete
+
+// MoDIS parser skip end
+
+#if !defined(DRV_BMT_OFF)
+
+#else // !defined(DRV_BMT_OFF)
+
+#endif // !defined(DRV_BMT_OFF)
+
+#endif // End of #ifndef _BMT_SW_H
+