Epit interrupt on i.MX6

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Epit interrupt on i.MX6

2,497 次查看
nluca
Contributor III

Hi all,

I'm developing in Linux on a custom board with i.MX6S.

Based on the i.MX6 Linux RM, I found the reference code for the Epit module at arch/arm/mach-imx/epit.c.

First question:

What does the __init keyword in front of epit_timer_init function? Is this function called at the kernel boot up, so I don't have to call it again within my code? Or do I have still to call it in my code?

Second question:

What I'm really trying to do is to take an action (e.g. change the value of a GPIO pin) once the Epit interrupt occurs, let's say every 25 ms. Is the function to modify the epit_timer_interrupt? How should i modify clockevent_epit to achieve my aim?

Thanks and best regards,

Luca

标签 (2)
标记 (3)
0 项奖励
回复
2 回复数

1,408 次查看
igorpadykov
NXP Employee
NXP Employee

HI Luca

I think one can put gpio code to function epit_timer_interrupt,

__init keyword tells compiler to handle these functions in special way

c - What does __init mean in the Linux kernel code? - Stack Overflow

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 项奖励
回复

1,408 次查看
nluca
Contributor III

Hi Igor,

Actually the code at arch/arm/mach-imx/epit.c is not a module and is even not part of the Linux build. So I had to copy all that code into my code in order to declare and define the functions. The problem I have now is that once I try to insert my module and the following initialization code is called, I get the "i.MX epit: unable to get clk" error.


timer_clk = clk_get_sys("imx-epit.0", NULL);

  if (IS_ERR(timer_clk)) {

    pr_err("i.MX epit: unable to get clk\n");

    return;

  }

Any suggestion?

Thanks,

Luca

0 项奖励
回复