int gpio_out_status(char *name,int bit,uint32_t ghigh) { bool high; uint32_t pin; char cmd[10]; sprintf(cmd,"GPIO%s_%d",name,bit); pin = get_pin_num(cmd); printk(KERN_DEBUG "cmd=%s pin = %d ghigh = %d\n",cmd,pin,ghigh); if(pin != -1){ if(ghigh == 1){ high = true; return gpio_out(pin,high); } else if(ghigh == 0){ high = false; return gpio_out(pin,high); } else if(ghigh == -1) { return gpio_get_val(pin); } else{ printk(KERN_ERR "enter error!\n"); } } else{ printk(KERN_ERR "you input error!\n"); return -1; } return 0; }
uint16_t GpioController_Read(uint16_t gpio_num) { uint16_t gpio_bank = get_bank_num(gpio_num); uint16_t gpio_pin = get_pin_num(gpio_num); return GpioDriver_Read(gpioDrivers[gpio_bank], gpio_pin); }
void GpioController_SetDir(uint16_t gpio_num, uint16_t gpio_dir) { uint16_t gpio_bank = get_bank_num(gpio_num); uint16_t gpio_pin = get_pin_num(gpio_num); GpioDriver_SetDir(gpioDrivers[gpio_bank], gpio_pin, gpio_dir); }
void GpioController_SetVal(uint16_t gpio_num, uint16_t gpio_val) { uint16_t gpio_bank = get_bank_num(gpio_num); uint16_t gpio_pin = get_pin_num(gpio_num); GpioDriver_SetVal(gpioDrivers[gpio_bank], gpio_pin, gpio_val); }
void GpioController_SetOutputEn(uint16_t gpio_num, uint16_t gpio_en) { uint16_t gpio_bank = get_bank_num(gpio_num); uint16_t gpio_pin = get_pin_num(gpio_num); GpioDriver_SetOutputEn(gpioDrivers[gpio_bank], gpio_pin, gpio_en); }