linux gpio子系统学习
目前工作中碰到要求在 /sys/class/gpio目录增加几个指定的gpio,通过联动拉高拉低gpio作为spi的片选的要求。对GPIO子系统有了个大概的认识,现在在最新的内核版本上再次学习研究下。
先来说说增加在上面目录下增加GPIO有两种操作:
一、android里直接在rc资源文件中,写属性节点例如:
echo 245 > /cyc/class/gpio/export
会自动生成gpio245的节点,如果这个gpio合法的话
二、在驱动中调用dgpio_export也能达到相同目地,但是使用这个接口生成的节点与第一步比较少调用了一个接口,在使用的时候发现无法拉高GPIO,所以当时驱动对gpiolib作了些改动。
带着这个目地本篇从以下几个方面来学习研究gpio子系统
1、gpio总线的注册
2、gpio总线驱动的注册
3、gpio控制器驱动的加载
4、gpio总线设备的注册
5、gpio子系统关键属性节点的创建和使用
1、gpio总线的注册
文件位置:
kernel/driver/gpio/gpiolib.c
static int __init gpiolib_dev_init(