/*================================================================ Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved. Quectel Wireless Solutions Proprietary and Confidential. =================================================================*/ /** ****************************************************************************** * @file ql_gpio.c * @author Juson.zhang * @version V1.0.0 * @date 2019/12/17 * @brief This file contains the gpio functions's definitions ****************************************************************************** */ #include #include "xscale_types.h" #include "ql_gpio.h" #include "quec_gpio.h" int ql_gpio_init(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E pin_dir, PIN_PULL_E pin_pull, PIN_LEVEL_E pin_level) { int ret = 0; ret = quec_gpio_init(gpio_num, pin_dir, pin_pull, pin_level); return ret; } /*Fias 2022-4-29 gpio input 32Khz (32787Hz)*/ int ql_gpio_map_clock(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_gpio_map_clock(gpio_num); return ret; } int ql_gpio_deinit(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_gpio_deinit(gpio_num); return ret; } int ql_gpio_set_level(GPIO_PIN_NUMBER_E gpio_num, PIN_LEVEL_E pin_level) { int ret = 0; ret = quec_gpio_set_level(gpio_num, pin_level); return ret; } int ql_gpio_get_level(GPIO_PIN_NUMBER_E gpio_num, PIN_LEVEL_E *p_pin_level) { int ret = 0; ret = quec_gpio_get_level(gpio_num, p_pin_level); return ret; } int ql_gpio_set_drv_level(GPIO_PIN_NUMBER_E gpio_num, QL_PIN_DRIVE_LEVEL_E drive_level) { int ret = 0; ret = quec_gpio_set_drive_level(gpio_num, drive_level); return ret; } int ql_gpio_get_drv_level(GPIO_PIN_NUMBER_E gpio_num, QL_PIN_DRIVE_LEVEL_E* drive_level) { int ret = 0; ret = quec_gpio_get_drive_level(gpio_num, drive_level); return ret; } int ql_gpio_set_direction(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E pin_dir) { int ret = 0; ret = quec_gpio_set_direction(gpio_num, pin_dir); return ret; } int ql_gpio_get_direction(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E *p_pin_dir) { int ret = 0; ret = quec_gpio_get_direction(gpio_num, p_pin_dir); return ret; } int ql_gpio_set_pull(GPIO_PIN_NUMBER_E gpio_num, PIN_PULL_E pin_pull) { int ret = 0; ret = quec_gpio_set_pull(gpio_num, pin_pull); return ret; } int ql_gpio_get_pull(GPIO_PIN_NUMBER_E gpio_num, PIN_PULL_E *p_pin_pull) { int ret = 0; ret = quec_gpio_get_pull(gpio_num, p_pin_pull); return ret; } int ql_pin_set_func(GPIO_PIN_NUMBER_E gpio_num, unsigned char func_sel) { int ret = 0; ret = quec_pin_set_func(gpio_num, func_sel); return ret; } void ql_active_gpio_hisr(unsigned int gpio_num) { quec_active_gpio_hisr(gpio_num); } int ql_eint_register(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge, PIN_PULL_E pin_pull, void *eint_cb, void *wakeup_eint_cb) { int ret = 0; ret = quec_eint_register(gpio_num, pin_edge, pin_pull, eint_cb, wakeup_eint_cb); return ret; } int ql_eint_unregister(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_eint_unregister(gpio_num); return ret; } int ql_eint_enable(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge) { int ret = 0; ret = quec_eint_enable(gpio_num, pin_edge); return ret; } int ql_eint_disable(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_eint_disable(gpio_num); return ret; } int ql_eint_enable_wakeup(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge) { int ret = 0; ret = quec_eint_enable_wakeup(gpio_num, pin_edge); return ret; } int ql_eint_disable_wakeup(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_eint_disable_wakeup(gpio_num); return ret; } /*somer.zhang-2020/05/11-set pmic gpio out high level(1) or low level(0)*/ //此接口是设置PMIC芯片上的GPIO,ECxxxY系列采用PM813电源原理芯片才有此功能 int ql_set_pmic_gpio_level(QL_PIMC_GPIO_E PINx,unsigned char level) { int ret = 0; ret = quec_set_pmic_gpio_level(PINx, level); return ret; } int ql_set_usim2_io_vol(char onoff, QL_USIM2_IO_E vol) { int ret = 0; ret = quec_set_usim2_io_vol(onoff, vol); return ret; } #ifdef QL_GNSS #include "gps_channel.h" //20230807 和芯gnss rom1 or rom2 check 后续新增和芯gnss项目须在此接口中添加项目宏控 //20231011 增加gnss_type 3类型:ROM2 OC不接备电 int quec_gnss_type_check(void) { int gnss_type; #if defined (__QUECTEL_PROJECT_EC800MCN_GC__) || defined(__QUECTEL_PROJECT_EC800MCN_GA__)\ || defined (__QUECTEL_PROJECT_EC800MCN_GM__) || defined(__QUECTEL_PROJECT_EG810MCN_GA__)\ || defined (__QUECTEL_PROJECT_EC600MCN_GC__) gnss_type = 1; //ROM1 #elif defined(__QUECTEL_PROJECT_EC800MCN_GD__) || defined (__QUECTEL_PROJECT_EC800MCN_GB__) ||defined (__QUECTEL_PROJECT_EG800AKCN_11LG__)\ ||defined (__QUECTEL_PROJECT_EG800AKEU_11LG__)||defined (__QUECTEL_PROJECT_EG800AKCN_11LN__)|| defined(__QUECTEL_PROJECT_EG915NLA_GK__)\ ||defined (__QUECTEL_PROJECT_EG800AKLA_11LG__)||defined (__QUECTEL_PROJECT_EG600AKCN_11LG__) gnss_type = 2; //ROM2 #else gnss_type = 1; #endif return gnss_type; } int quec_boardcfg_gnss_pin_init(quec_gps_gpio_struct_t *gpio_pin) { if(NULL == gpio_pin) return -1; gpio_pin->tx = GPIO_PIN_NO_74; gpio_pin->rx = GPIO_PIN_NO_73; #if defined(__QUECTEL_PROJECT_EC600MCN_GC__) gpio_pin->rst = GPIO_PIN_NO_3; gpio_pin->pwr_en = GPIO_PIN_NO_120; #elif defined(__QUECTEL_PROJECT_EG800AKCN_11LG__)||defined (__QUECTEL_PROJECT_EG800AKEU_11LG__)||defined (__QUECTEL_PROJECT_EG800AKCN_11LN__)\ || defined (__QUECTEL_PROJECT_EG800AKLA_11LG__)||defined (__QUECTEL_PROJECT_EG600AKCN_11LG__) gpio_pin->tx = GPIO_PIN_NO_3; gpio_pin->rx = GPIO_PIN_NO_2; gpio_pin->rst = GPIO_PIN_NO_57; gpio_pin->pwr_en = GPIO_PIN_NO_87; #elif defined(__QUECTEL_PROJECT_EG915NLA_GK__) gpio_pin->tx = GPIO_PIN_36; gpio_pin->rx = GPIO_PIN_35; gpio_pin->rst = GPIO_PIN_20; gpio_pin->pwr_en = GPIO_PIN_11; #else gpio_pin->rst = GPIO_PIN_NO_71; #endif return 0; } #endif int HOST_RESET_GPS_GPIO; int HOST_RESET_FUNC_MFPR; int HOST_WAKE_GPS_GPIO; int HOST_WAKE_GPS_FUNC_MFPR; int GPS_WAKE_HOST_GPIO; int GPS_WAKE_HOST_FUNC_MFPR; #include "quec_asr_gps_support.h" void quec_asr_gnss_pin_init(void) { #ifdef QUEC_GPS_SUPPORT #if !defined(CRANELS_SUPPORT) && !defined(CRANELG_SUPPORT) && !defined(CRANELRH_SUPPORT) //外置 #if defined(JACANA_ASR1606L_DKB_V10_ASR) HOST_RESET_GPS_GPIO = GPIO_PIN_NO_121; //gps复位引脚 GPS_WAKE_HOST_GPIO = GPIO_PIN_NO_119; //gps唤醒主机 HOST_WAKE_GPS_GPIO=GPIO_PIN_NO_120; //主机唤醒gps引脚 HOST_RESET_FUNC_MFPR=0; GPS_WAKE_HOST_FUNC_MFPR =1; HOST_WAKE_GPS_FUNC_MFPR = 1; #elif defined(JACANA_ASR1602_DKB_V10_ASR) HOST_RESET_GPS_GPIO = GPIO_PIN_NO_87; //gps复位引脚 GPS_WAKE_HOST_GPIO = GPIO_PIN_NO_84; //gps唤醒主机 #if defined (__QUECTEL_PROJECT_EG915KEU_LA__) || defined (__QUECTEL_PROJECT_EG915KEU_LG__) || defined (__QUECTEL_PROJECT_EG915KLA_LG__) HOST_WAKE_GPS_GPIO = GPIO_PIN_NO_89; //主机唤醒gps引脚 #else HOST_WAKE_GPS_GPIO = GPIO_PIN_NO_86; //主机唤醒gps引脚 #endif HOST_RESET_FUNC_MFPR=1; GPS_WAKE_HOST_FUNC_MFPR =1; HOST_WAKE_GPS_FUNC_MFPR = 1; #else #error "gnss gpio no init" #endif asr_gnss_pin_init(); #endif #endif } int ql_sfp_eint_register(GPIO_PIN_NUMBER_E gpio_num, void *wakeup_eint_cb) { return quec_sfp_eint_register(gpio_num,wakeup_eint_cb); } int ql_sfp_eint_unregister(GPIO_PIN_NUMBER_E gpio_num) { return quec_sfp_eint_unregister(gpio_num); } int ql_peripherals_pin_not_config(GPIO_PIN_NUMBER_E gpio_num) { int ret = 0; ret = quec_peripherals_pin_not_config(gpio_num); return ret; }