如何在 gpiolib 内核中选择或设置 gpiochipNN?

如何在 gpiolib 内核中选择或设置 gpiochipNN?

我正在研究内核 gpiolib 和 gpio-xilinx.c。我看到我的设备只有

cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 960-1023,

我很困惑这个 960 是怎么来的。内核如何知道它必须设置这个数字 960?我在设备树中看不到这个数字960。这个960号码是从哪里来的?

 /sys/class/gpio/gpiochip960 

我期待设置 -

gpio237
gpiochip192
gpiochip224

答案1

gpiochip基址在gpio-xilinx.c中设置为-1。https://elixir.bootlin.com/linux/v5.3.5/source/drivers/gpio/gpio-xilinx.c#L319

这意味着 gpiochip_find_base 将被调用: https://elixir.bootlin.com/linux/v5.3.5/source/drivers/gpio/gpiolib.c#L181

这会尝试从 ARCH_NR_GPIOS 中找到第一个可用范围。

我很确定你有 ARCH_NR_GPIOS == 1024 和 ngpios == 64。这导致范围从 960 到 1023。

相关内容