Gilles Chanteperdrix wrote:
> Gwenhaël wrote:
>> On Wed, 25 Feb 2009 14:06:14 +0100, Gilles Chanteperdrix
>> <[email protected]> wrote:
>>> Gwenhaël wrote:
>>>> With i.MXL processor, kernel patched with
>>>> adeos-2.6.27-ipipe-1.12-00.patch wait indefinitly for timer
>>>> calibration.
>>>> Tick event never appear. This patch modify acktimer() in
>>>> arch/arm/mach-imx/time.c.
>>>>
>>>> I need to know if this modification is good (without adding
>>>> new errors).
>>> ipipe_mach_update_tsc should be called from imx_timer_interrupt, so,
>>> there is no need to call it from acktimer (and in fact, avoiding the
>>> call to update_tsc in acktimer reduces the timer interrupt latency). So,
>>> maybe what is needed and is missing is simply to read
>>> IMX_TSTAT(TIMER_BASE) ?
>> I've made modifications on patch thanks to your assumption. 
>> The new patch work fine.
>>
>> Thank you very much
>>
>> Gwenhael
>>
>> Signed-off-by: [email protected]
>>
>>
>> diff -ru a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c
>> --- a/arch/arm/mach-imx/irq.c    2009-02-17 11:32:52.000000000 +0100
>> +++ b/arch/arm/mach-imx/irq.c       2009-02-23 14:12:43.000000000 +0100
>> @@ -35,7 +35,7 @@
>>  #include <asm/io.h>
>>  
>>  #include <asm/mach/irq.h>
>> -#include <asm/arch/imx-regs.h>
>> +#include <mach/imx-regs.h>
>>  
>>  
>>  /* Used for IMX INTERRUPT priority: Still Experimental */ 
>> diff -ru a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
>> --- a/arch/arm/mach-imx/time.c       2009-02-25 15:10:01.000000000 +0100
>> +++ b/arch/arm/mach-imx/time.c       2009-02-25 15:10:49.000000000 +0100
>> @@ -89,25 +89,23 @@
>>  imx_timer_interrupt(int irq, void *dev_id)
>>  {
>>      struct clock_event_device *evt = &clockevent_imx;
>> -#ifndef CONFIG_IPIPE
>>      uint32_t tstat;
>>      irqreturn_t ret = IRQ_NONE;
>>  
>>      /* clear the interrupt */
>>      tstat = IMX_TSTAT(TIMER_BASE);
>> +#ifndef CONFIG_IPIPE
>>      IMX_TSTAT(TIMER_BASE) = 0;
>> +#endif
>>      if (tstat & TSTAT_COMP) {
>> +#ifdef CONFIG_IPIPE
>>              ipipe_mach_update_tsc();
>> +#endif
>>              evt->event_handler(evt);
>>              ret = IRQ_HANDLED;
>>      }
>>  
>>      return ret;
>> -#else /* CONFIG_IPIPE */
>> -    ipipe_mach_update_tsc();
>> -    evt->event_handler(evt);
>> -    return  IRQ_HANDLED;
>> -#endif /* CONFIG_IPIPE */
>>  }
>>  
>>  static struct irqaction imx_timer_irq = {
> 
> No, that is still wrong. You should read IMX_TSTAT(TIMER_BASE) in
> acktimer not in linux timer interrupt. When running with xenomai, the
> linux timer interrupt is a virtual interrupt and should not touch hardware.
> 

Hi Gwenhaël,

any news about this issue ?

Regards.

-- 
                                                 Gilles.


_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to