应用笔记中,iomux复用后还需要应用层操作才能设置gpio为输入输出,但第二种方法,可以设置在内核起来后直接为输入或输出,方法如应用笔记所示,输入的话将 1.在按照应用笔记添加完节点后,驱动gpio-user.c匹配好后执行probe函数。通过of_get_available_child_count获得设备树gpios节点下子节点的数量,不能超过设定的MAX_GPIO_NR值(超过的部分不会初始化),可以修改MAX_GPIO_NR值来增加gpios节点下子节点的最大数量。 2. 通过for_each_available_child_of_node函数进行循环,在循环中读取设备树节点中设置的label、default-direction和data->dft(默认电平)。循环时会根据设备树子节点先后顺序在结构体中设置对应gpio号,后面ioctl会用到。 3. 根据读取到的设备树属性在gpio_user_init_default()函数中初始化gpio。 4.注册文件操作函数,重点为ioctl。应用通过ioctl传入要操作的gpio号,Ioctl中根据应用传进来的gpio号即val值操作gpio,如果是输入则读取gpio值,输出就根据传入的val标志位设置高低。 |
|小黑屋|
飞凌嵌入式
( 冀ICP备12004394号-1 )
GMT+8, 2025-6-26 22:47
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.