본문 바로가기

Programming/Linux_Kernel

platform_get_irq 로 irq number 받아서 사용하기.


함수에서 다음과 같이 irq num 를 받아올 경우가 있다.

static int __init my_probe(struct platform_device *pdev)
{
... 
irq_num = platform_get_irq(pdev, 0);
}

이때 얻어지는 데이터는 아래와 같이 등록되어 있는 platform_device 의 리소스 입니다.
platform_get_irq 함수는 해당 리소스에 접근한 후flag 값이 IORESOURCE_IRQ 임을 보고  0 번째 배열의 irq 를 리턴하게 됩니다.  

/* HPD */

static struct resource s5p_hpd_resources[] = {

[0] = {

.start  = IRQ_TVOUT_HPD,

.end    = IRQ_TVOUT_HPD,

.flags  = IORESOURCE_IRQ,

},

};


struct platform_device s5p_device_hpd = {

.name           = "s5p-tvout-hpd",

.id             = -1,

.num_resources  = ARRAY_SIZE(s5p_hpd_resources),

.resource       = s5p_hpd_resources,

};

EXPORT_SYMBOL(s5p_device_hpd);


위의  s5p_device_hpd 는 (당연하게) platform_add_devices() 함수를 이용해서 register 된 후에 사용되어야 합니다.