加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

LINUX的gpio_request_one作用

(2019-01-06 18:58:28)
标签:

it

分类: Linux操作系统
转载:LINUX的gpio_request_one作用

一直习惯使用gpio_request来申请一个GPIO,然后用gpio_direction_input、gpio_direction_output等函数来配置对应的GPIO,用gpio_free来释放申请。后来看到别人也会用gpio_request_one来申请和配置一个GPIO,然后就去看看看这个接口的实现,发现这个函数就是对一个GPIO的申请和配置的组合而已。但是看到这个函数最终还会释放GPIO,就有点不解了。刚配置好怎么就释放了呢?那配置还怎么生效?

今天早上骑自行车从某条路经过,人行道上有个妹子,而我只是不经意瞥了一眼。艾玛,差点把我从自行车上震下来。穿裙子的妹子整个屁屁都走光了http://img.zhimengzhe.com/d/file/shujuku/uj0ekpzncbg.gif。。。浑圆的两瓣沐浴在清晨的阳光下,伴随着高跟鞋的节奏从我眼前飘过。那一刻,时间仿佛停止,空气仿佛凝固。。。。。突然,我的脑子里出现了一个关键字:gpio_request_one !!!

遥远的天边传来一个空洞却深邃的声音:。。。。这个函数的功能就是申请并配置GPIO一次,然后别人想复用用的时候还能重新申请。而为什么要释放的原因有两点:1. 释放了,别人才能复用啊!2. 释放一个GPIO并不会导致先前对这个GPIO的配置失效。也就是你先前配置为输出拉高,当你释放后它还是输出拉高的,除非别人重新申请并重新配置这个GPIO后,该GPIO的状态才会改变!。。。。。

当这个闪光结束后我回到现实一看,雪白的两瓣已经离我远去,只留下红色的背影映衬着若隐若现的一点白或者两点白。。。。。

我想,是否该追上妹子提醒一下:Hi,姐姐(这是个三十岁以上的妹子),你把裙子夹进内裤了!

 * gpio_request_one - request a single GPIO with initial configuration

 * @gpio: the GPIO number

 * @flags: GPIO configuration as specified by GPIOF_*

 * @label: a literal description string of this GPIO

int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)

{

struct gpio_desc *desc;

int err;


desc = gpio_to_desc(gpio);


err = gpiod_request(desc, label);

if (err)

return err;


if (flags & GPIOF_OPEN_DRAIN)

set_bit(FLAG_OPEN_DRAIN, &desc->flags);


if (flags & GPIOF_OPEN_SOURCE)

set_bit(FLAG_OPEN_SOURCE, &desc->flags);


if (flags & GPIOF_DIR_IN)

err = gpiod_direction_input(desc);

else

err = gpiod_direction_output(desc,

(flags & GPIOF_INIT_HIGH) ? 1 : 0);


if (err)

goto free_gpio;


if (flags & GPIOF_EXPORT) {

err = gpiod_export(desc, flags & GPIOF_EXPORT_CHANGEABLE);

if (err)

goto free_gpio;

}

return 0;


 free_gpio:

gpiod_free(desc);

return err;

}

EXPORT_SYMBOL_GPL(gpio_request_one);

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有