Barry Song
8daeffb058
pinctrl: sirf: use only one irq_domain for the whole device node
...
in sirfsoc gpio probe(), we create 5 irq_domains for 5 gpio banks. but
in irq_create_of_mapping() of irqchip core level, irq_find_host() can
only return the 1st irq_domain attached the pinctrl dt device node as
we can see from the codes:
unsigned int irq_create_of_mapping(struct device_node *controller,
const u32 *intspec, unsigned int intsize)
{
struct irq_domain *domain;
...
domain = controller ? irq_find_host(controller) : irq_default_domain;
}
struct irq_domain *irq_find_host(struct device_node *node)
{
struct irq_domain *h, *found = NULL;
int rc;
/* We might want to match the legacy controller last since
* it might potentially be set to match all interrupts in
* the absence of a device node. This isn't a problem so far
* yet though...
*/
mutex_lock(&irq_domain_mutex);
list_for_each_entry(h, &irq_domain_list, link) {
if (h->ops->match)
rc = h->ops->match(h, node);
else
rc = (h->of_node != NULL) && (h->of_node == node);
if (rc) {
found = h;
break;
}
}
mutex_unlock(&irq_domain_mutex);
return found;
}
for sirfsoc, the 1st irq_domain attached to the device_node(controller) only
can do linear for the 1st 32 gpios. so for devices who use gpio hwirq above
32 and put the information in dt like:
tangoc-ts@5c{
compatible = "pixcir,tangoc-ts";
+ interrupt-parent = <&gpio>;
+ interrupts = <34 0>;
};
we will fail to get the virq for these devices as hwirq will be bigger than
domain->revmap_data.linear.size in:
unsigned int irq_linear_revmap(struct irq_domain *domain,
irq_hw_number_t hwirq)
{
/* Check revmap bounds; complain if exceeded */
if (WARN_ON(hwirq >= domain->revmap_data.linear.size))
return 0;
return domain->revmap_data.linear.revmap[hwirq];
}
this patch drops redundant irq_domain and keep only one to fix the problem.
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2014-01-15 09:07:56 +01:00
..
accessibility
acpi
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
amba
ata
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
atm
atm: idt77252: fix dev refcnt leak
2013-11-19 15:53:02 -05:00
auxdisplay
base
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
bcma
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2013-11-13 17:40:34 +09:00
block
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS cleanly
2013-11-21 16:42:27 -08:00
bluetooth
bus
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
2013-11-14 08:51:29 +09:00
cdrom
char
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
2013-11-21 19:46:00 -08:00
clk
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-11-15 16:47:22 -08:00
clocksource
connector
connector: improved unaligned access error fix
2013-11-14 17:19:20 -05:00
cpufreq
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
cpuidle
ACPI and power management updates for 3.13-rc1
2013-11-14 13:41:48 +09:00
crypto
tree-wide: use reinit_completion instead of INIT_COMPLETION
2013-11-15 09:32:21 +09:00
dca
devfreq
dio
dma
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-11-20 13:20:24 -08:00
edac
Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac
2013-11-18 14:51:52 -08:00
eisa
extcon
firewire
tree-wide: use reinit_completion instead of INIT_COMPLETION
2013-11-15 09:32:21 +09:00
firmware
Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm
2013-11-14 07:55:21 +09:00
fmc
gpio
ACPI / driver core: Store an ACPI device pointer in struct acpi_dev_node
2013-11-14 23:14:43 +01:00
gpu
drm/sysfs: fix hotplug regression since lifetime changes
2013-11-21 21:10:00 +10:00
hid
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
hsi
hv
hwmon
hwmon: (acpi_power_meter) Fix acpi_bus_get_device() return value check
2013-11-20 08:31:01 -08:00
hwspinlock
i2c
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
ide
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
idle
Merge branch 'pm-cpuidle'
2013-11-19 01:06:28 +01:00
iio
kfifo API type safety
2013-11-15 09:32:23 +09:00
infiniband
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-11-22 10:52:03 -08:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2013-11-15 16:48:22 -08:00
iommu
Don't try to compile shmobile-iommu outside of ARM
2013-11-15 18:57:42 -08:00
ipack
irqchip
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
2013-11-14 08:51:29 +09:00
isdn
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
leds
lguest
macintosh
DeviceTree updates for 3.13. This is a bit larger pull request than
2013-11-12 16:52:17 +09:00
mailbox
md
md update for 3.13.
2013-11-20 13:05:25 -08:00
media
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-11-20 13:20:24 -08:00
memory
memstick
tree-wide: use reinit_completion instead of INIT_COMPLETION
2013-11-15 09:32:21 +09:00
message
drivers/message/i2o/driver.c: add missing destroy_workqueue() on error in i2o_driver_register()
2013-11-13 12:09:26 +09:00
mfd
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-11-15 16:47:22 -08:00
misc
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-11-20 13:20:24 -08:00
mmc
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
mtd
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-11-20 13:20:24 -08:00
net
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-11-22 09:57:35 -08:00
nfc
ntb
dmaengine: remove DMA unmap flags
2013-11-14 11:04:38 -08:00
nubus
of
Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm
2013-11-14 07:55:21 +09:00
oprofile
parisc
parport
Kconfig cleanups for v3.13
2013-11-15 14:05:15 -08:00
pci
PCI updates for v3.13:
2013-11-22 10:53:47 -08:00
pcmcia
DeviceTree updates for 3.13. This is a bit larger pull request than
2013-11-12 16:52:17 +09:00
phy
pinctrl
pinctrl: sirf: use only one irq_domain for the whole device node
2014-01-15 09:07:56 +01:00
platform
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
pnp
ACPI: Eliminate the DEVICE_ACPI_HANDLE() macro
2013-11-14 23:17:21 +01:00
power
Highlights:
2013-11-18 15:35:09 -08:00
powercap
pps
drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr
2013-11-13 12:09:35 +09:00
ps3
ptp
pwm
rapidio
regulator
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-11-15 16:47:22 -08:00
remoteproc
reset
rpmsg
rtc
ARM: drivers/rtc/rtc-at91rm9200.c: disable interrupts at shutdown
2013-11-21 16:42:27 -08:00
s390
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
2013-11-19 11:43:21 -08:00
sbus
scsi
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-11-22 10:52:03 -08:00
sfi
sh
sn
spi
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
ssb
staging
Merge branch 'topic/kbuild-fixes-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
2013-11-18 15:10:05 -08:00
target
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-11-22 10:52:03 -08:00
tc
thermal
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-11-19 15:50:47 -08:00
tty
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-11-20 13:20:24 -08:00
uio
drivers/uio/uio_pruss.c: use gen_pool_dma_alloc() to allocate sram memory
2013-11-13 12:09:23 +09:00
usb
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-11-22 10:52:03 -08:00
uwb
vfio
vhost
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-11-22 10:52:03 -08:00
video
ARM: SoC fixes for 3.13 merge window
2013-11-16 12:45:55 -08:00
virt
virtio
Nothing really exciting: some groundwork for changing virtio endian, and
2013-11-15 13:28:47 +09:00
vlynq
vme
w1
drivers/w1/masters/w1-gpio.c: use dev_get_platdata()
2013-11-15 09:32:21 +09:00
watchdog
watchdog: w83627hf: Use helper functions to access superio registers
2013-11-18 21:34:19 +01:00
xen
More ACPI and power management updates for 3.13-rc1
2013-11-20 13:25:04 -08:00
zorro
Kconfig
ACPI and power management updates for 3.13-rc1
2013-11-14 13:41:48 +09:00
Makefile
ACPI and power management updates for 3.13-rc1
2013-11-14 13:41:48 +09:00