gpio_is_valid函数 gpio_is_valid函数是Linux内核中一个位于include/linux/gpio.h头文件中的函数,其作用是用于判断一个GPIO号是否是有效的GPIO编号。下面是对gpio_is_valid函数的详细解析。 ``` static inline bool gpio_is_valid(int number); ```
static inline int gpio_is_valid(int number) { /* only non-negative numbers are valid */ return number>= 0; } /* platforms that don't directly support access to GPIOs through I2C, SPI, * or other blocking infrastructure can use these wrappers. */ static inline int gpio_cansleep(unsign...
标准GPIO API 这些API的头文件定义于include/linux/gpio.h中,实际位于include/asm-generic/gpio.h中 bool gpio_is_valid(int number); int gpio_request(unsigned gpio, const char *label); void gpio_free(unsigned gpio); int gpio_direction_input(unsigned gpio); int gpio_direction_output(unsigned gpio,...
Linux内核中GPIO子系统的软件驱动分层图展示了其结构。要使用内核中提供的GPIO子系统,首先需要包含头文件,并在内核源码中的drivers/gpio/gpiolib.c文件中查找API接口函数的实现。Documentation/gpio.txt文档提供了更详细的使用说明。其中,函数gpio_is_valid()用于判断获取到的gpio号是否有效。当从设备树的...
if (!gpio_is_valid(gpio_led)) { //判断GPIO是否合法能用 printk("gpio_led: %d is invalidn"...
(gpio_is_valid(custom_gpio->gpios[i].gpio)) {gpio_free(custom_gpio->gpios[i].gpio);}}return;}static int custom_gpio_parse_dt(struct device *dev,struct custom_gpio_data *custom_gpio){int ret = 0, index = 0;struct device_node *np = dev->of_node;struct device_node *root = ...
如果有疑问,可以使用gpio_is_valid()函数在分配这个 GPIO 号之前检查它在系统上是否有效: staticboolgpio_is_valid(intnumber) 一旦我们拥有了GPIO,我们可以根据需要改变它的方向,以及它应该是输入还是输出,使用gpio_direction_input()或gpio_direction_output()函数: ...
if (gpio_is_valid(rfkill->pdata->rts_gpio.io)) gpio_free(rfkill->pdata->rts_gpio.io); // 释放GPIO ... if (gpio_is_valid(rfkill->pdata->wake_gpio.io)) gpio_free(rfkill->pdata->wake_gpio.io); ... } 1. 2. 3.
static inline bool gpio_is_valid(int number) { return number >= 0 && number < ARCH_NR_GPIOS; } 函数gpio_is_valid()用来判断获取到的gpio号是否是有效的,只有有效的gpio号,才能向内核中进行申请使用,因此,当我们从设备树的设备节点获取到gpio号,可以使用该函数进行判断是否有效。
1182 if (!gpio_is_valid(gpio))// 不符合要求,跳转到done 1183 goto done; 1184 desc = &gpio_desc[gpio];// desc = &gpio_desc[pin] 1185 chip = desc->chip; 1186 if (chip == NULL)// gpio_desc.chip指向NULL,跳转到done 1187 goto done; ...