Merge tag 'devicetree-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull DeviceTree updates from Rob Herring: - remove most of_platform_populate() calls in arch code. Now the DT core code calls it in the default case and platforms only need to call it if they have special needs - use pr_fmt on all the DT core print statements - CoreSight binding doc improvements to block name descriptions - add dt_to_config script which can parse dts files and list corresponding kernel config options - fix memory leak hit with a PowerMac DT - correct a bunch of STMicro compatible strings to use the correct vendor prefix - fix DA9052 PMIC binding doc to match what is actually used in dts files * tag 'devicetree-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (35 commits) documentation: da9052: Update regulator bindings names to match DA9052/53 DTS expectations xtensa: Partially Revert "xtensa: Remove unnecessary of_platform_populate with default match table" xtensa: Fix build error due to missing include file MIPS: ath79: Add missing include file Fix spelling errors in Documentation/devicetree ARM: dts: fix STMicroelectronics compatible strings powerpc/dts: fix STMicroelectronics compatible strings Documentation: dt: i2c: use correct STMicroelectronics vendor prefix scripts/dtc: dt_to_config - kernel config options for a devicetree of: fdt: mark unflattened tree as detached of: overlay: add resolver error prints coresight: document binding acronyms Documentation/devicetree: document cavium-pip rx-delay/tx-delay properties of: use pr_fmt prefix for all console printing of/irq: Mark initialised interrupt controllers as populated of: fix memory leak related to safe_name() Revert "of/platform: export of_default_bus_match_table" of: unittest: use of_platform_default_populate() to populate default bus memory: omap-gpmc: use of_platform_default_populate() to populate default bus bus: uniphier-system-bus: use of_platform_default_populate() to populate default bus ...
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "OF: fdt:" fmt
|
||||
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/initrd.h>
|
||||
@@ -182,14 +184,12 @@ static void populate_properties(const void *blob,
|
||||
|
||||
val = fdt_getprop_by_offset(blob, cur, &pname, &sz);
|
||||
if (!val) {
|
||||
pr_warn("%s: Cannot locate property at 0x%x\n",
|
||||
__func__, cur);
|
||||
pr_warn("Cannot locate property at 0x%x\n", cur);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!pname) {
|
||||
pr_warn("%s: Cannot find property name at 0x%x\n",
|
||||
__func__, cur);
|
||||
pr_warn("Cannot find property name at 0x%x\n", cur);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -439,7 +439,7 @@ static int unflatten_dt_nodes(const void *blob,
|
||||
}
|
||||
|
||||
if (offset < 0 && offset != -FDT_ERR_NOTFOUND) {
|
||||
pr_err("%s: Error %d processing FDT\n", __func__, offset);
|
||||
pr_err("Error %d processing FDT\n", offset);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -472,7 +472,8 @@ static int unflatten_dt_nodes(const void *blob,
|
||||
static void *__unflatten_device_tree(const void *blob,
|
||||
struct device_node *dad,
|
||||
struct device_node **mynodes,
|
||||
void *(*dt_alloc)(u64 size, u64 align))
|
||||
void *(*dt_alloc)(u64 size, u64 align),
|
||||
bool detached)
|
||||
{
|
||||
int size;
|
||||
void *mem;
|
||||
@@ -516,6 +517,11 @@ static void *__unflatten_device_tree(const void *blob,
|
||||
pr_warning("End of tree marker overwritten: %08x\n",
|
||||
be32_to_cpup(mem + size));
|
||||
|
||||
if (detached) {
|
||||
of_node_set_flag(*mynodes, OF_DETACHED);
|
||||
pr_debug("unflattened tree is detached\n");
|
||||
}
|
||||
|
||||
pr_debug(" <- unflatten_device_tree()\n");
|
||||
return mem;
|
||||
}
|
||||
@@ -548,7 +554,8 @@ void *of_fdt_unflatten_tree(const unsigned long *blob,
|
||||
void *mem;
|
||||
|
||||
mutex_lock(&of_fdt_unflatten_mutex);
|
||||
mem = __unflatten_device_tree(blob, dad, mynodes, &kernel_tree_alloc);
|
||||
mem = __unflatten_device_tree(blob, dad, mynodes, &kernel_tree_alloc,
|
||||
true);
|
||||
mutex_unlock(&of_fdt_unflatten_mutex);
|
||||
|
||||
return mem;
|
||||
@@ -1237,7 +1244,7 @@ bool __init early_init_dt_scan(void *params)
|
||||
void __init unflatten_device_tree(void)
|
||||
{
|
||||
__unflatten_device_tree(initial_boot_params, NULL, &of_root,
|
||||
early_init_dt_alloc_memory_arch);
|
||||
early_init_dt_alloc_memory_arch, false);
|
||||
|
||||
/* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */
|
||||
of_alias_scan(early_init_dt_alloc_memory_arch);
|
||||
@@ -1294,7 +1301,7 @@ static int __init of_fdt_raw_init(void)
|
||||
|
||||
if (of_fdt_crc32 != crc32_be(~0, initial_boot_params,
|
||||
fdt_totalsize(initial_boot_params))) {
|
||||
pr_warn("fdt: not creating '/sys/firmware/fdt': CRC check failed\n");
|
||||
pr_warn("not creating '/sys/firmware/fdt': CRC check failed\n");
|
||||
return 0;
|
||||
}
|
||||
of_fdt_raw_attr.size = fdt_totalsize(initial_boot_params);
|
||||
|
Reference in New Issue
Block a user