도와주세요!!
글 수 15,339
2005.02.16 12:50:59 (*.192.70.151)
6686
안녕하세요?
예전에 회사에서 이지보드를 사서 LCD보드까지 붙였더랬습니다.
(스트롱암 보드였습니다)
그런데, 그 보드를 기반해서 새 보드를 만들었습니다. (엑스스케일입니다)
터치스크린이 드라이버가 MK712라서 드라이버를 포팅하는데...
자꾸 insmod에서 에러가 나네요.
GPIO2번에 INT단자를 물렸습니다.
에러 내용은 다음과 같습니다.
///////////////////////////////////////////////////////////////////////////
root@211.192.70.155:~/touch# insmod mk712.o
Warning: loading mk712.o will taint the kernel: no license
[MK712] Unable to get IRQ 24
mk712.o: init_module: Device or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
///////////////////////////////////////////////////////////////////////////
드라이버 내용은 아래와 같구요.
#define MK712_DEFAULT_IRQ IRQ_GPIO(2) // 이렇게 정의해주고..
/////////////////////////////////////
//아래와 같은 부분에서 오류가 납니다.
if( request_irq(IRQ_TO_GPIO_2_80(MK712_DEFAULT_IRQ),
mk712_interrupt,
SA_INTERRUPT,
"mk712_touchscreen",queue))
{
printk(" [MK712] Unable to get IRQ %d
", mk712_irq );
release_region(mk712_io, MK712_IO_REGION); // 이 에러가 나네요.
kfree(queue);
return -EBUSY;
}
set_GPIO_IRQ_edge (IRQ_TO_GPIO_2_80(MK712_DEFAULT_IRQ), GPIO_RISING_EDGE);
enable_irq( MK712_DEFAULT_IRQ );
printk(" [MK712] Touch Screen Address:0x%x IRQ:%d
", mk712_io, mk712_irq);
//////////////////////////////////////
혹시나 해서, 이 상황에서의 /proc/interrupts도 올려봅니다.
//////////////////////////////////////
root@211.192.70.155:~/touch# cat /proc/interrupts
0: 7291 eth0
2: 0 GPIO 2-80
14: 209 serial
17: 0 DMA
18: 6507 timer
Err: 0
/////////////////////////////////////
이상이구요.
혹시나, GPIO 2-80이 저렇게 등록이 되어 있기때문에 그런건 아닌가요?
그리고 IRQ_GPIO(2)가 리턴되는 값이 24가 맞나요?
해결방법이 어떤 게 있을까요?
예전에 회사에서 이지보드를 사서 LCD보드까지 붙였더랬습니다.
(스트롱암 보드였습니다)
그런데, 그 보드를 기반해서 새 보드를 만들었습니다. (엑스스케일입니다)
터치스크린이 드라이버가 MK712라서 드라이버를 포팅하는데...
자꾸 insmod에서 에러가 나네요.
GPIO2번에 INT단자를 물렸습니다.
에러 내용은 다음과 같습니다.
///////////////////////////////////////////////////////////////////////////
root@211.192.70.155:~/touch# insmod mk712.o
Warning: loading mk712.o will taint the kernel: no license
[MK712] Unable to get IRQ 24
mk712.o: init_module: Device or resource busy
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
///////////////////////////////////////////////////////////////////////////
드라이버 내용은 아래와 같구요.
#define MK712_DEFAULT_IRQ IRQ_GPIO(2) // 이렇게 정의해주고..
/////////////////////////////////////
//아래와 같은 부분에서 오류가 납니다.
if( request_irq(IRQ_TO_GPIO_2_80(MK712_DEFAULT_IRQ),
mk712_interrupt,
SA_INTERRUPT,
"mk712_touchscreen",queue))
{
printk(" [MK712] Unable to get IRQ %d
", mk712_irq );
release_region(mk712_io, MK712_IO_REGION); // 이 에러가 나네요.
kfree(queue);
return -EBUSY;
}
set_GPIO_IRQ_edge (IRQ_TO_GPIO_2_80(MK712_DEFAULT_IRQ), GPIO_RISING_EDGE);
enable_irq( MK712_DEFAULT_IRQ );
printk(" [MK712] Touch Screen Address:0x%x IRQ:%d
", mk712_io, mk712_irq);
//////////////////////////////////////
혹시나 해서, 이 상황에서의 /proc/interrupts도 올려봅니다.
//////////////////////////////////////
root@211.192.70.155:~/touch# cat /proc/interrupts
0: 7291 eth0
2: 0 GPIO 2-80
14: 209 serial
17: 0 DMA
18: 6507 timer
Err: 0
/////////////////////////////////////
이상이구요.
혹시나, GPIO 2-80이 저렇게 등록이 되어 있기때문에 그런건 아닌가요?
그리고 IRQ_GPIO(2)가 리턴되는 값이 24가 맞나요?
해결방법이 어떤 게 있을까요?