DeviceTree fixes for 3.18:

- 2 fixes for OF selftest code
 - Fix for PowerPC address parsing to disable work-around except on old
   PowerMACs
 - Fix a crash when earlycon is enabled, but no device is found
 - DT documentation fixes and missing vendor prefixes
 
 All but the doc updates are also for stable.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABAgAGBQJUbqAVAAoJEMhvYp4jgsXiNLUH/A5cpNKcs2D0GCpDxxkZa6X/
 o5vwuECwd7dFH83lkFWdNFCNJ6B7hUUG3RDO63SgzZch2auQR1yETJrXSbUNeDKM
 HMp3CVvVjqFz7h86H2x+mijxUPJl7YWtFuC1RQUJkMGULC16BnYLSVGrrqHI37BJ
 E5hdmfJtARUGcmZO291JB9bdfuR5gAfIR4GIYsAQHn0RbiuST/L1DyL2QFkh69eW
 yyeB9elIw+xYBUlEVMkq5LmH12l0VA1eSIofBWEfj40cCax1CblL1nzV1+s7oHpv
 JrATuyfxlTjs/tdUeeV/lMT4Vg/ICWsbPJKWb4UaJv0nH+u+oGiKSCyl5X4DH4c=
 =M65+
 -----END PGP SIGNATURE-----

Merge tag 'devicetree-fixes-for-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull devicetree fixes from Rob Herring:
 "DeviceTree fixes for 3.18:

   - two fixes for OF selftest code
   - fix for PowerPC address parsing to disable work-around except on
     old PowerMACs
   - fix a crash when earlycon is enabled, but no device is found
   - DT documentation fixes and missing vendor prefixes

  All but the doc updates are also for stable"

* tag 'devicetree-fixes-for-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
  of/selftest: Fix testing when /aliases is missing
  of/selftest: Fix off-by-one error in removal path
  documentation: pinctrl bindings: Fix trivial typo 'abitrary'
  devicetree: bindings: Add vendor prefix for Micron Technology, Inc.
  of: Add vendor prefix for Chips&Media, Inc.
  of/base: Fix PowerPC address parsing hack
  devicetree: vendor-prefixes.txt: fix whitespace
  of: Fix crash if an earlycon driver is not found
  of/irq: Drop obsolete 'interrupts' vs 'interrupts-extended' text
  of: Spelling s/stucture/structure/
  devicetree: bindings: add sandisk to the vendor prefixes
This commit is contained in:
Linus Torvalds 2014-11-21 16:40:41 -08:00
commit 2e29a6d086
18 changed files with 42 additions and 25 deletions

View file

@ -30,10 +30,6 @@ should only be used when a device has multiple interrupt parents.
Example: Example:
interrupts-extended = <&intc1 5 1>, <&intc2 1 0>; interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;
A device node may contain either "interrupts" or "interrupts-extended", but not
both. If both properties are present, then the operating system should log an
error and use only the data in "interrupts".
2) Interrupt controller nodes 2) Interrupt controller nodes
----------------------------- -----------------------------

View file

@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
TZ1090-PDC's pin configuration nodes act as a container for an abitrary number TZ1090-PDC's pin configuration nodes act as a container for an arbitrary number
of subnodes. Each of these subnodes represents some desired configuration for a of subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
TZ1090's pin configuration nodes act as a container for an abitrary number of TZ1090's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Lantiq's pin configuration nodes act as a container for an abitrary number of Lantiq's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those group(s), and two pin configuration parameters: mux function to select on those group(s), and two pin configuration parameters:

View file

@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Lantiq's pin configuration nodes act as a container for an abitrary number of Lantiq's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those group(s), and two pin configuration parameters: mux function to select on those group(s), and two pin configuration parameters:

View file

@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Tegra's pin configuration nodes act as a container for an abitrary number of Tegra's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -13,7 +13,7 @@ Optional properties:
Please refer to pinctrl-bindings.txt in this directory for details of the common Please refer to pinctrl-bindings.txt in this directory for details of the common
pinctrl bindings used by client devices. pinctrl bindings used by client devices.
SiRFprimaII's pinmux nodes act as a container for an abitrary number of subnodes. SiRFprimaII's pinmux nodes act as a container for an arbitrary number of subnodes.
Each of these subnodes represents some desired configuration for a group of pins. Each of these subnodes represents some desired configuration for a group of pins.
Required subnode-properties: Required subnode-properties:

View file

@ -32,7 +32,7 @@ Required properties:
Please refer to pinctrl-bindings.txt in this directory for details of the common Please refer to pinctrl-bindings.txt in this directory for details of the common
pinctrl bindings used by client devices. pinctrl bindings used by client devices.
SPEAr's pinmux nodes act as a container for an abitrary number of subnodes. Each SPEAr's pinmux nodes act as a container for an arbitrary number of subnodes. Each
of these subnodes represents muxing for a pin, a group, or a list of pins or of these subnodes represents muxing for a pin, a group, or a list of pins or
groups. groups.

View file

@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Qualcomm's pin configuration nodes act as a container for an abitrary number of Qualcomm's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -47,7 +47,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
The pin configuration nodes act as a container for an abitrary number of The pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Qualcomm's pin configuration nodes act as a container for an abitrary number of Qualcomm's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -47,7 +47,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
The pin configuration nodes act as a container for an abitrary number of The pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node". phrase "pin configuration node".
Qualcomm's pin configuration nodes act as a container for an abitrary number of Qualcomm's pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a subnodes. Each of these subnodes represents some desired configuration for a
pin, a group, or a list of pins or groups. This configuration can include the pin, a group, or a list of pins or groups. This configuration can include the
mux function to select on those pin(s)/group(s), and various pin configuration mux function to select on those pin(s)/group(s), and various pin configuration

View file

@ -34,6 +34,7 @@ chipidea Chipidea, Inc
chrp Common Hardware Reference Platform chrp Common Hardware Reference Platform
chunghwa Chunghwa Picture Tubes Ltd. chunghwa Chunghwa Picture Tubes Ltd.
cirrus Cirrus Logic, Inc. cirrus Cirrus Logic, Inc.
cnm Chips&Media, Inc.
cortina Cortina Systems, Inc. cortina Cortina Systems, Inc.
crystalfontz Crystalfontz America, Inc. crystalfontz Crystalfontz America, Inc.
dallas Maxim Integrated Products (formerly Dallas Semiconductor) dallas Maxim Integrated Products (formerly Dallas Semiconductor)
@ -92,6 +93,7 @@ maxim Maxim Integrated Products
mediatek MediaTek Inc. mediatek MediaTek Inc.
micrel Micrel Inc. micrel Micrel Inc.
microchip Microchip Technology Inc. microchip Microchip Technology Inc.
micron Micron Technology Inc.
mitsubishi Mitsubishi Electric Corporation mitsubishi Mitsubishi Electric Corporation
mosaixtech Mosaix Technologies, Inc. mosaixtech Mosaix Technologies, Inc.
moxa Moxa moxa Moxa
@ -127,6 +129,7 @@ renesas Renesas Electronics Corporation
ricoh Ricoh Co. Ltd. ricoh Ricoh Co. Ltd.
rockchip Fuzhou Rockchip Electronics Co., Ltd rockchip Fuzhou Rockchip Electronics Co., Ltd
samsung Samsung Semiconductor samsung Samsung Semiconductor
sandisk Sandisk Corporation
sbs Smart Battery System sbs Smart Battery System
schindler Schindler schindler Schindler
seagate Seagate Technology PLC seagate Seagate Technology PLC
@ -138,7 +141,7 @@ silergy Silergy Corp.
sirf SiRF Technology, Inc. sirf SiRF Technology, Inc.
sitronix Sitronix Technology Corporation sitronix Sitronix Technology Corporation
smsc Standard Microsystems Corporation smsc Standard Microsystems Corporation
snps Synopsys, Inc. snps Synopsys, Inc.
solidrun SolidRun solidrun SolidRun
sony Sony Corporation sony Sony Corporation
spansion Spansion Inc. spansion Spansion Inc.

View file

@ -450,6 +450,21 @@ static struct of_bus *of_match_bus(struct device_node *np)
return NULL; return NULL;
} }
static int of_empty_ranges_quirk(void)
{
if (IS_ENABLED(CONFIG_PPC)) {
/* To save cycles, we cache the result */
static int quirk_state = -1;
if (quirk_state < 0)
quirk_state =
of_machine_is_compatible("Power Macintosh") ||
of_machine_is_compatible("MacRISC");
return quirk_state;
}
return false;
}
static int of_translate_one(struct device_node *parent, struct of_bus *bus, static int of_translate_one(struct device_node *parent, struct of_bus *bus,
struct of_bus *pbus, __be32 *addr, struct of_bus *pbus, __be32 *addr,
int na, int ns, int pna, const char *rprop) int na, int ns, int pna, const char *rprop)
@ -475,12 +490,10 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus,
* This code is only enabled on powerpc. --gcl * This code is only enabled on powerpc. --gcl
*/ */
ranges = of_get_property(parent, rprop, &rlen); ranges = of_get_property(parent, rprop, &rlen);
#if !defined(CONFIG_PPC) if (ranges == NULL && !of_empty_ranges_quirk()) {
if (ranges == NULL) {
pr_err("OF: no ranges; cannot translate\n"); pr_err("OF: no ranges; cannot translate\n");
return 1; return 1;
} }
#endif /* !defined(CONFIG_PPC) */
if (ranges == NULL || rlen == 0) { if (ranges == NULL || rlen == 0) {
offset = of_read_number(addr, na); offset = of_read_number(addr, na);
memset(addr, 0, pna * 4); memset(addr, 0, pna * 4);

View file

@ -247,7 +247,7 @@ void of_node_release(struct kobject *kobj)
* @allocflags: Allocation flags (typically pass GFP_KERNEL) * @allocflags: Allocation flags (typically pass GFP_KERNEL)
* *
* Copy a property by dynamically allocating the memory of both the * Copy a property by dynamically allocating the memory of both the
* property stucture and the property name & contents. The property's * property structure and the property name & contents. The property's
* flags have the OF_DYNAMIC bit set so that we can differentiate between * flags have the OF_DYNAMIC bit set so that we can differentiate between
* dynamically allocated properties and not. * dynamically allocated properties and not.
* Returns the newly allocated property or NULL on out of memory error. * Returns the newly allocated property or NULL on out of memory error.

View file

@ -773,7 +773,7 @@ int __init early_init_dt_scan_chosen_serial(void)
if (offset < 0) if (offset < 0)
return -ENODEV; return -ENODEV;
while (match->compatible) { while (match->compatible[0]) {
unsigned long addr; unsigned long addr;
if (fdt_node_check_compatible(fdt, offset, match->compatible)) { if (fdt_node_check_compatible(fdt, offset, match->compatible)) {
match++; match++;

View file

@ -896,10 +896,14 @@ static void selftest_data_remove(void)
return; return;
} }
while (last_node_index >= 0) { while (last_node_index-- > 0) {
if (nodes[last_node_index]) { if (nodes[last_node_index]) {
np = of_find_node_by_path(nodes[last_node_index]->full_name); np = of_find_node_by_path(nodes[last_node_index]->full_name);
if (strcmp(np->full_name, "/aliases") != 0) { if (np == nodes[last_node_index]) {
if (of_aliases == np) {
of_node_put(of_aliases);
of_aliases = NULL;
}
detach_node_and_children(np); detach_node_and_children(np);
} else { } else {
for_each_property_of_node(np, prop) { for_each_property_of_node(np, prop) {
@ -908,7 +912,6 @@ static void selftest_data_remove(void)
} }
} }
} }
last_node_index--;
} }
} }
@ -921,6 +924,8 @@ static int __init of_selftest(void)
res = selftest_data_add(); res = selftest_data_add();
if (res) if (res)
return res; return res;
if (!of_aliases)
of_aliases = of_find_node_by_path("/aliases");
np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a");
if (!np) { if (!np) {