Programming/Linux_Kernel
platform_get_irq 로 irq number 받아서 사용하기.
decdream
2011. 7. 12. 15:45
함수에서 다음과 같이 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 된 후에 사용되어야 합니다.