TOP

基于Linux 3.10.49內核的pinctrl流程分析(一)
2017-10-18 09:07:44 】 瀏覽:11366
Tags:

Linux kernel 3.10.49+
 pinctrl驅動的platform注冊就不說了,
無非就是platform_driver_register這個入口,
最后匹配到合適的設備后調用struct platform_driver 的probe函數.


這里說說, pinctl io復用關系(pinmux)的是怎么通過device tree source(dts)設置的.
1. 首先,當然是看pinctrl驅動的probe函數(這相當于驅動初始化的入口):
    drivers/pinctrl/pinctrl-xxxxxx.c : xxxxxx_pinctrl_probe(...)
    xxxxxx_pinctrl_probe(...) --> pinctrl_register(...)


 2. drivers/pinctrl/core.c : pinctrl_register(...)
    pinctrl_register(...) --> pinctrl_get(...)


 3. drivers/pinctrl/core.c : pinctrl_get(...)
    pinctrl_get(...) --> create_pinctrl(...)


 4. drivers/pinctrl/core.c : create_pinctrl(...)
    create_pinctrl(...) --> pinctrl_dt_to_map(...)


 5. drivers/pinctrl/devicetree.c : pinctrl_dt_to_map(...)
    pinctrl_dt_to_map(...) --> dt_to_map_one_config(...)


 6. drivers/pinctrl/devicetree.c : dt_to_map_one_config(...)
    dt_to_map_one_config(...) --> ops->dt_node_to_map(...)