저는 커널 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까지입니다.