lkml.org 
[lkml]   [2014]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16 028/357] of/irq: Fix lookup to use interrupts-extended property first
    Date
    3.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Florian Fainelli <f.fainelli@gmail.com>

    commit a9ecdc0fdc54aa499604dbd43132988effcac9b4 upstream.

    In case the Device Tree blob passed by the boot agent supplies both an
    'interrupts-extended' and an 'interrupts' property in order to allow for
    older kernels to be usable, prefer the new-style 'interrupts-extended'
    property which conveys a lot more information.

    This allows us to have bootloaders willingly maintaining backwards
    compatibility with older kernels without entirely deprecating the
    'interrupts' property.

    Update the bindings documentation to describe a situation where both the
    'interrupts-extended' and the 'interrupts' property are present, and
    which one takes precedence over the other.

    Acked-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Grant Likely <grant.likely@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | 12 ++++---
    drivers/of/irq.c | 17 +++++-----
    2 files changed, 16 insertions(+), 13 deletions(-)

    --- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
    +++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
    @@ -4,11 +4,13 @@ Specifying interrupt information for dev
    1) Interrupt client nodes
    -------------------------

    -Nodes that describe devices which generate interrupts must contain an either an
    -"interrupts" property or an "interrupts-extended" property. These properties
    -contain a list of interrupt specifiers, one per output interrupt. The format of
    -the interrupt specifier is determined by the interrupt controller to which the
    -interrupts are routed; see section 2 below for details.
    +Nodes that describe devices which generate interrupts must contain an
    +"interrupts" property, an "interrupts-extended" property, or both. If both are
    +present, the latter should take precedence; the former may be provided simply
    +for compatibility with software that does not recognize the latter. These
    +properties contain a list of interrupt specifiers, one per output interrupt. The
    +format of the interrupt specifier is determined by the interrupt controller to
    +which the interrupts are routed; see section 2 below for details.

    Example:
    interrupt-parent = <&intc1>;
    --- a/drivers/of/irq.c
    +++ b/drivers/of/irq.c
    @@ -301,16 +301,17 @@ int of_irq_parse_one(struct device_node
    /* 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);



    \
     
     \ /
      Last update: 2014-10-04 03:21    [W:4.120 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site