-#include "plat_config_defs.h"\r
-#include "plat_types.h"\r
-#include "intc_api.h"\r
-#include "gpio_api.h"\r
-#include "pmic_api.h"\r\r
-#include "ui_log_api.h"\r\r
-#include "event.h"\r
-#include "ui_os_message.h"\r
-#include "ui_os_api.h"\r
-#include "mfpr_api.h"\r
-#include "base_prv.h"\r
-#include "device_cus.h"\r
-\r
-enum {\r
- VIBRATOR_LEVEL0= 0,\r
- VIBRATOR_LEVEL1= 1,\r
- VIBRATOR_LEVEL2,\r
- VIBRATOR_LEVEL3,\r
- VIBRATOR_LEVEL4,\r
- VIBRATOR_LEVEL5,\r
-};\r
-\r
-//wifi pin config\r
-#define WIFI_SDIO_SLOT1 1\r
-#define WIFI_SDIO_SLOT2 2\r
-#define WIFI_PWR_EN 83\r
-#define WIFI_INT_HOST 34\r
-#define WIFI_PWR_RESET -1\r
-#define WIFI_HOST_WAKE_WIFI -1\r
-#define WIFI_32K_SELECT 1\r
-\r
-#define Evb1601_Pm802ChargerEn_GPIO HAL_GPIO_82\r
-#define Evb1601_Pm802Backlight_GPIO HAL_GPIO_84\r
-#define Evb1601_Pm802ChargerSta_GPIO HAL_GPIO_83\r
-\r
-#define pm812_Charger_enable 70 //gpio70 need config from evb\r
-extern void ChargerStsPinmuxCfg(void);\r
-extern void CameraFlashPinmuxcfg(void);\r
-extern void PM812_PwmSetLevel(UINT8 level);\r
-extern void set_sdcard_power_gpio(UINT8 num);\r
-extern HANDLE get_dev_mon_task(void);\r
-extern void backlight_set_brightness(uint8_t brightness);\r
-extern int sdio_init(int sd_slot, int wifi_pwr_en, int wifi_int_host, int wifi_pwr_reset, \r
- int host_wakeup_wifi, int sys_clk_32k);\r
-extern UINT8 g_mciLcdBrightnessLevel;\r
-\r
-#ifdef CONFIG_LCD_DUAL_PANEL_SUPPORT\r
-volatile unsigned int hallval = 0;\r
-static OS_HISR hall_hisr_ref;\r
-static u8 g_gpio_timerid = INVALID_TIMER_ID;\r
-extern BOOL sub_lcd_flag;\r
-void Os_Create_HISR(VOID** hisr, char* name, VOID (*hisr_entry)(VOID), unsigned char priority);\r
-INT32 Os_Activate_HISR(VOID** hisr);\r
-INT32 Os_Delete_HISR(VOID** hisr);\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CRANEG_A0)\r
-extern void Craneg_pm803_camera_power_Pinmuxcfg(void);\r
-extern void Craneg_pm803Pinmuxcfg(void);\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CUSTOM_B_V01) || defined(CONFIG_BOARD_CUSTOM_B_V02)\r
-#define GPIO_LOCK HAL_GPIO_84\r
-#define GPIO_EXT_PA HAL_GPIO_85\r
-#define GPIO_EN_FM HAL_GPIO_64\r
-#endif\r
-#if defined(CONFIG_BOARD_CUSTOM_X)\r
-#define GPIO_EXT_PA HAL_GPIO_82\r
-#define GPIO_EN_FM HAL_GPIO_81\r
-#endif\r
-#if defined(CONFIG_BOARD_CUSTOM_S)\r
-#define GPIO_EXT_PA HAL_GPIO_33\r
-#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
-#if defined(CONFIG_BOARD_SIMWARE_W61_V2)\r
-#define GPIO_EXT_PA HAL_GPIO_34\r
-#elif defined(CONFIG_BOARD_SIMWARE_W71) || defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)\r
-#define GPIO_EXT_PA HAL_GPIO_28\r
-#else\r
-#define GPIO_EXT_PA HAL_GPIO_75\r
-#endif\r
-#else\r
-#define GPIO_EXT_PA HAL_GPIO_QTY\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CUSTOM_V)\r
-#define GPIO_EN_FM HAL_GPIO_82\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CUSTOM_S)\r
-#define ChargerEnable_GPIO HAL_GPIO_54\r
-#define ChargerSta_GPIO HAL_GPIO_53\r
-#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
-#if defined(CONFIG_BOARD_SIMWARE_W61_V2)\r
-#define ChargerEnable_GPIO HAL_GPIO_3\r
-#define ChargerSta_GPIO HAL_GPIO_4\r
-#elif defined(CONFIG_BOARD_SIMWARE_W71)\r
-#define ChargerEnable_GPIO HAL_GPIO_52\r
-#define ChargerSta_GPIO HAL_GPIO_51\r
-#elif defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)\r
-#define ChargerEnable_GPIO HAL_GPIO_3\r
-#define ChargerSta_GPIO HAL_GPIO_2\r
-#else\r
-#define ChargerEnable_GPIO HAL_GPIO_82\r
-#define ChargerSta_GPIO HAL_GPIO_85\r
-#endif\r
-#else\r
-#define ChargerEnable_GPIO HAL_GPIO_14\r
-#define ChargerSta_GPIO HAL_GPIO_13\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CUSTOM_S)\r
-#define SD_PW_GPIO 70\r
-#elif defined(CONFIG_BOARD_CRANE_1601_EVB)\r
-#define SD_PW_GPIO 75\r
-#elif defined(CONFIG_BOARD_CRANEG_A0)\r
-#define SD_PW_GPIO 70\r
-#else\r
-#define SD_PW_GPIO 255\r
-#endif\r
-\r
-#if defined(CONFIG_BOARD_CUSTOM_S)\r
-#define Vibrator_GPIO HAL_GPIO_86\r
-#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
-#if defined(CONFIG_BOARD_SIMWARE_W61_V2)\r
-#define Vibrator_GPIO HAL_GPIO_6\r
-#elif defined(CONFIG_BOARD_SIMWARE_W71) || defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)\r
-#define Vibrator_GPIO HAL_GPIO_124\r
-#else\r
-#define Vibrator_GPIO HAL_GPIO_32\r
-#endif\r
-#else\r
-#define Vibrator_GPIO 128\r
-#endif\r
-\r
-#if defined(CONFIG_LCD_DUAL_PANEL_SUPPORT)\r
-void HallSwitch(uint32 on_off)\r
-{\r
- UI_EVENT ev;\r
- ev.nEventId = EV_DM_IOCTL_IND;\r
- ev.nParam1 = on_off;\r
- ev.nParam2 = 1;\r
- ev.nParam3 = 0;\r
- //UOS_SendEvent(get_dev_mon_task(), &ev, UOS_WAIT_FOREVER, UOS_EVENT_PRI_NORMAL);\r
- \r
- if (on_off)\r
- sub_lcd_flag = 0;\r
- else\r
- sub_lcd_flag = 1;\r
- dm_SendSwitchLcdMessage(&ev);\r
-}\r
-\r
-void Hall_Detect_Timer(void)\r
-{\r
- unsigned int val;\r
-\r
- val = gpio_get_value(HAL_GPIO_75);\r
-\r
- if(val == hallval){\r
- raw_uart_log("hall status changed, now switch lcd.\n");\r
- HallSwitch(val);\r
- }\r
-\r
- gpio_enable_edge_detection(HAL_GPIO_75, GPIO_TWO_EDGE); \r
-}\r
-\r
-static void hallHisr(void)\r
-{\r
- gpio_disable_edge_detection(HAL_GPIO_75, GPIO_TWO_EDGE);\r
- hallval = gpio_get_value(HAL_GPIO_75);\r
- UOS_StartFunctionTimer_single(g_gpio_timerid, MS_TO_TICKS(300), Hall_Detect_Timer, NULL, "hall detect timer");\r
-}\r
-\r
-void CLAM_EINT_HISR(void)\r
-{\r
- OS_Activate_HISR(&hall_hisr_ref);\r
- return;\r
-}\r
-\r
-void Hall_Create_Timer(void)\r
-{\r
- if(g_gpio_timerid == INVALID_TIMER_ID)\r
- g_gpio_timerid = UOS_get_FunctionTimer();\r
-\r
- return;\r
-}\r
-\r
-void HALL_EINT_Registration(void)\r
-{\r
- gpio_direction_input(HAL_GPIO_75);\r
- gpio_irq_config(HAL_GPIO_75, GPIO_TWO_EDGE, CLAM_EINT_HISR);\r
-}\r
-\r
-void HallEnInit(void)\r
-{\r
- Hall_Create_Timer();\r
- HALL_EINT_Registration();\r
- OS_Create_HISR(&hall_hisr_ref, "HALL_HISR", hallHisr, 2);\r
-}\r
-\r
-unsigned int GetMainLcdOn(void)\r
-{\r
- gpio_direction_input(HAL_GPIO_75);\r
- return gpio_get_value(HAL_GPIO_75);\r
-}\r
-#endif\r
-\r
-#if defined(CONFIG_LOCK_KEY_SUPPORT)\r
-void Lock_irq_hand(void)\r
-{ \r
- raw_uart_log("lock_isr-lock_lisr!\r\n");\r
- if(gpio_get_value(GPIO_LOCK))\r
- {\r
- //raw_uart_log("gpio_get_value=1!\r\n");\r
- }\r
- else\r
- {\r
- //raw_uart_log("gpio_get_value=0!\r\n");\r
- }\r
-}\r
-\r
-void LockInit(void)\r
-{\r
- raw_uart_log("LockInit_###!\r\n");\r
- GpioSetDirection(GPIO_LOCK,GPIO_IN_PIN);//GPIO_IN_PIN-0 HAL_GPIO_14-14\r
- GpioBindInterruptCallback(GPIO_LOCK,Lock_irq_hand);\r
- GpioEnableEdgeDetection(GPIO_LOCK, (GPIOTransitionType)GPIO_RISE_EDGE);\r
- GpioEnableEdgeDetection(GPIO_LOCK, (GPIOTransitionType)GPIO_FALL_EDGE);\r
- raw_uart_log("LockInit_Done!\r\n");\r
-}\r
-#endif\r
-\r
-void SpeakerExtPaEnable(uint32 on)\r
-{\r
- UI_EVENT ev;\r
- ev.nEventId = EV_DM_IOCTL_IND;\r
- ev.nParam1 = on;\r
- ev.nParam2 = 0;\r
- ev.nParam3 = 0;\r
- UOS_SendEvent(get_dev_mon_task(), &ev, UOS_WAIT_FOREVER, UOS_EVENT_PRI_NORMAL);\r
-}\r
-\r
-void SpeakerExtPaInit(void)\r
-{\r
- gpio_direction_output(GPIO_EXT_PA);\r
- gpio_set_value(GPIO_EXT_PA, 0);\r
-}\r
-\r
-void EnableSpeakerPA(uint32 on)\r
-{\r
- int i = 0;\r
- volatile int j = 0;\r
-\r
- if(0 == on) {\r
- gpio_set_value(GPIO_EXT_PA, 0);\r
- //raw_uart_log("test ext pa gpio on: %d\r\n",on);\r
- } else {\r
- //raw_uart_log("test ext pa gpio on: %d\r\n",on);\r
- for (i = 0; i < on; ++i) {\r
- gpio_set_value(GPIO_EXT_PA, 0);\r
- for (j = 0; j < 80; ++j);\r
- gpio_set_value(GPIO_EXT_PA, 1); \r
- for (j = 0; j < 80; ++j);\r
- }\r
- }\r
-}\r
-\r
-void CameraFlashPowerOnOff(unsigned char on_off)\r
-{\r
- if (Pmic_is_pm812()){\r
- CameraFlashPinmuxcfg();\r
- gpio_direction_output(HAL_GPIO_78);\r
- if(0==on_off)\r
- gpio_set_value(HAL_GPIO_78, 0);\r
- else\r
- gpio_set_value(HAL_GPIO_78, 1);\r
- }else if(Pmic_is_pm803()){\r
-#if defined(CONFIG_BOARD_CRANEG_A0)\r
- gpio_direction_output(HAL_GPIO_86);\r
- if(0==on_off)\r
- gpio_set_value(HAL_GPIO_86, 0);\r
- else\r
- gpio_set_value(HAL_GPIO_86, 1); \r
-#endif\r
- }else\r
- PmicTorchLightCtrl(on_off);\r
-}\r
-\r
-void TorchlightSwitch(unsigned char on_off)\r
-{\r
- if(Pmic_is_pm803()){\r
-#if defined(CONFIG_BOARD_CRANEG_A0)\r
- gpio_direction_output(HAL_GPIO_86);\r
- if(on_off)\r
- gpio_set_value(HAL_GPIO_86, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_86, 0);\r
-#endif\r
- }else {\r
- if(on_off)\r
- PmicTorchLightCtrl(10);\r
- else\r
- PmicTorchLightCtrl(0);\r
- }\r
-}\r
-\r
-void TorchlightSwitchOn(void)\r
-{\r
- if(Pmic_is_pm803())\r
- {\r
-#if defined(CONFIG_BOARD_CRANEG_A0)\r
- gpio_direction_output(HAL_GPIO_86);\r
- gpio_set_value(HAL_GPIO_86, 1);\r
-#endif\r
- }\r
- else\r
- PmicTorchLightCtrl(10);\r
-}\r
-\r
-void TorchlightSwitchOff(void)\r
-{\r
- if(Pmic_is_pm803())\r
- {\r
-#if defined(CONFIG_BOARD_CRANEG_A0)\r
- gpio_direction_output(HAL_GPIO_86);\r
- gpio_set_value(HAL_GPIO_86, 0);\r
-#endif\r
- }\r
- else\r
- PmicTorchLightCtrl(0);\r
-}\r
-\r
-void LcdBacklightSwitchOn(void)\r
-{\r
- backlight_set_brightness(g_mciLcdBrightnessLevel);\r
- raw_uart_log("LcdBacklightSwitchOn_###:%d!\r\n",g_mciLcdBrightnessLevel);\r
- //PmicLcdBackLightEnable();\r
-}\r
-\r
-void LcdBacklightSwitchOff(void)\r
-{\r
- backlight_set_brightness(0);\r
- raw_uart_log("LcdBacklightSwitchOff_###!\r\n");\r
- //PmicLcdBackLightDisable();\r
-}\r
-\r
-void CameraPwdn0OnOff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_69);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_69, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_69, 0);\r
-}\r
-\r
-void CameraPwdn1OnOff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_61);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_61, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_61, 0);\r
-}\r
-\r
-void CameraPwdn2OnOff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_66);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_66, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_66, 0);\r
-}\r
-\r
-\r
-void CameraRstOnOff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_70);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_70, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_70, 0);\r
-}\r
-\r
-void BtLdoEnonoff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_16);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_16, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_16, 0);\r
-}\r
-\r
-void KeypadLedonoff(unsigned int on_off)\r
-{\r
- if (Pmic_is_pm812()){\r
- gpio_direction_output(HAL_GPIO_1);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_1, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_1, 0);\r
- }\r
- else if(Pmic_is_pm803()){\r
-#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0)\r
- gpio_direction_output(HAL_GPIO_81);\r
- if(1==on_off)\r
- {\r
- gpio_set_value(HAL_GPIO_81, 1);\r
- }\r
- else\r
- {\r
- gpio_set_value(HAL_GPIO_81, 0);\r
- }\r
-#endif\r
- }\r
- else{\r
- if(1==on_off)\r
- PmickeypadbacklightEnable();\r
- else\r
- PmickeypadbacklightDisable();\r
- }\r
-}\r
-\r
-void KeypadBlackLightSwitchOn(void)\r
-{\r
- //PmickeypadbacklightEnable();\r
- KeypadLedonoff(1);\r
-}\r
-\r
-void KeypadBlackLightSwitchOff(void)\r
-{\r
- //PmickeypadbacklightDisable();\r
- KeypadLedonoff(0);\r
-}\r
-\r
-void ChargerEnonoff(unsigned int on_off)\r
-{\r
- gpio_direction_output(HAL_GPIO_70);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_70, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_70, 0);\r
-}\r
-\r
-void VibratorSetLevel(unsigned int level)\r
-{\r
-#if defined(CONFIG_BOARD_CUSTOM_S)\r
- if(Pmic_is_pm803())\r
- {\r
- gpio_direction_output(HAL_GPIO_86);\r
- if(level)\r
- gpio_set_value(HAL_GPIO_86, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_86, 0);\r
- }\r
- else\r
- PmicVibrateSetLevel(level);\r
-#else\r
- //to be updated by cp released.\r
- if(Pmic_is_pm812())\r
- PM812_PwmSetLevel(level);\r
- else{\r
- PmicVibrateSetLevel(level);\r
- }\r
-#endif\r
-}\r
-\r
-void VibratorSwitchOn(void)\r
-{\r
- raw_uart_log("VibratorSwitchOn.\n");\r
- if(Pmic_is_pm803())\r
- {\r
-#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
- gpio_direction_output(Vibrator_GPIO);\r
- gpio_set_value(Vibrator_GPIO, 1);\r
-#endif\r
- }\r
- else\r
- PmicVibrateSetLevel(VIBRATOR_LEVEL3);\r
-}\r
-\r
-void VibratorSwitchOff(void)\r
-{\r
- raw_uart_log("VibratorSwitchOff.\n");\r
- if(Pmic_is_pm803())\r
- {\r
-#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
- gpio_direction_output(Vibrator_GPIO);\r
- gpio_set_value(Vibrator_GPIO, 0);\r
-#endif\r
- }\r
- else\r
- PmicVibrateSetLevel(VIBRATOR_LEVEL0);\r
-}\r
-\r
-void Evb1601_Pm802ChargerEnonoff(unsigned int on_off)\r
-{\r
- gpio_direction_output(Evb1601_Pm802ChargerEn_GPIO);\r
- if(1==on_off)\r
- gpio_set_value(Evb1601_Pm802ChargerEn_GPIO, 1);\r
- else\r
- gpio_set_value(Evb1601_Pm802ChargerEn_GPIO, 0);\r
-}\r
-\r
-void Evb1601_Pm802Backlightonoff(unsigned int on_off)\r
-{\r
- gpio_direction_output(Evb1601_Pm802Backlight_GPIO);\r
- if(1==on_off)\r
- gpio_set_value(Evb1601_Pm802Backlight_GPIO, 1);\r
- else\r
- gpio_set_value(Evb1601_Pm802Backlight_GPIO, 0);\r
-}\r
-\r
-U32 Evb1601_Pm802GetChargerStatus(void)\r
-{\r
- U32 status;\r
- gpio_direction_input(Evb1601_Pm802ChargerSta_GPIO);\r
- status = gpio_get_value(Evb1601_Pm802ChargerSta_GPIO);\r
- return status;\r
-}\r
-\r
-static U32 GChargerEnableGpioStatus = 0;\r
-void ChargerEnableGpioonoff(unsigned int on_off)\r
-{\r
- gpio_direction_output(ChargerEnable_GPIO);\r
- if(0==on_off)\r
- gpio_set_value(ChargerEnable_GPIO, 1);\r
- else\r
- gpio_set_value(ChargerEnable_GPIO, 0);\r
- GChargerEnableGpioStatus = on_off;\r
-}\r
-\r
-U32 GetChargerEnableGpioStatus(void)\r
-{\r
- //raw_uart_log("GetChargerEnableGpioStatus %d\n",GChargerEnableGpioStatus);\r
- return GChargerEnableGpioStatus;\r
-}\r
-\r
-U32 GetGpioChargerStatus(void)\r
-{\r
- U32 status;\r
- gpio_direction_input(ChargerSta_GPIO);\r
- status = gpio_get_value(ChargerSta_GPIO);\r
- return status;\r
-}\r
-\r
-U32 GetChargeStatus(void)\r
-{\r
- U32 status;\r
- if(Pmic_is_pm813()){\r
- status = Pmic_if_charge_full();\r
- }else if(Pmic_is_pm813s()){\r
- return (pmic_get_charger_fsm() == FSM_TERM); \r
- }else if(Pmic_is_pm802()){\r
-//#if defined(CONFIG_BOARD_CRANEM_EVB)\r
- if(cus_is_board_cranem_evb())\r
- {\r
- status = GetGpioChargerStatus();//Pm803_Eta4256GetChargerStatus();\r
- }\r
- //#else\r
- else\r
- {\r
- status = Evb1601_Pm802GetChargerStatus();\r
- }\r
-//#endif\r
- }else if(Pmic_is_pm803()){\r
- status = GetGpioChargerStatus();//Pm803_Eta4256GetChargerStatus();\r
- }\r
- else{\r
- ChargerStsPinmuxCfg();\r
- gpio_direction_input(HAL_GPIO_57);\r
- status = gpio_get_value(HAL_GPIO_57);\r
- }\r
- return status;\r
-}\r
-\r
-void ForceChargerFinished(BOOL stop)\r
-{\r
- if(Pmic_is_pm802()){\r
- //need add gpio\r
-//#if defined(CONFIG_BOARD_CRANEM_EVB)\r
- if(cus_is_board_cranem_evb())\r
- {\r
- if(stop)\r
- ChargerEnableGpioonoff(0);\r
- else\r
- ChargerEnableGpioonoff(1);\r
- }\r
- //#else\r
- else\r
- {\r
- if(stop)\r
- Evb1601_Pm802ChargerEnonoff(0);\r
- else\r
- Evb1601_Pm802ChargerEnonoff(1);\r
- }\r
-//#endif\r
- }else if(Pmic_is_pm803()){\r
- if(stop)\r
- ChargerEnableGpioonoff(0);\r
- else\r
- ChargerEnableGpioonoff(1);\r
- }else if(Pmic_is_pm812()){\r
- gpio_direction_output(pm812_Charger_enable);\r
- if(stop) \r
- gpio_set_value(pm812_Charger_enable,1);\r
- else\r
- gpio_set_value(pm812_Charger_enable,0);\r
- }else {\r
- Pmic_ChargerFinished(stop);\r
- }\r
-}\r
-\r
-BOOL get_lcdbacklight_status(void)\r
-{\r
- if(Pmic_is_pm803())\r
- return get_BackLightStatus();\r
- else\r
- return get_pmic_lcdbacklight_status();\r
-}\r
-\r
-BOOL get_keypadbacklight_status(void)\r
-{\r
- if(Pmic_is_pm803())\r
- return gpio_get_value(HAL_GPIO_81);\r
- else\r
- return get_pmic_keypadbacklight_status();\r
-}\r
-BOOL get_vibrator_status(void)\r
-{\r
- if(Pmic_is_pm803())\r
- return gpio_get_value(Vibrator_GPIO);\r
- else\r
- return get_pmic_vibrator_status();\r
-}\r
-BOOL get_torchlight_status(void)\r
-{\r
- if(Pmic_is_pm803())\r
- return gpio_get_value(HAL_GPIO_86);\r
- else\r
- return get_pmic_torchlight_status();\r
-}\r
-\r
-#if defined(CONFIG_FM_WITH_EXTERNAL_ANT)\r
-void EnFmAntenanInit(void)\r
-{\r
- gpio_direction_output(GPIO_EN_FM);\r
- gpio_set_value(GPIO_EN_FM,0);\r
-}\r
-\r
-void EnFmAntenan(unsigned int value)\r
-{\r
- gpio_direction_output(GPIO_EN_FM);\r
- if(value)\r
- {\r
- gpio_set_value(GPIO_EN_FM,1);\r
- }\r
- else\r
- {\r
- gpio_set_value(GPIO_EN_FM,0);\r
- }\r
-}\r
-#endif\r
-\r
-#ifdef CONFIG_WIFI_SUPPORT\r
-void WifiInit(void)\r
-{\r
- sdio_init(WIFI_SDIO_SLOT2, WIFI_PWR_EN, WIFI_INT_HOST, \r
- WIFI_PWR_RESET, WIFI_HOST_WAKE_WIFI, WIFI_32K_SELECT);\r
-}\r
-#endif\r
-void GpioCusConfig(void)\r
-{\r
-#if defined(CONFIG_EXT_PA_SUPPORT)\r
- SpeakerExtPaInit();\r
- AudioHAL_AifBindSpeakerPA_CB(SpeakerExtPaEnable);\r
-#endif\r
-\r
-#if defined(CONFIG_FM_WITH_EXTERNAL_ANT)\r
- EnFmAntenanInit();\r
-#endif\r
-\r
-#ifdef CONFIG_LOCK_KEY_SUPPORT\r
- LockInit();\r
-#endif\r
-#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANE_1601_EVB) || defined(CONFIG_BOARD_CRANEG_A0)\r
- if(Pmic_is_pm802() || Pmic_is_pm803())\r
- {\r
- set_sdcard_power_gpio(SD_PW_GPIO);\r
- }\r
-#endif\r
-#if defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
- if(Pmic_is_pm803())\r
- {\r
- Craneg_pm803Pinmuxcfg();\r
- SpeakerExtPaInit();\r
- AudioHAL_AifBindSpeakerPA_CB(SpeakerExtPaEnable);\r
- }\r
-#endif\r
- return;\r
-}\r
-\r
-#if defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)\r
-void CameraIOVddOnOff(unsigned int on_off)\r
-{\r
- Craneg_pm803_camera_power_Pinmuxcfg();\r
- gpio_direction_output(HAL_GPIO_54);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_54, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_54, 0);\r
-}\r
-\r
-void CameraAVddOnOff(unsigned int on_off)\r
-{\r
- Craneg_pm803_camera_power_Pinmuxcfg();\r
- gpio_direction_output(HAL_GPIO_36);\r
- if(1==on_off)\r
- gpio_set_value(HAL_GPIO_36, 1);\r
- else\r
- gpio_set_value(HAL_GPIO_36, 0);\r
-}\r
-#endif\r
+#include "plat_config_defs.h"
+#include "plat_types.h"
+#include "intc_api.h"
+#include "gpio_api.h"
+#include "pmic_api.h"
+
+#include "ui_log_api.h"
+
+#include "event.h"
+#include "ui_os_message.h"
+#include "ui_os_api.h"
+#include "mfpr_api.h"
+#include "base_prv.h"
+#include "device_cus.h"
+
+enum {
+ VIBRATOR_LEVEL0= 0,
+ VIBRATOR_LEVEL1= 1,
+ VIBRATOR_LEVEL2,
+ VIBRATOR_LEVEL3,
+ VIBRATOR_LEVEL4,
+ VIBRATOR_LEVEL5,
+};
+
+//wifi pin config
+#define WIFI_SDIO_SLOT1 1
+#define WIFI_SDIO_SLOT2 2
+#define WIFI_PWR_EN 83
+#define WIFI_INT_HOST 34
+#define WIFI_PWR_RESET -1
+#define WIFI_HOST_WAKE_WIFI -1
+#define WIFI_32K_SELECT 1
+
+#define Evb1601_Pm802ChargerEn_GPIO HAL_GPIO_82
+#define Evb1601_Pm802Backlight_GPIO HAL_GPIO_84
+#define Evb1601_Pm802ChargerSta_GPIO HAL_GPIO_83
+
+#define pm812_Charger_enable 70 //gpio70 need config from evb
+extern void ChargerStsPinmuxCfg(void);
+extern void CameraFlashPinmuxcfg(void);
+extern void PM812_PwmSetLevel(UINT8 level);
+extern void set_sdcard_power_gpio(UINT8 num);
+extern HANDLE get_dev_mon_task(void);
+extern void backlight_set_brightness(uint8_t brightness);
+extern int sdio_init(int sd_slot, int wifi_pwr_en, int wifi_int_host, int wifi_pwr_reset,
+ int host_wakeup_wifi, int sys_clk_32k);
+extern UINT8 g_mciLcdBrightnessLevel;
+
+#ifdef CONFIG_LCD_DUAL_PANEL_SUPPORT
+volatile unsigned int hallval = 0;
+static OS_HISR hall_hisr_ref;
+static u8 g_gpio_timerid = INVALID_TIMER_ID;
+extern BOOL sub_lcd_flag;
+void Os_Create_HISR(VOID** hisr, char* name, VOID (*hisr_entry)(VOID), unsigned char priority);
+INT32 Os_Activate_HISR(VOID** hisr);
+INT32 Os_Delete_HISR(VOID** hisr);
+#endif
+
+#if defined(CONFIG_BOARD_CRANEG_A0)
+extern void Craneg_pm803_camera_power_Pinmuxcfg(void);
+extern void Craneg_pm803Pinmuxcfg(void);
+#endif
+
+#if defined(CONFIG_BOARD_CUSTOM_B_V01) || defined(CONFIG_BOARD_CUSTOM_B_V02)
+#define GPIO_LOCK HAL_GPIO_84
+#define GPIO_EXT_PA HAL_GPIO_85
+#define GPIO_EN_FM HAL_GPIO_64
+#endif
+#if defined(CONFIG_BOARD_CUSTOM_X)
+#define GPIO_EXT_PA HAL_GPIO_82
+#define GPIO_EN_FM HAL_GPIO_81
+#endif
+#if defined(CONFIG_BOARD_CUSTOM_S)
+#define GPIO_EXT_PA HAL_GPIO_33
+#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+#if defined(CONFIG_BOARD_SIMWARE_W61_V2)
+#define GPIO_EXT_PA HAL_GPIO_34
+#elif defined(CONFIG_BOARD_SIMWARE_W71) || defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)
+#define GPIO_EXT_PA HAL_GPIO_28
+#else
+#define GPIO_EXT_PA HAL_GPIO_75
+#endif
+#else
+#define GPIO_EXT_PA HAL_GPIO_QTY
+#endif
+
+#if defined(CONFIG_BOARD_CUSTOM_V)
+#define GPIO_EN_FM HAL_GPIO_82
+#endif
+
+#if defined(CONFIG_BOARD_CUSTOM_S)
+#define ChargerEnable_GPIO HAL_GPIO_54
+#define ChargerSta_GPIO HAL_GPIO_53
+#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+#if defined(CONFIG_BOARD_SIMWARE_W61_V2)
+#define ChargerEnable_GPIO HAL_GPIO_3
+#define ChargerSta_GPIO HAL_GPIO_4
+#elif defined(CONFIG_BOARD_SIMWARE_W71)
+#define ChargerEnable_GPIO HAL_GPIO_52
+#define ChargerSta_GPIO HAL_GPIO_51
+#elif defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)
+#define ChargerEnable_GPIO HAL_GPIO_3
+#define ChargerSta_GPIO HAL_GPIO_2
+#else
+#define ChargerEnable_GPIO HAL_GPIO_82
+#define ChargerSta_GPIO HAL_GPIO_85
+#endif
+#else
+#define ChargerEnable_GPIO HAL_GPIO_14
+#define ChargerSta_GPIO HAL_GPIO_13
+#endif
+
+#if defined(CONFIG_BOARD_CUSTOM_S)
+#define SD_PW_GPIO 70
+#elif defined(CONFIG_BOARD_CRANE_1601_EVB)
+#define SD_PW_GPIO 75
+#elif defined(CONFIG_BOARD_CRANEG_A0)
+#define SD_PW_GPIO 70
+#else
+#define SD_PW_GPIO 255
+#endif
+
+#if defined(CONFIG_BOARD_CUSTOM_S)
+#define Vibrator_GPIO HAL_GPIO_86
+#elif defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+#if defined(CONFIG_BOARD_SIMWARE_W61_V2)
+#define Vibrator_GPIO HAL_GPIO_6
+#elif defined(CONFIG_BOARD_SIMWARE_W71) || defined(CONFIG_BOARD_SIMWARE_A90) || defined(CONFIG_BOARD_SIMWARE_A90SH) || defined(CONFIG_BOARD_SIMWARE_H81)
+#define Vibrator_GPIO HAL_GPIO_124
+#else
+#define Vibrator_GPIO HAL_GPIO_32
+#endif
+#else
+#define Vibrator_GPIO 128
+#endif
+
+#if defined(CONFIG_LCD_DUAL_PANEL_SUPPORT)
+void HallSwitch(uint32 on_off)
+{
+ UI_EVENT ev;
+ ev.nEventId = EV_DM_IOCTL_IND;
+ ev.nParam1 = on_off;
+ ev.nParam2 = 1;
+ ev.nParam3 = 0;
+ //UOS_SendEvent(get_dev_mon_task(), &ev, UOS_WAIT_FOREVER, UOS_EVENT_PRI_NORMAL);
+
+ if (on_off)
+ sub_lcd_flag = 0;
+ else
+ sub_lcd_flag = 1;
+ dm_SendSwitchLcdMessage(&ev);
+}
+
+void Hall_Detect_Timer(void)
+{
+ unsigned int val;
+
+ val = gpio_get_value(HAL_GPIO_75);
+
+ if(val == hallval){
+ raw_uart_log("hall status changed, now switch lcd.\n");
+ HallSwitch(val);
+ }
+
+ gpio_enable_edge_detection(HAL_GPIO_75, GPIO_TWO_EDGE);
+}
+
+static void hallHisr(void)
+{
+ gpio_disable_edge_detection(HAL_GPIO_75, GPIO_TWO_EDGE);
+ hallval = gpio_get_value(HAL_GPIO_75);
+ UOS_StartFunctionTimer_single(g_gpio_timerid, MS_TO_TICKS(300), Hall_Detect_Timer, NULL, "hall detect timer");
+}
+
+void CLAM_EINT_HISR(void)
+{
+ OS_Activate_HISR(&hall_hisr_ref);
+ return;
+}
+
+void Hall_Create_Timer(void)
+{
+ if(g_gpio_timerid == INVALID_TIMER_ID)
+ g_gpio_timerid = UOS_get_FunctionTimer();
+
+ return;
+}
+
+void HALL_EINT_Registration(void)
+{
+ gpio_direction_input(HAL_GPIO_75);
+ gpio_irq_config(HAL_GPIO_75, GPIO_TWO_EDGE, CLAM_EINT_HISR);
+}
+
+void HallEnInit(void)
+{
+ Hall_Create_Timer();
+ HALL_EINT_Registration();
+ OS_Create_HISR(&hall_hisr_ref, "HALL_HISR", hallHisr, 2);
+}
+
+unsigned int GetMainLcdOn(void)
+{
+ gpio_direction_input(HAL_GPIO_75);
+ return gpio_get_value(HAL_GPIO_75);
+}
+#endif
+
+#if defined(CONFIG_LOCK_KEY_SUPPORT)
+void Lock_irq_hand(void)
+{
+ raw_uart_log("lock_isr-lock_lisr!\r\n");
+ if(gpio_get_value(GPIO_LOCK))
+ {
+ //raw_uart_log("gpio_get_value=1!\r\n");
+ }
+ else
+ {
+ //raw_uart_log("gpio_get_value=0!\r\n");
+ }
+}
+
+void LockInit(void)
+{
+ raw_uart_log("LockInit_###!\r\n");
+ GpioSetDirection(GPIO_LOCK,GPIO_IN_PIN);//GPIO_IN_PIN-0 HAL_GPIO_14-14
+ GpioBindInterruptCallback(GPIO_LOCK,Lock_irq_hand);
+ GpioEnableEdgeDetection(GPIO_LOCK, (GPIOTransitionType)GPIO_RISE_EDGE);
+ GpioEnableEdgeDetection(GPIO_LOCK, (GPIOTransitionType)GPIO_FALL_EDGE);
+ raw_uart_log("LockInit_Done!\r\n");
+}
+#endif
+
+void SpeakerExtPaEnable(uint32 on)
+{
+ UI_EVENT ev;
+ ev.nEventId = EV_DM_IOCTL_IND;
+ ev.nParam1 = on;
+ ev.nParam2 = 0;
+ ev.nParam3 = 0;
+ UOS_SendEvent(get_dev_mon_task(), &ev, UOS_WAIT_FOREVER, UOS_EVENT_PRI_NORMAL);
+}
+
+void SpeakerExtPaInit(void)
+{
+ gpio_direction_output(GPIO_EXT_PA);
+ gpio_set_value(GPIO_EXT_PA, 0);
+}
+
+void EnableSpeakerPA(uint32 on)
+{
+ int i = 0;
+ volatile int j = 0;
+
+ if(0 == on) {
+ gpio_set_value(GPIO_EXT_PA, 0);
+ //raw_uart_log("test ext pa gpio on: %d\r\n",on);
+ } else {
+ //raw_uart_log("test ext pa gpio on: %d\r\n",on);
+ for (i = 0; i < on; ++i) {
+ gpio_set_value(GPIO_EXT_PA, 0);
+ for (j = 0; j < 80; ++j);
+ gpio_set_value(GPIO_EXT_PA, 1);
+ for (j = 0; j < 80; ++j);
+ }
+ }
+}
+
+void CameraFlashPowerOnOff(unsigned char on_off)
+{
+ if (Pmic_is_pm812()){
+ CameraFlashPinmuxcfg();
+ gpio_direction_output(HAL_GPIO_78);
+ if(0==on_off)
+ gpio_set_value(HAL_GPIO_78, 0);
+ else
+ gpio_set_value(HAL_GPIO_78, 1);
+ }else if(Pmic_is_pm803()){
+#if defined(CONFIG_BOARD_CRANEG_A0)
+ gpio_direction_output(HAL_GPIO_86);
+ if(0==on_off)
+ gpio_set_value(HAL_GPIO_86, 0);
+ else
+ gpio_set_value(HAL_GPIO_86, 1);
+#endif
+ }else
+ PmicTorchLightCtrl(on_off);
+}
+
+void TorchlightSwitch(unsigned char on_off)
+{
+ if(Pmic_is_pm803()){
+#if defined(CONFIG_BOARD_CRANEG_A0)
+ gpio_direction_output(HAL_GPIO_86);
+ if(on_off)
+ gpio_set_value(HAL_GPIO_86, 1);
+ else
+ gpio_set_value(HAL_GPIO_86, 0);
+#endif
+ }else {
+ if(on_off)
+ PmicTorchLightCtrl(10);
+ else
+ PmicTorchLightCtrl(0);
+ }
+}
+
+void TorchlightSwitchOn(void)
+{
+ if(Pmic_is_pm803())
+ {
+#if defined(CONFIG_BOARD_CRANEG_A0)
+ gpio_direction_output(HAL_GPIO_86);
+ gpio_set_value(HAL_GPIO_86, 1);
+#endif
+ }
+ else
+ PmicTorchLightCtrl(10);
+}
+
+void TorchlightSwitchOff(void)
+{
+ if(Pmic_is_pm803())
+ {
+#if defined(CONFIG_BOARD_CRANEG_A0)
+ gpio_direction_output(HAL_GPIO_86);
+ gpio_set_value(HAL_GPIO_86, 0);
+#endif
+ }
+ else
+ PmicTorchLightCtrl(0);
+}
+
+void LcdBacklightSwitchOn(void)
+{
+ backlight_set_brightness(g_mciLcdBrightnessLevel);
+ raw_uart_log("LcdBacklightSwitchOn_###:%d!\r\n",g_mciLcdBrightnessLevel);
+ //PmicLcdBackLightEnable();
+}
+
+void LcdBacklightSwitchOff(void)
+{
+ backlight_set_brightness(0);
+ raw_uart_log("LcdBacklightSwitchOff_###!\r\n");
+ //PmicLcdBackLightDisable();
+}
+
+void CameraPwdn0OnOff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_69);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_69, 1);
+ else
+ gpio_set_value(HAL_GPIO_69, 0);
+}
+
+void CameraPwdn1OnOff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_61);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_61, 1);
+ else
+ gpio_set_value(HAL_GPIO_61, 0);
+}
+
+void CameraPwdn2OnOff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_66);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_66, 1);
+ else
+ gpio_set_value(HAL_GPIO_66, 0);
+}
+
+
+void CameraRstOnOff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_70);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_70, 1);
+ else
+ gpio_set_value(HAL_GPIO_70, 0);
+}
+
+void BtLdoEnonoff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_16);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_16, 1);
+ else
+ gpio_set_value(HAL_GPIO_16, 0);
+}
+
+void KeypadLedonoff(unsigned int on_off)
+{
+ if (Pmic_is_pm812()){
+ gpio_direction_output(HAL_GPIO_1);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_1, 1);
+ else
+ gpio_set_value(HAL_GPIO_1, 0);
+ }
+ else if(Pmic_is_pm803()){
+#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0)
+ gpio_direction_output(HAL_GPIO_81);
+ if(1==on_off)
+ {
+ gpio_set_value(HAL_GPIO_81, 1);
+ }
+ else
+ {
+ gpio_set_value(HAL_GPIO_81, 0);
+ }
+#endif
+ }
+ else{
+ if(1==on_off)
+ PmickeypadbacklightEnable();
+ else
+ PmickeypadbacklightDisable();
+ }
+}
+
+void KeypadBlackLightSwitchOn(void)
+{
+ //PmickeypadbacklightEnable();
+ KeypadLedonoff(1);
+}
+
+void KeypadBlackLightSwitchOff(void)
+{
+ //PmickeypadbacklightDisable();
+ KeypadLedonoff(0);
+}
+
+void ChargerEnonoff(unsigned int on_off)
+{
+ gpio_direction_output(HAL_GPIO_70);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_70, 1);
+ else
+ gpio_set_value(HAL_GPIO_70, 0);
+}
+
+void VibratorSetLevel(unsigned int level)
+{
+#if defined(CONFIG_BOARD_CUSTOM_S)
+ if(Pmic_is_pm803())
+ {
+ gpio_direction_output(HAL_GPIO_86);
+ if(level)
+ gpio_set_value(HAL_GPIO_86, 1);
+ else
+ gpio_set_value(HAL_GPIO_86, 0);
+ }
+ else
+ PmicVibrateSetLevel(level);
+#else
+ //to be updated by cp released.
+ if(Pmic_is_pm812())
+ PM812_PwmSetLevel(level);
+ else{
+ PmicVibrateSetLevel(level);
+ }
+#endif
+}
+
+void VibratorSwitchOn(void)
+{
+ raw_uart_log("VibratorSwitchOn.\n");
+ if(Pmic_is_pm803())
+ {
+#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+ gpio_direction_output(Vibrator_GPIO);
+ gpio_set_value(Vibrator_GPIO, 1);
+#endif
+ }
+ else
+ PmicVibrateSetLevel(VIBRATOR_LEVEL3);
+}
+
+void VibratorSwitchOff(void)
+{
+ raw_uart_log("VibratorSwitchOff.\n");
+ if(Pmic_is_pm803())
+ {
+#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+ gpio_direction_output(Vibrator_GPIO);
+ gpio_set_value(Vibrator_GPIO, 0);
+#endif
+ }
+ else
+ PmicVibrateSetLevel(VIBRATOR_LEVEL0);
+}
+
+void Evb1601_Pm802ChargerEnonoff(unsigned int on_off)
+{
+ gpio_direction_output(Evb1601_Pm802ChargerEn_GPIO);
+ if(1==on_off)
+ gpio_set_value(Evb1601_Pm802ChargerEn_GPIO, 1);
+ else
+ gpio_set_value(Evb1601_Pm802ChargerEn_GPIO, 0);
+}
+
+void Evb1601_Pm802Backlightonoff(unsigned int on_off)
+{
+ gpio_direction_output(Evb1601_Pm802Backlight_GPIO);
+ if(1==on_off)
+ gpio_set_value(Evb1601_Pm802Backlight_GPIO, 1);
+ else
+ gpio_set_value(Evb1601_Pm802Backlight_GPIO, 0);
+}
+
+U32 Evb1601_Pm802GetChargerStatus(void)
+{
+ U32 status;
+ gpio_direction_input(Evb1601_Pm802ChargerSta_GPIO);
+ status = gpio_get_value(Evb1601_Pm802ChargerSta_GPIO);
+ return status;
+}
+
+static U32 GChargerEnableGpioStatus = 0;
+void ChargerEnableGpioonoff(unsigned int on_off)
+{
+ gpio_direction_output(ChargerEnable_GPIO);
+ if(0==on_off)
+ gpio_set_value(ChargerEnable_GPIO, 1);
+ else
+ gpio_set_value(ChargerEnable_GPIO, 0);
+ GChargerEnableGpioStatus = on_off;
+}
+
+U32 GetChargerEnableGpioStatus(void)
+{
+ //raw_uart_log("GetChargerEnableGpioStatus %d\n",GChargerEnableGpioStatus);
+ return GChargerEnableGpioStatus;
+}
+
+U32 GetGpioChargerStatus(void)
+{
+ U32 status;
+ gpio_direction_input(ChargerSta_GPIO);
+ status = gpio_get_value(ChargerSta_GPIO);
+ return status;
+}
+
+U32 GetChargeStatus(void)
+{
+ U32 status;
+ if(Pmic_is_pm813()){
+ status = Pmic_if_charge_full();
+ }else if(Pmic_is_pm813s()){
+ return (pmic_get_charger_fsm() == FSM_TERM);
+ }else if(Pmic_is_pm802()){
+//#if defined(CONFIG_BOARD_CRANEM_EVB)
+ if(cus_is_board_cranem_evb())
+ {
+ status = GetGpioChargerStatus();//Pm803_Eta4256GetChargerStatus();
+ }
+ //#else
+ else
+ {
+ status = Evb1601_Pm802GetChargerStatus();
+ }
+//#endif
+ }else if(Pmic_is_pm803()){
+ status = GetGpioChargerStatus();//Pm803_Eta4256GetChargerStatus();
+ }
+ else{
+ ChargerStsPinmuxCfg();
+ gpio_direction_input(HAL_GPIO_57);
+ status = gpio_get_value(HAL_GPIO_57);
+ }
+ return status;
+}
+
+void ForceChargerFinished(BOOL stop)
+{
+ if(Pmic_is_pm802()){
+ //need add gpio
+//#if defined(CONFIG_BOARD_CRANEM_EVB)
+ if(cus_is_board_cranem_evb())
+ {
+ if(stop)
+ ChargerEnableGpioonoff(0);
+ else
+ ChargerEnableGpioonoff(1);
+ }
+ //#else
+ else
+ {
+ if(stop)
+ Evb1601_Pm802ChargerEnonoff(0);
+ else
+ Evb1601_Pm802ChargerEnonoff(1);
+ }
+//#endif
+ }else if(Pmic_is_pm803()){
+ if(stop)
+ ChargerEnableGpioonoff(0);
+ else
+ ChargerEnableGpioonoff(1);
+ }else if(Pmic_is_pm812()){
+ gpio_direction_output(pm812_Charger_enable);
+ if(stop)
+ gpio_set_value(pm812_Charger_enable,1);
+ else
+ gpio_set_value(pm812_Charger_enable,0);
+ }else {
+ Pmic_ChargerFinished(stop);
+ }
+}
+
+BOOL get_lcdbacklight_status(void)
+{
+ if(Pmic_is_pm803())
+ return get_BackLightStatus();
+ else
+ return get_pmic_lcdbacklight_status();
+}
+
+BOOL get_keypadbacklight_status(void)
+{
+ if(Pmic_is_pm803())
+ return gpio_get_value(HAL_GPIO_81);
+ else
+ return get_pmic_keypadbacklight_status();
+}
+BOOL get_vibrator_status(void)
+{
+ if(Pmic_is_pm803())
+ return gpio_get_value(Vibrator_GPIO);
+ else
+ return get_pmic_vibrator_status();
+}
+BOOL get_torchlight_status(void)
+{
+ if(Pmic_is_pm803())
+ return gpio_get_value(HAL_GPIO_86);
+ else
+ return get_pmic_torchlight_status();
+}
+
+#if defined(CONFIG_FM_WITH_EXTERNAL_ANT)
+void EnFmAntenanInit(void)
+{
+ gpio_direction_output(GPIO_EN_FM);
+ gpio_set_value(GPIO_EN_FM,0);
+}
+
+void EnFmAntenan(unsigned int value)
+{
+ gpio_direction_output(GPIO_EN_FM);
+ if(value)
+ {
+ gpio_set_value(GPIO_EN_FM,1);
+ }
+ else
+ {
+ gpio_set_value(GPIO_EN_FM,0);
+ }
+}
+#endif
+
+#ifdef CONFIG_WIFI_SUPPORT
+void WifiInit(void)
+{
+ sdio_init(WIFI_SDIO_SLOT2, WIFI_PWR_EN, WIFI_INT_HOST,
+ WIFI_PWR_RESET, WIFI_HOST_WAKE_WIFI, WIFI_32K_SELECT);
+}
+#endif
+void GpioCusConfig(void)
+{
+#if defined(CONFIG_EXT_PA_SUPPORT)
+ SpeakerExtPaInit();
+ AudioHAL_AifBindSpeakerPA_CB(SpeakerExtPaEnable);
+#endif
+
+#if defined(CONFIG_FM_WITH_EXTERNAL_ANT)
+ EnFmAntenanInit();
+#endif
+
+#ifdef CONFIG_LOCK_KEY_SUPPORT
+ LockInit();
+#endif
+#if defined(CONFIG_BOARD_CUSTOM_S) || defined(CONFIG_BOARD_CRANE_1601_EVB) || defined(CONFIG_BOARD_CRANEG_A0)
+ if(Pmic_is_pm802() || Pmic_is_pm803())
+ {
+ set_sdcard_power_gpio(SD_PW_GPIO);
+ }
+#endif
+#if defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+ if(Pmic_is_pm803())
+ {
+ Craneg_pm803Pinmuxcfg();
+ SpeakerExtPaInit();
+ AudioHAL_AifBindSpeakerPA_CB(SpeakerExtPaEnable);
+ }
+#endif
+ return;
+}
+
+#if defined(CONFIG_BOARD_CRANEG_A0) || defined(CONFIG_BOARD_CRANE_EVB_Z2)
+void CameraIOVddOnOff(unsigned int on_off)
+{
+ Craneg_pm803_camera_power_Pinmuxcfg();
+ gpio_direction_output(HAL_GPIO_54);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_54, 1);
+ else
+ gpio_set_value(HAL_GPIO_54, 0);
+}
+
+void CameraAVddOnOff(unsigned int on_off)
+{
+ Craneg_pm803_camera_power_Pinmuxcfg();
+#if CONFIG_BOARD_SIMWARE_H81
+ gpio_direction_output(HAL_GPIO_121);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_121, 1);
+ else
+ gpio_set_value(HAL_GPIO_121, 0);
+#else
+ gpio_direction_output(HAL_GPIO_36);
+ if(1==on_off)
+ gpio_set_value(HAL_GPIO_36, 1);
+ else
+ gpio_set_value(HAL_GPIO_36, 0);
+#endif
+}
+ #endif