From: slapdau@yahoo.com.au (Craig McGeachie)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] irq: bcm2835: Re-implement the hardware IRQ handler.
Date: Sat, 05 Oct 2013 15:19:00 +1300 [thread overview]
Message-ID: <524F7714.3070502@yahoo.com.au> (raw)
In-Reply-To: <524B8117.9070309@wwwdotorg.org>
On 10/02/2013 03:12 PM, Stephen Warren wrote:
> I do agree that it's likely best if the driver processes interrupts in
> the priority order that the HW designers came up with. So, I'm open to
> that change. This might make a difference to some time-critical
> shortcuts like the PCM (audio) interrupt.
FIQ would definitely make a difference. I've tried playing audio out of
the 3.5mm audio jack. It sounds rubbish. I think the issue might be
the same as the one for getting decent PWM wave forms [1,2]. I found
the links while researching how to implement FIQ support.
Interestingly, a PWM driver is also a good candidate for FIQ.
Implementing FIQ was nothing like I expected, but none the less, I'm
fairly certain that I've added FIQ support to the interrupt controller
driver. Other than normal interrupts seem to continue to behave well, I
couldn't tell you how well FIQs behave. That would require implementing
an FIQ handler for some driver, which looks conceptually straight
forward, but fiddly.
The implementation of an FIQ handler follow as per instruction from the
introductory comment block in linux/arch/arm/kernel/fiq.c. The point
about a relinquish function disabling FIQ before the next driver enables
is important. The interrupt controller driver only permits one FIQ
enabled at any one time, and attempting to enable a second FIQ causes a
kernel BUG().
I have not submitted it in the form of a patch, because I'm not sure of
the current status of what you want changed or if you're even open to
the possibility of changing the driver. Still, if you're interested,
you can always have a look at it here [3].
Cheers,
Craig.
[1] http://free-electrons.com/blog/fiq-handlers-in-the-arm-linux-kernel/
[2] http://elinux.org/images/2/27/0910-elce-fiq.pdf
[3]
https://github.com/rickytarr/linux/blob/topic/interrupt/drivers/irqchip/irq-bcm2835.c
prev parent reply other threads:[~2013-10-05 2:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1379751251-2799-1-git-send-email-slapdau@yahoo.com.au>
[not found] ` <1379755112-19446-1-git-send-email-slapdau@yahoo.com.au>
2013-09-24 3:38 ` [PATCH] irq: bcm2835: Re-implement the hardware IRQ handler Stephen Warren
2013-09-24 8:09 ` Craig McGeachie
2013-10-02 2:01 ` Stephen Warren
2013-10-02 6:31 ` Craig McGeachie
2013-10-04 9:40 ` Craig McGeachie
2013-09-25 6:00 ` Craig McGeachie
2013-10-02 2:04 ` Stephen Warren
2013-10-02 7:25 ` Craig McGeachie
2013-09-27 9:57 ` [PATCH v3] irq: bmc2835: " Craig McGeachie
2013-10-02 2:23 ` Stephen Warren
2013-10-02 8:51 ` Craig McGeachie
[not found] ` <5e0b6222e8648fb0c63aa649ee70b29d11f4924f@8b5064a13e22126c1b9329f0dc35b8915774b7c3.invalid>
2013-09-26 8:19 ` [PATCH] irq: bcm2835: " Craig McGeachie
2013-09-26 11:28 ` Simon Arlott
2013-10-02 2:12 ` Stephen Warren
2013-10-02 7:35 ` Craig McGeachie
2013-10-05 2:19 ` Craig McGeachie [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=524F7714.3070502@yahoo.com.au \
--to=slapdau@yahoo.com.au \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.