linux/drivers
matthieu castet ea4bbfd004 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>
2009-07-03 15:45:27 +01:00
..
accessibility
acpi ACPI: video: prevent NULL deref in acpi_get_pci_dev() 2009-06-26 00:23:42 -04:00
amba
ata libata: don't set IORDY for reset 2009-06-23 01:54:30 -04:00
atm
auxdisplay
base Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
block floppy: fix lock imbalance 2009-06-30 18:56:01 -07:00
bluetooth
cdrom
char MIPS: Update VR41xx GPIO driver to use gpiolib 2009-07-03 15:45:25 +01:00
clocksource clocksource: sh_tmu: Make undefined TCOR behaviour less undefined. 2009-06-24 21:08:11 +09:00
connector
cpufreq
cpuidle
crypto crypto: padlock-aes - work around Nano CPU errata in CBC mode 2009-06-18 19:31:09 +08:00
dca
dio
dma DMA: txx9dmac: use dma_unmap_single if DMA_COMPL_{SRC,DEST}_UNMAP_SINGLE set 2009-06-24 18:34:40 +01:00
edac edac: add DDR3 memory type for MPC85xx EDAC 2009-06-30 18:55:59 -07:00
eisa Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
firmware Pull for-2.6.31 into release 2009-06-17 09:35:24 -07:00
gpio MIPS: Update VR41xx GPIO driver to use gpiolib 2009-07-03 15:45:25 +01:00
gpu Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-06-25 17:04:37 -07:00
hid
hwmon Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
i2c i2c: fix build bug in i2c-designware.c 2009-06-25 11:22:12 -07:00
ide ide: memory overrun in ide_get_identity_ioctl() on big endian machines using ioctl HDIO_OBSOLETE_IDENTITY 2009-06-29 19:31:41 -07:00
idle
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-06-22 21:29:52 -07:00
ieee802154
infiniband Merge branches 'ehca', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus 2009-06-23 10:38:47 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-06-20 10:17:02 -07:00
isdn net: fix network drivers ndo_start_xmit() return values 2009-06-17 04:31:16 -07:00
leds leds: Add options to have GPIO LEDs start on or keep their state 2009-06-23 20:21:39 +01:00
lguest eventfd: revised interface and cleanups 2009-06-30 18:55:58 -07:00
macintosh powerpc/pmac: Fix DMA ops for MacIO devices 2009-06-26 14:37:25 +10:00
mca
md Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2009-07-01 10:41:09 -07:00
media V4L/DVB (12131): BUGFIX: An incorrect Carrier Recovery Loop optimization table was being 2009-06-23 03:29:57 -03:00
memstick
message fusion: mptsas, fix lock imbalance 2009-06-22 08:54:14 -05:00
mfd [WATCHDOG] twl4030 watchdog driver 2009-06-20 18:39:43 +00:00
misc gru: copyright fixes 2009-06-18 13:04:04 -07:00
mmc spi: add spi_master flag word 2009-06-30 18:56:00 -07:00
mtd mtd: nand: fix build failure and incorrect return from omap_wait() 2009-06-28 10:24:13 +01:00
net igb: return PCI_ERS_RESULT_DISCONNECT on permanent error 2009-06-30 19:47:04 -07:00
nubus
of
oprofile
parisc
parport parport/serial: add support for NetMos 9901 Multi-IO card 2009-06-30 18:55:59 -07:00
pci Fix iommu address space allocation 2009-07-01 11:19:29 -07:00
pcmcia Merge branch 'akpm' 2009-06-16 19:50:13 -07:00
platform eeepc-laptop: Fix build failure with HOTPLUG_PCI && !SYSFS 2009-06-29 09:40:38 -07:00
pnp Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release 2009-06-24 01:19:50 -04:00
power
pps LinuxPPS: core support 2009-06-18 13:04:04 -07:00
ps3
rapidio
regulator
rtc bfin: delay IRQ registration until driver is ready 2009-06-30 18:56:01 -07:00
s390 [S390] dasd: fix refcounting in dasd_change_state 2009-06-22 12:08:23 +02:00
sbus
scsi block: get rid of queue-private command filter 2009-07-01 10:56:26 +02:00
serial parport/serial: add support for NetMos 9901 Multi-IO card 2009-06-30 18:55:59 -07:00
sh
sn
spi spi: bitbang bugfix in message setup 2009-06-30 18:56:00 -07:00
ssb MIPS: BC47xx: Fix SSB irq setup 2009-07-03 15:45:27 +01:00
staging Staging: octeon-ethernet: Fix race freeing transmit buffers. 2009-06-24 18:34:41 +01:00
tc
telephony
thermal
uio
usb usb_serial: Fix oops when unexisting usb serial device is opened. 2009-06-25 11:24:26 -07:00
uwb
video Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-07-01 11:46:30 -07:00
virtio
vlynq drivers: add support for the TI VLYNQ bus 2009-06-16 19:47:52 -07:00
w1 Merge git://git.infradead.org/battery-2.6 2009-06-24 14:35:57 -07:00
watchdog powerpc/rtas: Fix watchdog driver temperature read functionality 2009-06-26 16:55:37 +10:00
xen
zorro
Kconfig LinuxPPS: core support 2009-06-18 13:04:04 -07:00
Makefile LinuxPPS: core support 2009-06-18 13:04:04 -07:00