Linux 内核设备驱动之GPIO驱动之GPIO 获取GPIO方向

本文介绍了一种从GPIO获取当前方向(输入或输出)的方法。通过`gpiod_get_direction`函数,可以获取指定GPIO描述符的当前方向,并设置相应的标志位。此函数可能在某些条件下挂起。

/**
* gpiod_get_direction - return the current direction of a GPIO
* @desc: GPIO to get the direction of
*
* Return GPIOF_DIR_IN or GPIOF_DIR_OUT, or an error code in case of error.
*
* This function may sleep if gpiod_cansleep() is true.
*/
int gpiod_get_direction(struct gpio_desc *desc)
{
struct gpio_chip *chip;
unsigned offset;
int status = -EINVAL;

chip = gpiod_to_chip(desc);
offset = gpio_chip_hwgpio(desc);

if (!chip->get_direction)
return status;

status = chip->get_direction(chip, offset);
if (status > 0) {
/* GPIOF_DIR_IN, or other positive */
status = 1;
clear_bit(FLAG_IS_OUT, &desc->flags);
}
if (status == 0) {
/* GPIOF_DIR_OUT */
set_bit(FLAG_IS_OUT, &desc->flags);
}
return status;
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容