On 02/12/2014 12:38 AM, Stephen N Chivers wrote: > Sebastian Hesselbarth wrote on >> On 02/11/2014 11:33 PM, Kumar Gala wrote: >>> On Feb 11, 2014, at 2:57 PM, Stephen N Chivers wrote: >>>> I have been trial booting a 3.14-rc2 kernel for a 85xx platform >>>> (dtbImage). [...] >>>> >>>> of_serial f1004500.serial: Unknown serial port found, ignored. >>>> >>>> The serial nodes in boards dts file are specified as: >>>> >>>> serial0: serial@4500 { >>>> cell-index = <0>; >>>> device_type = "serial"; >>>> compatible = "fsl,ns16550", "ns16550"; >>>> reg = <0x4500 0x100>; >>>> clock-frequency = <0>; >>>> interrupts = <0x2a 0x2>; >>>> interrupt-parent = <&mpic>; >>>> }; >>> >>> Wondering if this caused the issue: >>> >>> commit 105353145eafb3ea919f5cdeb652a9d8f270228e >>> Author: Sebastian Hesselbarth >>> Date: Tue Dec 3 14:52:00 2013 +0100 >>> >>> OF: base: match each node compatible against all given matches first >> [...] >> >> 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. > Deleting the "serial" line from the match table fixes the problem. > I tested it for both orderings of compatible. I revert my statement about removing anything from of_serial.c. Instead we should try to prefer matches with compatibles over type/name without compatibles. Something like the patch below (compile tested only)