도와주세요!!
글 수 15,339
2005.01.05 19:32:37 (*.206.162.56)
6680
device의 interrupt핀에 GPIO0연결 해서 driver에서 등록한 ISR을 타도록 하고
싶은데요.
귀사의 홈페이지에 강좌란을 보면 "strongARM의 데이터 버스를 이용한 LED와
스위치의 I/O 제어라는 강좌"가 있는더라구요. 요게 제가 하고자하는것과 유사
한데 저는 지금 EZ-X5 board를 이용하고 있습니다. 아래의 코드가 어떻게 수정
되야 할까요?
그리고 IRQ_TO_GPIO_2_80,IRQ_GPIO,set_GPIO_IRQ_edge에 대해서도 설명해 주세
요. 제가 예상하고있는데 맞는지 궁금합니다. 꼭좀 부탁드립니다. 그럼 수고하
세요.
**strongARM의 데이터 버스를 이용한 LED와 스위치의 I/O 제어 강좌 소스..**
// IRQ를 등록한다. =============================================
if( request_irq( IO_SAMPLE_IRQ, io_interrupt, 0, IO_SAMPLE_NAME, NULL ) )
{
printk( " unable to get IRQ %d
", IO_SAMPLE_IRQ );
return -EBUSY;
}
set_GPIO_IRQ_edge ( 1 << SA1100_IRQ_TO_GPIO( IO_SAMPLE_IRQ ),
GPIO_FALLING_EDGE );
enable_irq( IO_SAMPLE_IRQ );
// IO 영역을 등록한다. =========================================
if( check_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION ) )
{
free_irq( IO_SAMPLE_IRQ, NULL );
printk( " unable to get IO region
" );
return -ENODEV;
}
request_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION, IO_SAMPLE_NAME );
// 장치를 등록한다. ============================================
if( !register_chrdev( IO_SAMPLE_MAJOR, IO_SAMPLE_NAME, &io_fops ) )
{
printk(" register device %s OK
", IO_SAMPLE_VERSION );
}
else
{
release_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION );
free_irq( IO_SAMPLE_IRQ, IO_SAMPLE_NAME );
printk(" unable to get major %d for %s
", IO_SAMPLE_MAJOR,
IO_SAMPLE_NAME );
}
싶은데요.
귀사의 홈페이지에 강좌란을 보면 "strongARM의 데이터 버스를 이용한 LED와
스위치의 I/O 제어라는 강좌"가 있는더라구요. 요게 제가 하고자하는것과 유사
한데 저는 지금 EZ-X5 board를 이용하고 있습니다. 아래의 코드가 어떻게 수정
되야 할까요?
그리고 IRQ_TO_GPIO_2_80,IRQ_GPIO,set_GPIO_IRQ_edge에 대해서도 설명해 주세
요. 제가 예상하고있는데 맞는지 궁금합니다. 꼭좀 부탁드립니다. 그럼 수고하
세요.
**strongARM의 데이터 버스를 이용한 LED와 스위치의 I/O 제어 강좌 소스..**
// IRQ를 등록한다. =============================================
if( request_irq( IO_SAMPLE_IRQ, io_interrupt, 0, IO_SAMPLE_NAME, NULL ) )
{
printk( " unable to get IRQ %d
", IO_SAMPLE_IRQ );
return -EBUSY;
}
set_GPIO_IRQ_edge ( 1 << SA1100_IRQ_TO_GPIO( IO_SAMPLE_IRQ ),
GPIO_FALLING_EDGE );
enable_irq( IO_SAMPLE_IRQ );
// IO 영역을 등록한다. =========================================
if( check_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION ) )
{
free_irq( IO_SAMPLE_IRQ, NULL );
printk( " unable to get IO region
" );
return -ENODEV;
}
request_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION, IO_SAMPLE_NAME );
// 장치를 등록한다. ============================================
if( !register_chrdev( IO_SAMPLE_MAJOR, IO_SAMPLE_NAME, &io_fops ) )
{
printk(" register device %s OK
", IO_SAMPLE_VERSION );
}
else
{
release_region( IO_SAMPLE_BASE, IO_SAMPLE_REGION );
free_irq( IO_SAMPLE_IRQ, IO_SAMPLE_NAME );
printk(" unable to get major %d for %s
", IO_SAMPLE_MAJOR,
IO_SAMPLE_NAME );
}