GPIO.C소스에서 아래부분이 이해가 가질 않습니다.

---------------------------------------------------
// GPIO_IRQ_21 INTERRUPT
if( !request_irq( IRQ_GPIO21, gpio_interrupt, SA_INTERRUPT,
INT_NAME, NULL) ) // 인터럽트 등록
{
#ifdef SA1100_IRQ_TO_GPIO
set_GPIO_IRQ_edge ( 1 << SA1100_IRQ_TO_GPIO(GPIO_IRQ_21),
GPIO_RISING_EDGE );
#else
if ( 11 > GPIO_IRQ_21 ) set_GPIO_IRQ_edge ( 1 << GPIO_IRQ_21,
GPIO_RISING_EDGE );
else set_GPIO_IRQ_edge ( 1 <<
GPIO_11_27_IRQ(IRQ_GPIO21), GPIO_RISING_EDGE );
#endif
enable_irq (IRQ_GPIO21); // 인터럽트의 허용

printk(KERN_WARNING "Interrupt GPIO Register
Ok...
");
}

-------------------------------------------------------------------
복사해서 올리고 나니까 엉망이 되는군요 ㅡ.ㅡ

여튼. 위 루틴에서 SA1100_IRQ_TO_GPIO가 어디에 정의되어 있는지.
또, set_GPIO_IRQ_edge ( 1 << SA1100_IRQ_TO_GPIO(GPIO_IRQ_21),
GPIO_RISING_EDGE ); 함수에서 첫번째 인자를 바꿔서 이렇게 [
set_GPIO_IRQ_edge(1< 컴파일 하면 경고 에러가 나는지 궁금합니다...

경고 메시지는 다음과 같습니다.
gpio.c : In function init_module:
gpio.c : 289 : warnning left shift count >= width of type

조언부탁드립니다.