]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: BC47xx: Fix SSB irq setup
authormatthieu castet <castet.matthieu@free.fr>
Tue, 30 Jun 2009 21:04:55 +0000 (23:04 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 3 Jul 2009 14:45:27 +0000 (15:45 +0100)
commit1c9ceb9ce88664d199097284ce186db339cb9e78
treedf871a70349f18842c0a38b51cad2dd3ee65b07a
parentd3cfb9dcab931735219f5ed4cdcc253e26f6a8f6
MIPS: BC47xx: Fix SSB irq setup

The current ssb irq setup in ssb_mipscore_init has the problem that it
configures some device on some irq without checking that the irq is not
taken by an other device.

For example in my case PCI host is on irq 0 and IPSEC on irq 3.
The current code:
  - store in dev->irq that IPSEC irq is 3 + 2
  - do a set_irq 0->3 on PCI host

But now IPSEC irq is not routed anymore to the mips code and dev->irq is
wrong.  This causes a problem described in [1].

This patch tries to solve the problem by making set_irq configure the
device we want to take the irq on the shared irq0. The previous example
becomes:
  - store in dev->irq that IPSEC irq is 3 + 2
  - do a set_irq 0->3 on PCI host:
  - irq 3 is already taken by IPSEC. do a set_irq 3->0 on IPSEC

I also added some code to print the irq configuration after irq setup to
allow easier debugging. And I add extra checking in ssb_mips_irq to report
device without irq or device with not routed irq.

[1] http://www.danm.de/files/src/bcm5365p/REPORTED_DEVICES

Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr>
Acked-by : Michael Buesch <mb@bu3sch.de>
Tested-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/ssb/driver_mipscore.c