linux-mips
[Top] [All Lists]

Re: What is the right way to setup MIPS timer irq in 2.6.29?

To: "David Wuertele" <dave+gmane@wuertele.com>
Subject: Re: What is the right way to setup MIPS timer irq in 2.6.29?
From: "Jon Fraser" <jfraser@broadcom.com>
Date: Wed, 08 Apr 2009 18:46:54 -0400
Cc: "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>
In-reply-to: <loom.20090408T165537-312@post.gmane.org>
Organization: Broadcom
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <loom.20090408T165537-312@post.gmane.org>
Reply-to: jfraser@broadcom.com
Sender: linux-mips-bounce@linux-mips.org
Which platform?

On Wed, 2009-04-08 at 09:57 -0700, David Wuertele wrote:
> Has the system timer paradigm changed between 2.6.18 and 2.6.29?
> I'm trying to update my Broadcom-based embedded system to 2.6.29,
> and I'm running into problems getting the system timer to run.
> I'm looking for a clue about how to port forward my arch/mips/brcmstb/*
> files, specifically I want to write a plat_time_init() function
> that does for 2.6.29 what plat_timer_setup(struct irqaction *irq)
> did for 2.6.18.
> 
> In 2.6.18, arch/mips/kernel/time.c defines a high-level ISR called
> timer_interrupt (which does things like lock xtime_lock, call
> mips_hpt_read() and do_timer(regs), and return IRQ_HANDLED). time.c
> then defines a struct irqaction timer_irqaction and sets
> timer_interrupt to be the .handler field.  Finally, time.c calls
> plat_timer_setup(timer_irqaction), which is defined by the Broadcom
> patches to call setup_irq(timer_irqaction).
> 
> In 2.6.29, arch/mips/kernel/time.c has a comment saying that the new
> plat_time_init hook does not receive the irqaction pointer argument
> anymore, because each "clock_event_device" should use its own struct
> irqrequest.
> 
> I tried having the broadcom arch's plat_time_init() function create an
> irqaction and call setup_irq(), but the timer_interrupt() function
> that used to be in arch/mips/kernel/time.c doesn't exist anymore, and
> I can't seem to find the replacement.
> 
> Is there a replacement for timer_interrupt()?  I thought that maybe
> the hrtimer_interrupt() might be the one, but it requires something
> called a struct clock_event_device.  When I looked at clock_event_device
> it was very complex, and I get the feeling I'm barking up the wrong tree.
> 
> Can anyone offer pointers on how to call setup_irq() from plat_time_init()?
> 
> Thanks,
> Dave
> 
> 
> 



<Prev in Thread] Current Thread [Next in Thread>