涉及的文件:
kernel/drivers/base/dd.c
kernel/drivers/base/pinctrl.c
kernel/drivers/pinctrl/core.c
kernel/drivers/pinctrl/devicetree.c
kernel/drivers/pinctrl/pinctrl-rockchip.c
代码调用流程:
really_probe
pinctrl_bind_pins
dev->pins->p = devm_pinctrl_get(dev);
pinctrl_get
create_pinctrl
pinctrl_dt_to_map(p);
dt_to_map_one_config
ops->dt_node_to_map
rockchip_dt_node_to_map
add_setting
经过调用,会生成一系列的pinctrl_map ,进而通过pinctrl_map 生成一系列的pinctrl_setting
构造setting 结构体的信息 来自于上文填充的 rockchip_pin_group
最后遍历setting,根据type,选择复用还是配置函数
这一切对于我们驱动来说都是透明的,在proble函数前,会将这些工作都做好,我们只要在设备树中指定就好