Merge tag 'devicetree-for-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull Devicetree updates from Rob Herring: "A bit bigger than normal as I've been busy this cycle. There's a few things with dependencies and a few things subsystem maintainers didn't pick up, so I'm taking them thru my tree. The fixes from Johan didn't get into linux-next, but they've been waiting for some time now and they are what's left of what subsystem maintainers didn't pick up. Summary: - Sync dtc with upstream version v1.4.7-14-gc86da84d30e4 - Work to get rid of direct accesses to struct device_node name and type pointers in preparation for removing them. New helpers for parsing DT cpu nodes and conversions to use the helpers. printk conversions to %pOFn for printing DT node names. Most went thru subystem trees, so this is the remainder. - Fixes to DT child node lookups to actually be restricted to child nodes instead of treewide. - Refactoring of dtb targets out of arch code. This makes the support more uniform and enables building all dtbs on c6x, microblaze, and powerpc. - Various DT binding updates for Renesas r8a7744 SoC - Vendor prefixes for Facebook, OLPC - Restructuring of some ARM binding docs moving some peripheral bindings out of board/SoC binding files - New "secure-chosen" binding for secure world settings on ARM - Dual licensing of 2 DT IRQ binding headers" * tag 'devicetree-for-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (78 commits) ARM: dt: relicense two DT binding IRQ headers power: supply: twl4030-charger: fix OF sibling-node lookup NFC: nfcmrvl_uart: fix OF child-node lookup net: stmmac: dwmac-sun8i: fix OF child-node lookup net: bcmgenet: fix OF child-node lookup drm/msm: fix OF child-node lookup drm/mediatek: fix OF sibling-node lookup of: Add missing exports of node name compare functions dt-bindings: Add OLPC vendor prefix dt-bindings: misc: bk4: Add device tree binding for Liebherr's BK4 SPI bus dt-bindings: thermal: samsung: Add SPDX license identifier dt-bindings: clock: samsung: Add SPDX license identifiers dt-bindings: timer: ostm: Add R7S9210 support dt-bindings: phy: rcar-gen2: Add r8a7744 support dt-bindings: can: rcar_can: Add r8a7744 support dt-bindings: timer: renesas, cmt: Document r8a7744 CMT support dt-bindings: watchdog: renesas-wdt: Document r8a7744 support dt-bindings: thermal: rcar: Add device tree support for r8a7744 Documentation: dt: Add binding for /secure-chosen/stdout-path dt-bindings: arm: zte: Move sysctrl bindings to their own doc ...
This commit is contained in:
@@ -293,9 +293,6 @@ $(BOOT_TARGETS2): vmlinux
|
||||
bootwrapper_install:
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
||||
|
||||
%.dtb: scripts
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
||||
|
||||
# Used to create 'merged defconfigs'
|
||||
# To use it $(call) it with the first argument as the base defconfig
|
||||
# and the second argument as a space separated list of .config files to merge,
|
||||
|
@@ -304,9 +304,9 @@ image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
|
||||
dtbImage.adder875-redboot
|
||||
|
||||
# Board ports in arch/powerpc/platform/52xx/Kconfig
|
||||
image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 lite5200.dtb
|
||||
image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200b lite5200b.dtb
|
||||
image-$(CONFIG_PPC_MEDIA5200) += cuImage.media5200 media5200.dtb
|
||||
image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200
|
||||
image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200b
|
||||
image-$(CONFIG_PPC_MEDIA5200) += cuImage.media5200
|
||||
|
||||
# Board ports in arch/powerpc/platform/82xx/Kconfig
|
||||
image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads
|
||||
@@ -381,11 +381,11 @@ $(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperb
|
||||
$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))
|
||||
|
||||
# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
|
||||
$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
|
||||
$(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/dts/%.dtb FORCE
|
||||
$(call if_changed,wrap,$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
|
||||
$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
|
||||
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/dts/%.dtb FORCE
|
||||
$(call if_changed,wrap,$*,,$(obj)/dts/$*.dtb)
|
||||
|
||||
# This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
|
||||
# prefix
|
||||
@@ -395,36 +395,33 @@ $(obj)/vmlinux.strip: vmlinux
|
||||
$(obj)/uImage: vmlinux $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,uboot)
|
||||
|
||||
$(obj)/uImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
$(obj)/uImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/uImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb)
|
||||
$(obj)/uImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,uboot-$*,,$(obj)/dts/$*.dtb)
|
||||
|
||||
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
$(obj)/cuImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,cuboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
|
||||
$(obj)/cuImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,cuboot-$*,,$(obj)/dts/$*.dtb)
|
||||
|
||||
$(obj)/simpleImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
$(obj)/simpleImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,simpleboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb)
|
||||
$(obj)/simpleImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,simpleboot-$*,,$(obj)/dts/$*.dtb)
|
||||
|
||||
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
$(obj)/treeImage.initrd.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,treeboot-$*,,$(obj)/dts/$*.dtb,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)
|
||||
$(obj)/treeImage.%: vmlinux $(obj)/dts/%.dtb $(wrapperbits) FORCE
|
||||
$(call if_changed,wrap,treeboot-$*,,$(obj)/dts/$*.dtb)
|
||||
|
||||
# Rule to build device tree blobs
|
||||
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
|
||||
$(call if_changed_dep,dtc)
|
||||
|
||||
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
|
||||
$(call if_changed_dep,dtc)
|
||||
# Needed for the above targets to work with dts/fsl/ files
|
||||
$(obj)/dts/%.dtb: $(obj)/dts/fsl/%.dtb
|
||||
@cp $< $@
|
||||
|
||||
# If there isn't a platform selected then just strip the vmlinux.
|
||||
ifeq (,$(image-y))
|
||||
|
6
arch/powerpc/boot/dts/Makefile
Normal file
6
arch/powerpc/boot/dts/Makefile
Normal file
@@ -0,0 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
subdir-y += fsl
|
||||
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
4
arch/powerpc/boot/dts/fsl/Makefile
Normal file
4
arch/powerpc/boot/dts/fsl/Makefile
Normal file
@@ -0,0 +1,4 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
@@ -5,6 +5,8 @@
|
||||
#include <types.h>
|
||||
#include <string.h>
|
||||
|
||||
#define INT_MAX ((int)(~0U>>1))
|
||||
|
||||
#include "of.h"
|
||||
|
||||
typedef unsigned long uintptr_t;
|
||||
|
@@ -200,7 +200,7 @@ void ppc4xx_reset_system(char *cmd)
|
||||
u32 reset_type = DBCR0_RST_SYSTEM;
|
||||
const u32 *prop;
|
||||
|
||||
np = of_find_node_by_type(NULL, "cpu");
|
||||
np = of_get_cpu_node(0, NULL);
|
||||
if (np) {
|
||||
prop = of_get_property(np, "reset-type", NULL);
|
||||
|
||||
|
@@ -66,7 +66,7 @@ static int __init get_freq(char *name, unsigned long *val)
|
||||
int found = 0;
|
||||
|
||||
/* The cpu node should have timebase and clock frequency properties */
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
cpu = of_get_cpu_node(0, NULL);
|
||||
|
||||
if (cpu) {
|
||||
fp = of_get_property(cpu, name, NULL);
|
||||
@@ -147,8 +147,9 @@ void __init mpc8xx_calibrate_decr(void)
|
||||
* we have to enable the timebase). The decrementer interrupt
|
||||
* is wired into the vector table, nothing to do here for that.
|
||||
*/
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
cpu = of_get_cpu_node(0, NULL);
|
||||
virq= irq_of_parse_and_map(cpu, 0);
|
||||
of_node_put(cpu);
|
||||
irq = virq_to_hw(virq);
|
||||
|
||||
sys_tmr2 = immr_map(im_sit);
|
||||
|
@@ -1049,7 +1049,6 @@ core99_reset_cpu(struct device_node *node, long param, long value)
|
||||
unsigned long flags;
|
||||
struct macio_chip *macio;
|
||||
struct device_node *np;
|
||||
struct device_node *cpus;
|
||||
const int dflt_reset_lines[] = { KL_GPIO_RESET_CPU0,
|
||||
KL_GPIO_RESET_CPU1,
|
||||
KL_GPIO_RESET_CPU2,
|
||||
@@ -1059,10 +1058,7 @@ core99_reset_cpu(struct device_node *node, long param, long value)
|
||||
if (macio->type != macio_keylargo)
|
||||
return -ENODEV;
|
||||
|
||||
cpus = of_find_node_by_path("/cpus");
|
||||
if (cpus == NULL)
|
||||
return -ENODEV;
|
||||
for (np = cpus->child; np != NULL; np = np->sibling) {
|
||||
for_each_of_cpu_node(np) {
|
||||
const u32 *num = of_get_property(np, "reg", NULL);
|
||||
const u32 *rst = of_get_property(np, "soft-reset", NULL);
|
||||
if (num == NULL || rst == NULL)
|
||||
@@ -1072,7 +1068,6 @@ core99_reset_cpu(struct device_node *node, long param, long value)
|
||||
break;
|
||||
}
|
||||
}
|
||||
of_node_put(cpus);
|
||||
if (np == NULL || reset_io == 0)
|
||||
reset_io = dflt_reset_lines[param];
|
||||
|
||||
@@ -1504,16 +1499,12 @@ static long g5_reset_cpu(struct device_node *node, long param, long value)
|
||||
unsigned long flags;
|
||||
struct macio_chip *macio;
|
||||
struct device_node *np;
|
||||
struct device_node *cpus;
|
||||
|
||||
macio = &macio_chips[0];
|
||||
if (macio->type != macio_keylargo2 && macio->type != macio_shasta)
|
||||
return -ENODEV;
|
||||
|
||||
cpus = of_find_node_by_path("/cpus");
|
||||
if (cpus == NULL)
|
||||
return -ENODEV;
|
||||
for (np = cpus->child; np != NULL; np = np->sibling) {
|
||||
for_each_of_cpu_node(np) {
|
||||
const u32 *num = of_get_property(np, "reg", NULL);
|
||||
const u32 *rst = of_get_property(np, "soft-reset", NULL);
|
||||
if (num == NULL || rst == NULL)
|
||||
@@ -1523,7 +1514,6 @@ static long g5_reset_cpu(struct device_node *node, long param, long value)
|
||||
break;
|
||||
}
|
||||
}
|
||||
of_node_put(cpus);
|
||||
if (np == NULL || reset_io == 0)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -2515,31 +2505,26 @@ found:
|
||||
* supposed to be set when not supported, but I'm not very confident
|
||||
* that all Apple OF revs did it properly, I do it the paranoid way.
|
||||
*/
|
||||
while (uninorth_base && uninorth_rev > 3) {
|
||||
struct device_node *cpus = of_find_node_by_path("/cpus");
|
||||
if (uninorth_base && uninorth_rev > 3) {
|
||||
struct device_node *np;
|
||||
|
||||
if (!cpus || !cpus->child) {
|
||||
printk(KERN_WARNING "Can't find CPU(s) in device tree !\n");
|
||||
of_node_put(cpus);
|
||||
break;
|
||||
for_each_of_cpu_node(np) {
|
||||
int cpu_count = 1;
|
||||
|
||||
/* Nap mode not supported on SMP */
|
||||
if (of_get_property(np, "flush-on-lock", NULL) ||
|
||||
(cpu_count > 1)) {
|
||||
powersave_nap = 0;
|
||||
of_node_put(np);
|
||||
break;
|
||||
}
|
||||
|
||||
cpu_count++;
|
||||
powersave_nap = 1;
|
||||
}
|
||||
np = cpus->child;
|
||||
/* Nap mode not supported on SMP */
|
||||
if (np->sibling) {
|
||||
of_node_put(cpus);
|
||||
break;
|
||||
}
|
||||
/* Nap mode not supported if flush-on-lock property is present */
|
||||
if (of_get_property(np, "flush-on-lock", NULL)) {
|
||||
of_node_put(cpus);
|
||||
break;
|
||||
}
|
||||
of_node_put(cpus);
|
||||
powersave_nap = 1;
|
||||
printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
|
||||
break;
|
||||
}
|
||||
if (powersave_nap)
|
||||
printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
|
||||
|
||||
/* On CPUs that support it (750FX), lowspeed by default during
|
||||
* NAP mode
|
||||
|
@@ -243,10 +243,9 @@ static void __init l2cr_init(void)
|
||||
{
|
||||
/* Checks "l2cr-value" property in the registry */
|
||||
if (cpu_has_feature(CPU_FTR_L2CR)) {
|
||||
struct device_node *np = of_find_node_by_name(NULL, "cpus");
|
||||
if (!np)
|
||||
np = of_find_node_by_type(NULL, "cpu");
|
||||
if (np) {
|
||||
struct device_node *np;
|
||||
|
||||
for_each_of_cpu_node(np) {
|
||||
const unsigned int *l2cr =
|
||||
of_get_property(np, "l2cr-value", NULL);
|
||||
if (l2cr) {
|
||||
@@ -256,6 +255,7 @@ static void __init l2cr_init(void)
|
||||
_set_L2CR(ppc_override_l2cr_value);
|
||||
}
|
||||
of_node_put(np);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,8 +279,8 @@ static void __init pmac_setup_arch(void)
|
||||
/* Set loops_per_jiffy to a half-way reasonable value,
|
||||
for use until calibrate_delay gets called. */
|
||||
loops_per_jiffy = 50000000 / HZ;
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
if (cpu != NULL) {
|
||||
|
||||
for_each_of_cpu_node(cpu) {
|
||||
fp = of_get_property(cpu, "clock-frequency", NULL);
|
||||
if (fp != NULL) {
|
||||
if (pvr >= 0x30 && pvr < 0x80)
|
||||
@@ -292,8 +292,9 @@ static void __init pmac_setup_arch(void)
|
||||
else
|
||||
/* 601, 603, etc. */
|
||||
loops_per_jiffy = *fp / (2 * HZ);
|
||||
of_node_put(cpu);
|
||||
break;
|
||||
}
|
||||
of_node_put(cpu);
|
||||
}
|
||||
|
||||
/* See if newworld or oldworld */
|
||||
|
Reference in New Issue
Block a user