int test_bsp_gpio_direction_output_invalid_value(void) { bsp_gpio_direction_output(GPIO_TEST_NUM, 10); bsp_gpio_direction_output(GPIO_TEST_NUM, -1); return GPIO_OK; }
void pintrl_config(struct pintrl_stru *iocfg_stru, unsigned int length) { unsigned int i; unsigned int uregv, value, addr; unsigned int gpionum = 0; if(NULL == iocfg_stru || (0 == length)) { return; } for (i = 0; i < length; i++) { //pintrl_data_convert(&iocfg_stru, &(iocfg_table[i])); /* gpio controller register */ if ((!iocfg_stru[i].gpio_dir) && (PINCONFIG_NF_VAL != iocfg_stru[i].gpio_dir) ) { /* direction is in */ gpionum = 8*iocfg_stru[i].ugpiog + iocfg_stru[i].ugpio_bit; bsp_gpio_direction_input(gpionum); } else { /* direction is out */ if(PINCONFIG_NF_VAL!=iocfg_stru[i].gpio_val){ gpionum = 8*iocfg_stru[i].ugpiog + iocfg_stru[i].ugpio_bit; bsp_gpio_direction_output(gpionum , iocfg_stru[i].gpio_val); } } uregv = ((iocfg_stru[i].ugpiog << 3) + iocfg_stru[i].ugpio_bit); /* set iomg register */ if ((0xfff != iocfg_stru[i].uiomg_off) && (PINCONFIG_NF_VAL != iocfg_stru[i].iomg_val)) { value = iocfg_stru[i].iomg_val; if (uregv <= 164) { addr = HI_PINTRL_REG_ADDR + (iocfg_stru[i].uiomg_off); } else { addr = HI_PINTRL_SYS_REG_ADDR + (iocfg_stru[i].uiomg_off); } writel(value, addr); } /* set iocg register */ if(PINCONFIG_NF_VAL != iocfg_stru[i].iocg_val){ if (uregv <= 164) { addr = HI_PINTRL_REG_ADDR + 0x800 + (iocfg_stru[i].uiocg_off); } else { addr = HI_PINTRL_SYS_REG_ADDR + 0x800 + (iocfg_stru[i].uiocg_off); } value = readl(addr) & (~0x03); writel(value | iocfg_stru[i].iocg_val, addr); } } }
int test_gpio_llt(void) { bsp_gpio_direction_input(GPIO_TEST_NUM); bsp_gpio_get_value(GPIO_TEST_NUM); bsp_gpio_direction_get(GPIO_TEST_NUM); bsp_gpio_direction_output(GPIO_TEST_NUM, 0); bsp_gpio_set_value(GPIO_TEST_NUM, 1); bsp_gpio_direction_get(GPIO_TEST_NUM); return GPIO_OK; }
int test_bsp_gpio_direction_output(void) { bsp_gpio_direction_output(GPIO_TEST_NUM,1); if(1 == gpio_reg_get_bits(GPIO_TEST_BASEADDR,HI_GPIO_SWPORT_DDR_OFFSET,GPIO_PIN_BITS)) { logMsg("Test_bsp_gpio_direction_output is passed!!\n",0,0,0,0,0,0); return GPIO_OK; } else { logMsg("Test_bsp_gpio_direction_output is fail!!\n",0,0,0,0,0,0); return GPIO_ERROR; } }
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; }
int test_bsp_gpio_direction_output_invalid_num(void) { bsp_gpio_direction_output(GPIO_INVALID_NUM,1); return GPIO_OK; }