imx6 可以参考http://blog.csdn.net/shengzhadon/article/details/49908439
参照文件:
Documentation/devicetree/bindings/pinctrl/ti,omap-pinctrl.txt
Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
1. 下面的节点,pinctrl-0和bt-gpios的关系是什么?
- pinctrl-0描述了pin脚mux复用情况
- bt-gpios则设置pin脚的默认状态
2. GPIO节点意义
- pinctrl-names定义了clientdevice用到的state列表,一种是字符串,另一种是数字; 0表示pinctrl-0, 1表示pintrl-1.
- 0x1d8 (PIN_OUTPUT_PULLDOWN | MUX_MODE7),其中0x1d8代表哪个GPIO,后面则会IO属性
- 0x1d8表示offset,而这个offset对应的是pin0, 通过cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins可以查看到AM437x有近200个pin, 0x1d8则对应pin118, 查看手册
3. pinmux工具
https://dev.ti.com/pinmux/app.html#/default
该工具,比如在am437x中,现在打算使用GPIO4_11, 先查找GPIO4_11对应功能为CAM1_PCLK, 然后在工具中选定此脚后,右侧生成文件,其中可以查看devicetree文件
wifi_bt_reset{ pinctrl-names = "default"; pinctrl-0 = <&wifi_reset_pins>; compatible = "gpio_reset"; bt-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>; wifi-gpios = <&sc16is752 4 GPIO_ACTIVE_HIGH>; }; wifi_reset_pins: wifi_reset_pins{ pinctrl-single, pins = < 0x1d8 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) 0x1dc (PIN_OUTPUT_PULLDOWN | MUX_MODE7) >; };