比如:
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是怎么来的,这个编号应该对应着功能,没找到这个编号怎么跟功能对应上
离线
跟帖同问,看rk手册的描述这4个分别是<bank, gpio, func, &ref>,func的定义应该在include/dt-bindings/pinctrl/rockchip.h,但是实际去看的时候发现很多设备树节点中这个func的描述完全对不上…
离线
我在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手册:
可以看到GPIO0A[0]的引脚复用配置寄存器,当此引脚作为clk_32k使用时,配置值为10B=2D,因此第三个参数为2。RK_FUNC2这个宏定义在当前内核中没有,如果有也只是常量2,表示引脚复用的第2个功能。
回到原题,不知道楼主用的什么芯片,如果参数3没有填错的话,反推它的iomux配置位宽要大于4了,有点奇怪。
离线