您尚未登录。

楼主 # 2024-12-17 10:09:03

jkl
会员
注册时间: 2019-11-18
已发帖子: 265
积分: 148.5

rk芯片的pinctrl有点不明白,大佬们稍微指点下

比如:
rm_io0_uart1_tx: rm-io0-uart1-tx {
    rockchip,pins =<0 RK_PA0 16 &pcfg_pull_none>;
};
        /omit-if-no-ref/
rm_io0_uart1_rx: rm-io0-uart1-rx {
    rockchip,pins =<0 RK_PA0 17 &pcfg_pull_up>;
};

上面两项io的复用配置,<0 RK_PA0 16 &pcfg_pull_none>;   这里面的编号 16 、17是怎么来的,这个编号应该对应着功能,没找到这个编号怎么跟功能对应上

离线

#1 2024-12-17 20:12:38

狼狼
会员
注册时间: 2020-06-14
已发帖子: 80
积分: 119

Re: rk芯片的pinctrl有点不明白,大佬们稍微指点下

跟帖同问,看rk手册的描述这4个分别是<bank, gpio, func, &ref>,func的定义应该在include/dt-bindings/pinctrl/rockchip.h,但是实际去看的时候发现很多设备树节点中这个func的描述完全对不上…

离线

#2 2024-12-18 10:33:32

mysteryli
会员
注册时间: 2020-03-05
已发帖子: 487
积分: 392
个人网站

Re: rk芯片的pinctrl有点不明白,大佬们稍微指点下

跟帖同问

离线

#3 2024-12-26 13:54:14

狼狼
会员
注册时间: 2020-06-14
已发帖子: 80
积分: 119

Re: rk芯片的pinctrl有点不明白,大佬们稍微指点下

我在RK3399上已经搞清楚这个参数要怎么配置了。但是不知道楼主用的是什么芯片,估计原理是一样的。

在6.12内核里的rk3399-base.dtsi中随便找了个pinctrl的配置,以此为例:

clock {
	clk_32k: clk-32k {
		rockchip,pins = <0 RK_PA0 2 &pcfg_pull_none>;
	};
};

从参数1可知此引脚来自GPIO0组,从参数2可知引脚为GPIO0的A0,据此以GPIO0A_IOMUX为关键字查找RK3399 TRM手册:

pic20241226134915.png

可以看到GPIO0A[0]的引脚复用配置寄存器,当此引脚作为clk_32k使用时,配置值为10B=2D,因此第三个参数为2。RK_FUNC2这个宏定义在当前内核中没有,如果有也只是常量2,表示引脚复用的第2个功能。

回到原题,不知道楼主用的什么芯片,如果参数3没有填错的话,反推它的iomux配置位宽要大于4了,有点奇怪。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn