2017-12-07 22 views
0

리눅스 (초보자 수준)를 실행하는 SoC 용 간단한 GPIO 드라이버를 개발 중입니다. IRQ 번호가 데이터 시트의 번호와 다르기 때문에 문제가 있습니다.커널 IRQ 도메인 목록

효과적인 IRQ 관리자가 IRQ 도메인을 만들 수 있다는 것을 알게되었습니다. 그러나

unsigned int irq_find_mapping (struct irq_domain * domain, irq_hw_number_t hwirq)에는 도메인 구조가 필요합니다. 내 플레이트에 사용할 수있는 도메인을 어떻게 나열 할 수 있습니까? 감사합니다. irq_domain_mapping
name mapped linear-max direct-max devtree_node gpio-dwapb 29 29 0 /soc/[email protected]/gpio-controller ... 99 0x00019 none
파일 : 여기

일부 파일 '내용

파일입니다/proc 디렉토리 /가 99 ... 25 edge gpiolib

그러나 DTS 파일이 dwapb 매니저와 197에서 중단을 매핑 중단
interrupts = <0x00000000 0x000000a5 0x00000004>

+0

'cat/sys/kernel/debug/irq_domain_mapping'. 커널 구성에 * CONFIG_IRQ_DOMAIN_DEBUG = y *가 있는지 확인하십시오. – 0andriy

+0

나는 내 질문을 편집했습니다. DTS 파일에서 197로 매핑되지만 리눅스에서는 99로 설정됩니다. – SOFuser

+0

3 개의 파일 (/ proc/interrupts, irq_domain_mapping 및 문제의 코드가있는 DTS)을 모두 수집하면 더 좋을 것입니다. 일부 인터넷 공유 (pastebin like) w/** full ** 내용. – 0andriy

답변

0

고려해야 할 사항이 많이 있습니다.

  1. /proc/interrupts에서 직접 사용할 수있는 IRQ 번호를 제공합니다.
  2. BSP 설명서에는 드라이버가 할당/사용하는 IRQ가 언급되어 있습니다.
  3. 커널 코드/arch/arm/your-platform 파일을 보면 할당 된 IRQ 번호가 표시됩니다.
  4. 장치 트리 파일은 IRQ 번호를 식별하는 데 가장 좋은 옵션입니다.
+0

지원해 주셔서 감사합니다. 다른 사람들이 내 요구를 충족시키지 못하기 때문에 제 3의 제안을 확인하겠습니다. – SOFuser

+0

OP에 대한 내 의견보기. – 0andriy