coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
参考资料:
记住pinctrl的三大作用,有助于理解所涉及的数据结构:
Pinctrl驱动程序的核心是构造一个pinctrl_desc结构体:
分为2部分:
用来把某组引脚(group)复用为某个功能(function)。
用来配置:某个引脚(pin)或某组引脚(group)。
我们要做的事情:
假设这个虚拟的pin controller有4个引脚:
virtual_pincontroller {
compatible = "100ask,virtual_pinctrl";
i2cgrp: i2cgrp {
functions = "i2c", "i2c";
groups = "pin0", "pin1";
configs = <0x11223344 0x55667788>;
};
};
virtual_i2c {
compatible = "100ask,virtual_i2c";
pinctrl-names = "default";
pinctrl-0 = <&i2cgrp>;
};
include/linux/of.h
for_each_child_of_node
of_get_child_count
of_find_property
of_property_read_u32
of_property_read_u32_index
of_property_read_string_index
编写、注册一个platform_driver即可。
y_read_u32 of_property_read_u32_index of_property_read_string_index
### 6. 编写测试用的client驱动
编写、注册一个platform_driver即可。