gpio_to_irq를 해제하는 방법?

scamphan의 이미지

안녕하세요. 안드로이드(리눅스)의 커널쪽을 공부하고있는 초보입니다.

인터럽트를 사용함에 있어 장치를 올렸다가 내렸다를 반복해야하는 상황이라

할당 해제를 하였는데 계속 애러가나서 들여다보니 해제에서 실수를 한듯합니다.

irq 할당은 다음과 같이 하였습니다.

ret = gpio_request_one(pdata->irq_gpio, GPIOF_DIR_IN, "test,irq_pin");

client->irq = gpio_to_irq(pdata->irq_gpio);

그리고 해제는

if (gpio_is_valid(pdata->irq_gpio))
gpio_free(pdata->irq_gpio);

와 같이 하였습니다.

처음에는 다된줄 알았는데 지금 보니 gpio_to_irq로 등록된 내용을 해제후에

gpio_free를 해야하는게 맞는것 같다는 생각이듭니다.

하지만 어떻게 이것을 해제하여야하는지를 전혀 모르겠습니다.

혹시 어떤 함수 혹은 메크로를 써야하는지요?

scamphan의 이미지

못 찾아서 올렸는데 글올리자마자

뭔가 찾았네요..

free_irq(gpio_to_irq(pdata->irq_gpio), NULL);
gpio_free(pdata->irq_gpio);

이렇게 맞는걸까요?