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까지입니다.

관련 정보