ez2440 보드를 사용하여 adc 를 구현하고 있습니다.

adc conversion enable을 시키고 난 후 완료가 되면 interrupt가 발행하도록 IRQ 등록을 아래와 같이 하였는데,

오류가 발생하고 있습니다. (오류코드 -16)

커널 소스를 읽어보니 오류코드 -16은 busy라고 되어 있는거 같은데, 어디서 IRQ등록을 이미 한 것일까요?

부트와 커널은 수정없이 사용하고 있습니다.

 

도와주세요.

 

=========== 디바이스 드라이버 =========================

#include <asm-arm/arch-s3c2410/irqs.h> /* Needed for IRQ Number .. IRQ_ADC */

 

#include <asm-arm/arch-s3c2410/map.h>  /* Needed for physical register address definition... S3C2410_PA_ADC  */
#include <asm-arm/arch-s3c2410/regs-gpio.h> /* Needed for GPIO virtual Address */
#include <asm-arm/arch-s3c2410/regs-irq.h> /* Needed for IRQ virtual Address */
#include <asm-arm/arch-s3c2410/regs-timer.h> /* Needed for TIMER virtual Address */
#include <asm-arm/arch-s3c2410/regs-adc.h> /* Needed for ADC virtual Address */

 

//adc IRQ 등록
  ret = request_irq(IRQ_ADC, adc_interrupt, SA_INTERRUPT, INT_DEV_NAME, NULL);
  if (ret != 0)
     printk("failed to install IRQ_ADC[%d], (err=%d)\n", IRQ_ADC, ret);
  else
  {
   //adc 초기화 설정

   }

 

 

  irqreturn_t adc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 
 {
    printk("adc conversion complete.. \n");
    return IRQ_HANDLED;  
  } 

 

 

=============실행 결과 ================

failed to install IRQ_ADC[80], (err=-16)