void bsp_set_pintrl(unsigned int type, unsigned int gpio, unsigned int value) { unsigned int group = 0; unsigned int pin = 0; struct pintrl_stru *normal_stru = NULL; if(gpio > GPIO_TOTAL || (type >= MODEM_IO_BUTT)) { ios_print_error("para is error, gpio = %d, type = %d, value = %d.\n", gpio, type, value); return ; } group = gpio / GPIO_MAX_NUMBER; pin = gpio % GPIO_MAX_NUMBER; normal_stru = get_pintrl(MODEM_PIN_NORMAL, group, pin); if(NULL == normal_stru) { ios_print_error("get_pintrl is fail, normal_stru = 0x%x.\n", normal_stru); return ; } bsp_pinctrl_modify_dts(MODEM_PIN_NORMAL, type, gpio, value); bsp_pinctrl_modify_dts(MODEM_PIN_POWERDOWN, type, gpio, value); pintrl_config(normal_stru, 1); }
static int fem_iocfg_group_gpio(u32 nv_index, u32 mux) { u32 i; int ret; u32 pin_mask = g_femio_info.cfg[nv_index].gpio_ctrl.pin_mask.value; u32 pin_value = g_femio_info.cfg[nv_index].gpio_ctrl.pin_level.level; u32 gpio_num = 0; if((nv_index > FEM_IO_CFG_MAX) || (mux > 1)){ anten_print_error("para error ! nv index is %d,mux is %d\n", nv_index, mux); return -1; } for(i=0; i<FEM_PIN_MAX; i++){ if(pin_mask & ((u32)1 << i)){ gpio_num = rf_pin_to_gpio(i); if(GPIO_NUM_INVAILId == gpio_num){ anten_print_error("get gpio num is error %d!\n",gpio_num); return -1; } /*set pin mux*/ bsp_pinctrl_modify_dts(MODEM_PIN_NORMAL, MODEM_IO_MUX, gpio_num, mux); ret = bsp_pinctrl_mux_set(gpio_num, mux); if(ret){ anten_print_error("set pin mux error! gpio num=%d,mux=%d\n",gpio_num,mux); return ret; } /*if pin is gpio function,set direction and pin level*/ if(0 == mux){ pin_value = (u32)!!(pin_value & ((u32)1<<i)); bsp_pinctrl_modify_dts(MODEM_PIN_NORMAL, MODEM_GPIO_OUTPUT, gpio_num, pin_value); bsp_gpio_direction_output(gpio_num, pin_value); } } } return 0; }