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