Firefly开源社区

12
发表新贴

[技术讨论] pinctrl的pin脚属性配置不生效

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2022-8-9 17:39:21     
  • 固件类型: 官方提供的固件
  • 固件文件名称: ITX-3568Q_Ubuntu20.04-r21156_v1.2.4a_220519
  • 固件下载地址: x
  • Log日志: 新建文本文档.zip
问题描述及复现步骤:
1. 官方设备树kernel/arch/arm64/boot/dts/rockchip/rk3568j-firefly-itxq.dtsi中关于led的引脚配置:
        led_user: led-user {
            rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
        };
...
        user_led: user {
            label = "firefly:yellow:user";
            linux,default-trigger = "ir-user-click";
            default-state = "off";
            gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&led_user>;
        };




2. 加载固件之后查看实际的pin脚配置,发现该pin脚是下拉的,对比TRM应该是默认状态未进行配置,使用io命令查看了对应寄存器确认了该情况。
$ cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinconf-pins
...
pin 148 (gpio4-20): input bias pull down, output drive strength (12 mA), input schmitt enabled, pin output (1 level), slew rate (1)
...

3. 在kernel/drivers/pinctrl/pinctrl-rockchip.c中加入DEBUG宏查看dmesg也未发现对该pin脚的配置。

4. 该问题是我在自己配置了一些pin脚但不生效之后发现的,为了排除我配置错误的情况,采用了官方的设备树进行实验,发现也有这个情况。

5. 请求大佬答疑解惑!谢谢!

新建文本文档.zip

744 Bytes, 下载次数: 2, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-8-10 11:55:40     
你好,使用的是套板还是单单核心板,套板的灯是否可以手动控制
回复

使用道具 举报

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2022-8-10 13:54:29     
zyk 发表于 2022-8-10 11:55
你好,使用的是套板还是单单核心板,套板的灯是否可以手动控制

你好,感谢回复,使用的是套板 itx_rk3568,灯可用手动控制。
回复

使用道具 举报

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2022-8-17 09:31:35     
有人吗
回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-8-17 09:34:15     
可以尝试用IO指令把寄存器的值读出来看看
回复

使用道具 举报

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2022-8-18 16:21:58     
zyk 发表于 2022-8-17 09:34
可以尝试用IO指令把寄存器的值读出来看看

你好,尝试过了,也是不对了,在上面有描述。
回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-8-18 17:18:52     
IO指令读出的具体寄存器值是多少
回复

使用道具 举报

65

积分

0

威望

0

贡献

技术小白

积分
65
发表于 2022-8-22 11:02:45     
zyk 发表于 2022-8-18 17:18
IO指令读出的具体寄存器值是多少

root@firefly:~# io -4 -r 0xFDC600B8
fdc600b8:  00001600

根据TRM,读取GRF_GPIO4C_P寄存器的值地址是0xFDC600B8,第[9:8]位代表上下拉情况,此时[9:8]为b'10,代表下拉,与配置的不符合,使用的是默认值,也就是设备树的配置未生效;

回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-8-23 19:55:49     
我看一下Android那边先
回复

使用道具 举报

526

积分

0

威望

0

贡献

技术大神

Rank: 3Rank: 3

积分
526
发表于 2022-8-26 10:16:44     
本帖最后由 luwy 于 2022-8-26 10:18 编辑

经排查是pinctrl dts配置存在问题,导致pinctrl未生效,打上下面的补丁,可以修复:
  1. diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-itx-3568q.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-itx-3568q.dtsi
  2. index 078f111..971dc4a 100644
  3. --- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-itx-3568q.dtsi
  4. +++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-itx-3568q.dtsi
  5. @@ -44,14 +44,14 @@
  6.         firefly_leds: leds {
  7.                 status = "okay";
  8.                 compatible = "gpio-leds";
  9. +               pinctrl-names = "default";
  10. +               pinctrl-0 =<&leds_gpio>;

  11.                 power_led: power {
  12.                         label = "firefly:blue:power";
  13.                         linux,default-trigger = "ir-power-click";
  14.                         default-state = "on";
  15.                         gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
  16. -                       pinctrl-names = "default";
  17. -                       pinctrl-0 = <&led_power>;
  18.                 };

  19.                 user_led: user {
  20. @@ -59,8 +59,6 @@
  21.                         linux,default-trigger = "ir-user-click";
  22.                         default-state = "off";
  23.                         gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
  24. -                       pinctrl-names = "default";
  25. -                       pinctrl-0 = <&led_user>;
  26.                 };

  27.                 fan_ctl: fan-ctl {
  28. @@ -330,12 +327,12 @@
  29. &pinctrl {

  30.         leds {
  31. -               led_power: led-power {
  32. -                       rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
  33. -               };
  34. -
  35. -               led_user: led-user {
  36. -                       rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
  37. +               leds_gpio: leds-gpio {
  38. +                       rockchip,pins =
  39. +                               /* led_power */
  40. +                               <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>,
  41. +                               /* led_user */
  42. +                               <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
  43.                 };
  44.         };
复制代码
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2014-2022 中山市天启智能科技有限公司 粤ICP备14022046号
快速回复 返回顶部 返回列表