device_tree: Have absolute paths start with '/'

Currently DT paths are *not* expected to start with '/'. This is not
what the spec says (see Devicetree Specification v0.2, 2.2.3 Path Names)
and also not what is done by Linux.

Change dt_find_node_by_path() to expect paths to start with '/' and add
a leading '/' to all DT path strings. Besides the compatibility with the
spec this change is also needed to support aliases in the future.

This patch was adapted from depthcharge's http://crosreview.com/1252770

Change-Id: Ibdf59ccbb4ead38c6193b630642fd1f1e847dd89
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32865
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/cavium/cn81xx/soc.c b/src/soc/cavium/cn81xx/soc.c
index 20542e5..efe7d6d 100644
--- a/src/soc/cavium/cn81xx/soc.c
+++ b/src/soc/cavium/cn81xx/soc.c
@@ -185,7 +185,7 @@
 	size_t i;
 
 	/* Set the sclk clock rate. */
-	dt_node = dt_find_node_by_path(tree, "soc@0/sclk", NULL, NULL, 0);
+	dt_node = dt_find_node_by_path(tree, "/soc@0/sclk", NULL, NULL, 0);
 	if (dt_node) {
 		const u32 freq = thunderx_get_io_clock();
 		printk(BIOS_INFO, "%s: Set SCLK to %u Hz\n", __func__, freq);
@@ -195,7 +195,7 @@
 		       __func__);
 
 	/* Set refclkuaa clock rate. */
-	dt_node = dt_find_node_by_path(tree, "soc@0/refclkuaa", NULL,
+	dt_node = dt_find_node_by_path(tree, "/soc@0/refclkuaa", NULL,
 				       NULL, 0);
 	if (dt_node) {
 		const u32 freq = uart_platform_refclk();
@@ -211,7 +211,7 @@
 		char path[32];
 		const uint64_t addr = UAAx_PF_BAR0(i);
 		/* Remove the node */
-		snprintf(path, sizeof(path), "soc@0/serial@%llx", addr);
+		snprintf(path, sizeof(path), "/soc@0/serial@%llx", addr);
 		dt_node = dt_find_node_by_path(tree, path, NULL, NULL, 0);
 		if (!dt_node || uart_is_enabled(i)) {
 			printk(BIOS_INFO, "%s: ignoring %s\n", __func__, path);
@@ -227,7 +227,7 @@
 		u32 phandle = 0;
 		const uint64_t addr = PEM_PEMX_PF_BAR0(i);
 		/* Remove the node */
-		snprintf(path, sizeof(path), "soc@0/pci@%llx", addr);
+		snprintf(path, sizeof(path), "/soc@0/pci@%llx", addr);
 		dt_node = dt_find_node_by_path(tree, path, NULL, NULL, 0);
 		if (!dt_node || bdk_pcie_is_running(0, i)) {
 			printk(BIOS_INFO, "%s: ignoring %s\n", __func__, path);
@@ -239,7 +239,7 @@
 		list_remove(&dt_node->list_node);
 
 		/* Remove phandle to non existing nodes */
-		snprintf(path, sizeof(path), "soc@0/smmu0@%llx", SMMU_PF_BAR0);
+		snprintf(path, sizeof(path), "/soc@0/smmu0@%llx", SMMU_PF_BAR0);
 		dt_node = dt_find_node_by_path(tree, path, NULL, NULL, 0);
 		if (!dt_node) {
 			printk(BIOS_ERR, "%s: SMMU entry not found\n",