[PATCH] of: Fix comparison of "compatible" properties

David Miller davem at davemloft.net
Thu Mar 18 17:18:47 EST 2010


From: Grant Likely <grant.likely at secretlab.ca>
Date: Wed, 17 Mar 2010 19:01:00 -0600

> Commit 7c7b60cb87547b1664a4385c187f029bf514a737
> "of: put default string compare and #a/s-cell values into common header"
> 
> Breaks various things on powerpc due to using strncasecmp instead of
> strcasecmp for comparing against "compatible" strings.
> 
> This causes things like the 4xx PCI code to fail miserably due to the
> partial matches in code like this:
> 
>        for_each_compatible_node(np, NULL, "ibm,plb-pcix")
>                ppc4xx_probe_pcix_bridge(np);
>        for_each_compatible_node(np, NULL, "ibm,plb-pci")
>                ppc4xx_probe_pci_bridge(np);
> 
> This reverts us to use strcasecmp. I do wonder why microblase and sparc
> want the partial matches though. For sparc it could be historical, but
> microblaze is probably doing the wrong thing so this patch also changes
> the microblaze behaviour to use not allow partial matches.  Michal will
> surely beat me over the head with a cluestick if I'm wrong, in which
> case I'll fix this patch.
> 
> It's not quite right to do partial name match. Entries in a compatible
> list are meant to be matched whole. If a device is compatible with both
> "foo" and "foo1", then the device should have both strings in its
> "compatible" property.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
>       (for patch description)
> Signed-off-by: Grant Likely <grant.likely at secretlab.ca>

Acked-by: David S. Miller <davem at davemloft.net>


More information about the devicetree-discuss mailing list