


























rockchip,pins = <3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>;
# and pcfg_pull_none
# drivers/pinctrl/pinconf-generic.c
pinconf_generic_parse_dt_config(device_node *, pinctrl_dev *, unsigned long **, unsigned int *)
static const struct pinconf_generic_params dt_params[]

# drivers/pinctrl/core.c
pinctrl_commit_state(pinctrl *, pinctrl_state *)
case PIN_MAP_TYPE_CONFIGS_PIN:
case PIN_MAP_TYPE_CONFIGS_GROUP:
ret = pinconf_apply_setting(setting);
break;
# drivers/pinctrl/pinconf.c
const struct pinconf_ops *ops = pctldev->desc->confops;
ops->pin_config_set
# drivers/pinctrl/pinctrl-rockchip.c
rockchip_pinconf_set(pinctrl_dev *, unsigned int, unsigned long *, unsigned)
=> rockchip_set_pull
=> ctrl->pull_calc_reg
# drivers/pinctrl/pinctrl-rockchip.c
# by dts compatible match
static struct rockchip_pin_ctrl rv1126b_pin_ctrl
rv1126b_calc_pull_reg_and_bit(rockchip_pin_bank *, int, regmap **, int *, u8 *)

dts配置上下拉/强度别名
别名会被解嵌套解析,最后被pinconf读取,最终调用到rk的pinctrl驱动,写入寄存器。寄存器值详见TRM文档。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。