From: Greg Kroah-Hartman Date: Wed, 30 Jul 2014 01:29:02 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.15.8^0 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cb5a075a78b3fc618561cfbc37cc449e9b0b73f7;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: platform_get_irq-revert-to-platform_get_resource-if-of_irq_get-fails.patch --- diff --git a/queue-3.14/platform_get_irq-revert-to-platform_get_resource-if-of_irq_get-fails.patch b/queue-3.14/platform_get_irq-revert-to-platform_get_resource-if-of_irq_get-fails.patch new file mode 100644 index 00000000000..85a5865b1d6 --- /dev/null +++ b/queue-3.14/platform_get_irq-revert-to-platform_get_resource-if-of_irq_get-fails.patch @@ -0,0 +1,55 @@ +From aff008ad813c7cf3cfe7b532e7ba2c526c136f22 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Tue, 17 Jun 2014 15:51:02 -0700 +Subject: platform_get_irq: Revert to platform_get_resource if of_irq_get fails + +From: Guenter Roeck + +commit aff008ad813c7cf3cfe7b532e7ba2c526c136f22 upstream. + +Commits 9ec36ca (of/irq: do irq resolution in platform_get_irq) +and ad69674 (of/irq: do irq resolution in platform_get_irq_byname) +change the semantics of platform_get_irq and platform_get_irq_byname +to always rely on devicetree information if devicetree is enabled +and if a devicetree node is attached to the device. The functions +now return an error if the devicetree data does not include interrupt +information, even if the information is available as platform resource +data. + +This causes mfd client drivers to fail if the interrupt number is +passed via platform resources. Therefore, if of_irq_get fails, try +platform_get_resource as method of last resort. This restores the +original functionality for drivers depending on platform resources +to get irq information. + +Cc: Russell King +Cc: Tony Lindgren +Cc: Grant Likely +Cc: Grygorii Strashko +Signed-off-by: Guenter Roeck +Acked-by: Rob Herring +[ Guenter Roeck: backported to 3.15 ] +Signed-off-by: Guenter Roeck + +--- + drivers/base/platform.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +--- a/drivers/base/platform.c ++++ b/drivers/base/platform.c +@@ -89,8 +89,13 @@ int platform_get_irq(struct platform_dev + return dev->archdata.irqs[num]; + #else + struct resource *r; +- if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) +- return of_irq_get(dev->dev.of_node, num); ++ if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) { ++ int ret; ++ ++ ret = of_irq_get(dev->dev.of_node, num); ++ if (ret >= 0 || ret == -EPROBE_DEFER) ++ return ret; ++ } + + r = platform_get_resource(dev, IORESOURCE_IRQ, num); + diff --git a/queue-3.14/series b/queue-3.14/series index 9cc171793d1..16bfceb9aa8 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -26,3 +26,4 @@ mm-hugetlb-fix-copy_hugetlb_page_range.patch fix-gcc-4.9.0-miscompilation-of-load_balance-in-scheduler.patch x86-efi-include-a-.bss-section-within-the-pe-coff-headers.patch nl80211-move-set_qos_map-command-into-split-state.patch +platform_get_irq-revert-to-platform_get_resource-if-of_irq_get-fails.patch