【问题标题】:Getting gpio pinctrl value in Linux during Runtime在运行时在 Linux 中获取 gpio pinctrl 值
【发布时间】:2021-10-14 22:49:04
【问题描述】:

我知道可以通过pinctrl subsystem 将 Gpio 引脚配置为多个替代功能(i2c、uart...)。可以在设备树中配置。现在我想在运行时读取分配给特定引脚的功能,我看了一下/proc/sys/class/gpio,但信息似乎不存在,有人有提示吗?

【问题讨论】:

  • 没有这个接口。某些控制器(例如 Intel 控制器)可能会提供可通过调试获得的调试信息,从中可以解码您需要的内容。 解码 因为它将是原始寄存器值,并且您必须知道哪些位对应于您的需要。同样,在英特尔上,有一种直接打印的特定模式,更容易解析。示例:pin 57 (SLP_S0B) 44:INT34C6:00 mode 1 0x44000700 0x00000051 0x00000000 [LOCKED full, ACPI].
  • 是的,基本上所有的SoC都应该提供这种状态寄存器,以提供配置的Alternate功能,但我注意到设备驱动程序不支持它,也许我需要破解用于我的目的的设备驱动程序
  • 破解设备驱动程序并将更改上传到上游绝对是一个胜利。

标签: linux gpio device-driver


【解决方案1】:

pinctl 信息在 /sys/kernel/debug/pinctrl/* 下可用

要使其可用,您的内核必须配置为进行调试,并且必须挂载 debugfs:

zcat /proc/config.gz | grep CONFIG_DEBUG_KERNEL

mount -t debugfs none /sys/kernel/debug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多