Thread (1 message) 1 message, 1 author, 2014-02-12

Re: Linux-3.14-rc2: Order of serial node compatibles in DTS files.

From: Stephen N Chivers <hidden>
Date: 2014-02-12 00:21:58
Also in: linux-devicetree

Sebastian Hesselbarth [off-list ref] wrote on 
02/12/2014 10:46:36 AM:
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
To: Scott Wood <redacted>
Cc: Kumar Gala <redacted>, Stephen N Chivers 
[off-list ref], Chris Proctor [off-list ref], 
linuxppc-dev@lists.ozlabs.org, Arnd Bergmann [off-list ref], 
devicetree [off-list ref]
Date: 02/12/2014 11:04 AM
Subject: Re: Linux-3.14-rc2: Order of serial node compatibles in DTS 
files.
On 02/12/2014 12:41 AM, Scott Wood wrote:
quoted
On Tue, 2014-02-11 at 23:51 +0100, Sebastian Hesselbarth wrote:
quoted
On 02/11/2014 11:33 PM, Kumar Gala wrote:
quoted
Hmm,

Wondering if this caused the issue:

commit 105353145eafb3ea919f5cdeb652a9d8f270228e
Author: Sebastian Hesselbarth [off-list ref]
Date:   Tue Dec 3 14:52:00 2013 +0100

      OF: base: match each node compatible against all given matches 
first
quoted
quoted
[adding Arnd on Cc]

Could be. I checked tty/serial/of_serial.c and it does not provide a
compatible for "fsl,ns16550". Does reverting the patch fix the issue
observed?

I don't think the missing compatible is causing it, but of_serial
provides a DT match for .type = "serial" just to fail later on
with the error seen above.

The commit in question reorders of_match_device in a way that match
table order is not relevant anymore. This can cause it to match
.type = "serial" first here.

Rather than touching the commit, I suggest to remove the problematic
.type = "serial" from the match table. It is of no use anyway.
Regardless of whether .type = "serial" gets removed, it seems wrong 
for
quoted
of_match_node() to accept a .type-only match (or .name, or anything 
else
quoted
that doesn't involve .compatible) before it accepts a compatible match
other than the first in the compatible property.
Right, I thought about it and came to the same conclusion. I sent a
patch a second ago to prefer .compatible != NULL matches over those
with .compatible == NULL.

Would be great if Stephen can re-test that. If it solves the issue, I
can send a patch tomorrow.
Done.

But, the Interrupt Controller (MPIC)
goes AWOL and it is down hill from there.

The MPIC is specified in the DTS as:

        mpic: pic@40000 {
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
                        big-endian;
                };

The board support file has the standard mechanism for allocating
the PIC:

        struct mpic *mpic;

        mpic = mpic_alloc(NULL, 0, 0, 0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);

        mpic_init(mpic);

I checked for damage in applying the patch and it has applied
correctly.

Stephen Chivers,
CSC Australia Pty. Ltd.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help