Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

device driver probe 두번하기

작성자
두번
작성일
2021-06-24 10:51
조회
171
안녕하세요.
한개의 device driver를 여러번 probe해서 사용하고 싶은데요.

현재 probe가 2번 모두 완료가 되어서, driver 자체는 올라와있고,
기본적인 raw_data 읽는 등 동작은 하고 있는 상태인데요.

인터럽트가 올라오지 않아서, 질문이 있어서 문의드립니다.
* cat proc/interrupts 결과에 확인해보면 request_threaded_irq에서 등록한 unique_id(dev_id) string에 맞게 2개가 등록 되어있지만,
한 곳에서만 irq가 정상적으로 올라오고 있지 않습니다.

여기에서 질문이 하나 있는데요,
request_threaded_irq 함수를 사용할 때, thread_fn 을 입력하게 되는데,
같은 함수를 여러번 probe하는데 동일하게 사용하면 안 되나요?
전체 4
  • 2021-06-24 10:51
    인터럽트가 등록되었는데, 발생하지 않고있으면 어떤 부분을 확인해보는게 좋을까요?

  • 2021-06-24 11:28
    안녕하세요?
    2개의 hw 디바이스가 별도의 인터럽트를 발생하도록 설계되었다면,
    device tree에서도 각각의 인터럽트 번호를 지정했는지도 확인해보시기 바랍니다.
    gpio에 연결하여 각각의 인터럽트를 받고 싶은건가요?

    질문에서와 같이 같은 함수를 여러번 probe하여 사용하는 것은 문제 없습니다.
    같은 드라이버 코드를 각각의 디바이스가 사용하도록 사용할 수 있는 것은 당연합니다.
    많은 컨트롤러들이 2개 이상 사용되며, 이들은 인터럽트들이 각각 연결되어 사용됩니다.
    soc내에 2개 이상의 i2c 컨트롤러들이 동작하는 코드들을 보시면 알 수 있을것입니다.

    감사합니다.

  • 2021-06-25 11:21
    항상 빠른 답변 감사합니다!
    말씀하신 것 같이 드라이버에서는 정상적으로 인터럽트 발생하고 있었는데,
    한 군데에서 main, sub가 구분되어 있지 않고 있어서, hal에서 interrupt를 받지 못하고 있었습니다 ㅠㅠ.

    감사합니다!

    • 2021-06-25 15:37
      원인을 찾았으니 곧 해결될 것이라 믿습니다. ^^