虚拟GPIO子系统

前面呢,我们已经讲过了GPIO子系统中的数据结构,下面我们就来看看怎么去写一个我们自己的GPIO子系统,也就是虚拟GPIO子系统:
首先呢,我们先来看看在IMX6ULL中是怎么去定义的:

先来看看他的设备树:

GPIO控制器的设备树中,有两项是必须的:

  • gpio-controller : 表明这是一个GPIO控制器

  • gpio-cells : 指定使用多少个cell(就是整数)来描述一个引脚

当解析设备节点中的GPIO信息时,需要用到上面的属性。

比如下面的led-gpios,在#gpio-cells = <2>的情况下,它表示的引脚数量是1。

2. 驱动程序:

2.1 分配gpio_chip:

2.2 设置gpio_chip

2.3 注册gpio_chip

分析完他的源码,下面我们来自己写一个虚拟的GPIO子系统:


虚拟GPIO子系统:

2. 编写设备树文件

设备树节点已经构建好了,那么就该去编写相应的驱动程序了,当然,这个是在server端的驱动程序来着,也就是BSP工程师已经搞好的,我们现在只是去虚拟一个简单的:

compatible需要跟设备树匹配嘛,匹配成功后会去调用probe函数:

在这里的话,我们主要是去分配,设置,注册gpio_chip结构体嘛:

首先就是分配嘛,我们接着看设置,函数指针:

这里我们都是去简单的处理了,最后就是注册了

那么到这里,其实一开始小编有一个疑惑,这里只是写了server端的,那么clien端呢,其实clien端在我们去调用API函数的时候,会自动的去解析里面的数据,但是clien端和server端肯定是有一个匹配的过程的,就跟Pinctrl子系统一样,只不过这里没有展开去细讲,后面看看找不找的到,再回来细讲吧,下一篇,我们来讲讲Pinctrl子系统和GPIO子系统的联系,完结,撒花(doge.)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值