|
@@ -301,16 +301,17 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar
|
|
|
/* Get the reg property (if any) */
|
|
|
addr = of_get_property(device, "reg", NULL);
|
|
|
|
|
|
+ /* Try the new-style interrupts-extended first */
|
|
|
+ res = of_parse_phandle_with_args(device, "interrupts-extended",
|
|
|
+ "#interrupt-cells", index, out_irq);
|
|
|
+ if (!res)
|
|
|
+ return of_irq_parse_raw(addr, out_irq);
|
|
|
+
|
|
|
/* Get the interrupts property */
|
|
|
intspec = of_get_property(device, "interrupts", &intlen);
|
|
|
- if (intspec == NULL) {
|
|
|
- /* Try the new-style interrupts-extended */
|
|
|
- res = of_parse_phandle_with_args(device, "interrupts-extended",
|
|
|
- "#interrupt-cells", index, out_irq);
|
|
|
- if (res)
|
|
|
- return -EINVAL;
|
|
|
- return of_irq_parse_raw(addr, out_irq);
|
|
|
- }
|
|
|
+ if (intspec == NULL)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
intlen /= sizeof(*intspec);
|
|
|
|
|
|
pr_debug(" intspec=%d intlen=%d\n", be32_to_cpup(intspec), intlen);
|