也是刚接触全志平台,网上搜到一些内容,然后简单总结一下
这个网站上有详细的介绍Fex
http://linux-sunxi.org/Fex_Guide#FEX_Description
也可以转到
http://linux-sunxi.org
了解全志的sunxi
一些翻译和概括:
fex目录:
lichee/tool/pack/chips/sun8iw11p1/config/a40-p1/sys_config.fex
fex是Allwinner的设备树,用于配置gpio和一些配置,然后fex文件不是像dts一样用于解析的,而是fex
编译器编译的。
然后后面英文有备注全志跟其他mtk和高通平台不一样,不依赖dts和dsti:
注意:主线Linux内核不使用FEX / script.bin,而是依靠设备树模型(.dtb文件)
--------------------
总结起来就是:
驱动 = driver code + fex配置
然后看下代码,这个硬件资源是怎么联系driver代码的呢,我这里看下TP的节点ctp_power_ldo在driver中怎么用的。
Fex文件:
全志把ctp, gsensor, compass, lsensor, gsensor这些input设备统一起来,在driver/input写了一个sw-device.c驱动,
fex里面的compatible和driver里面的compatible匹配后,调用probe,然后把设备节点的引用统一放到数组里面。
而input设备节点的解析是在init-input.c里面,解析的方法与别的平台dsti解析一样,of函数找到节点。解析存放在init-input.h的
头文件中对应的设备结构体device_config_info的实例中。
驱动文件中:
定义结构体,然后直接使用 (有一个驱动模块中ctp_config_info互相怎么联系起来的问题)
driver连接硬件资源大概就这样,mtk和qcom解析硬件资源直接就在厂商驱动中通过dsti解析节点,全志中间加了一层用于解析,解析的节点来自fex文件。基本是一样,还是设备节点,还是of api解析。
暂时不知道为啥这样做,不清楚软件这样做的好处是啥。