[Pdbg] [RFC 12/12] libpdbg: Split system and backend definitions

Alistair Popple alistair at popple.id.au
Tue Aug 6 11:37:23 AEST 2019


Signed-off-by: Alistair Popple <alistair at popple.id.au>
---
 Makefile.am            | 33 ++++++--------
 cronus-backend.dts.m4  | 28 ++++++++++++
 host-backend.dts.m4    | 46 ++++++++++++++++++++
 libpdbg/dtb.c          | 97 +++++++++++++++++++++++++++++-------------
 obmc-backend.dts.m4    | 36 ++++++++++++++++
 p8-fsi-backend.dts.m4  | 32 ++++++++++++++
 p8-i2c-backend.dts.m4  | 22 ++++++++++
 p8-pib.dts.m4          | 17 ++++++++
 p8.dts.m4              | 71 +++++++++++++++++++++++++++++++
 p9-fsi.dtsi.m4         | 43 -------------------
 p9-pib.dts.m4          |  4 ++
 p9.dts.m4              | 80 ++++++++++++++++++++++++++++++++++
 p9r-fsi-backend.dts.m4 | 32 ++++++++++++++
 p9r-fsi.dts.m4         | 16 -------
 p9w-fsi-backend.dts.m4 | 32 ++++++++++++++
 p9w-fsi.dts.m4         | 16 -------
 p9z-fsi-backend.dts.m4 | 32 ++++++++++++++
 p9z-fsi.dts.m4         | 16 -------
 src/main.c             |  1 +
 19 files changed, 514 insertions(+), 140 deletions(-)
 create mode 100644 cronus-backend.dts.m4
 create mode 100644 host-backend.dts.m4
 create mode 100644 obmc-backend.dts.m4
 create mode 100644 p8-fsi-backend.dts.m4
 create mode 100644 p8-i2c-backend.dts.m4
 create mode 100644 p8.dts.m4
 delete mode 100644 p9-fsi.dtsi.m4
 create mode 100644 p9.dts.m4
 create mode 100644 p9r-fsi-backend.dts.m4
 delete mode 100644 p9r-fsi.dts.m4
 create mode 100644 p9w-fsi-backend.dts.m4
 delete mode 100644 p9w-fsi.dts.m4
 create mode 100644 p9z-fsi-backend.dts.m4
 delete mode 100644 p9z-fsi.dts.m4

diff --git a/Makefile.am b/Makefile.am
index 0f2906a..14b0a6c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -35,19 +35,17 @@ AM_CFLAGS = -I$(top_srcdir)/ccan/array_size -Wall -Werror -O2
 
 EXTRA_DIST = \
 	fake.dts.m4 \
-	backend.dts.m4 \
-	p8-fsi.dts.m4 \
-	p8-host.dts.m4 \
-	p8-i2c.dts.m4 \
-	p8-kernel.dts.m4 \
 	p8-pib.dts.m4 \
-	p9-fsi.dtsi.m4 \
-	p9-host.dts.m4 \
-	p9-kernel.dts.m4 \
 	p9-pib.dts.m4 \
-	p9r-fsi.dts.m4 \
-	p9w-fsi.dts.m4 \
-	p9z-fsi.dts.m4 \
+	p8-fsi-backend.dts.m4 \
+	p9r-fsi-backend.dts.m4 \
+	p9w-fsi-backend.dts.m4 \
+	p9z-fsi-backend.dts.m4 \
+	p9.dts.m4 \
+	p8.dts.m4 \
+	obmc-backend.dts.m4 \
+	host-backend.dts.m4 \
+	cronus-backend.dts.m4 \
 	template.S \
 	generate_dt_header.sh \
 	src/gdb_parser.rl \
@@ -64,10 +62,10 @@ if TARGET_PPC
 ARCH_FLAGS="-DTARGET_PPC=1"
 endif
 
-DT = fake.dts backend.dts p8-cronus.dts p9-cronus.dts \
-     p8-fsi.dts p8-i2c.dts p8-kernel.dts \
-     p9w-fsi.dts p9r-fsi.dts p9z-fsi.dts p9-kernel.dts \
-     p8-host.dts p9-host.dts
+DT = fake.dts \
+     p9w-fsi-backend.dts p9r-fsi-backend.dts p9z-fsi-backend.dts p8-fsi-backend.dts \
+     p8.dts p9.dts p8-i2c-backend.dts \
+     obmc-backend.dts host-backend.dts cronus-backend.dts
 
 DT_sources = $(DT:.dts=.dtb.S)
 DT_headers = $(DT:.dts=.dt.h)
@@ -253,11 +251,6 @@ RAGEL_V_0 = @echo "  RAGEL   " $@;
 %.dtsi: %.dtsi.m4
 	$(M4_V)$(M4) -I$(dir $<) $< > $@
 
-p9-fsi.dtsi: p9-fsi.dtsi.m4 p9-pib.dts.m4
-p9w-fsi.dts: p9w-fsi.dts.m4 p9-fsi.dtsi
-p9r-fsi.dts: p9r-fsi.dts.m4 p9-fsi.dtsi
-p9z-fsi.dts: p9z-fsi.dts.m4 p9-fsi.dtsi
-
 %.dtb: %.dts
 	$(DTC_V)$(DTC) -i$(dir $@) -I dts $< -O dtb > $@
 
diff --git a/cronus-backend.dts.m4 b/cronus-backend.dts.m4
new file mode 100644
index 0000000..aa31f85
--- /dev/null
+++ b/cronus-backend.dts.m4
@@ -0,0 +1,28 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,cronus-fsi";
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		compatible = "ibm,cronus-pib";
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	mem at 0 {
+		system-path = "/mem at 0";
+ 		target = "/proc at 0/pib at 0/adu at 90000";
+	};
+
+	fsi at 1 {
+		compatible = "ibm,cronus-fsi";
+		system-path = "/proc at 1/fsi at 0";
+	};
+
+	pib at 1 {
+		compatible = "ibm,cronus-pib";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/host-backend.dts.m4 b/host-backend.dts.m4
new file mode 100644
index 0000000..a188045
--- /dev/null
+++ b/host-backend.dts.m4
@@ -0,0 +1,46 @@
+define(`HOST_PIB',`
+	pib@$1 {
+	      #address-cells = <0x2>;
+	      #size-cells = <0x1>;
+	      compatible = "ibm,host-pib";
+	      reg = <$1>;
+	      index = <$1>;
+	      system-path = "/proc@$1/pib@$1";
+	}')dnl
+
+/dts-v1/;
+
+/ {
+	HOST_PIB(0);
+	HOST_PIB(1);
+	HOST_PIB(2);
+	HOST_PIB(3);
+	HOST_PIB(4);
+	HOST_PIB(5);
+	HOST_PIB(6);
+	HOST_PIB(7);
+	HOST_PIB(8);
+	HOST_PIB(9);
+	HOST_PIB(10);
+	HOST_PIB(11);
+	HOST_PIB(12);
+	HOST_PIB(13);
+	HOST_PIB(14);
+	HOST_PIB(15);
+	HOST_PIB(16);
+	HOST_PIB(17);
+	HOST_PIB(18);
+	HOST_PIB(19);
+	HOST_PIB(20);
+	HOST_PIB(21);
+	HOST_PIB(22);
+	HOST_PIB(23);
+	HOST_PIB(24);
+	HOST_PIB(25);
+	HOST_PIB(26);
+	HOST_PIB(27);
+	HOST_PIB(28);
+	HOST_PIB(29);
+	HOST_PIB(30);
+	HOST_PIB(31);
+};
diff --git a/libpdbg/dtb.c b/libpdbg/dtb.c
index f6b235f..98ca374 100644
--- a/libpdbg/dtb.c
+++ b/libpdbg/dtb.c
@@ -30,18 +30,17 @@
 
 #include "fake.dt.h"
 
-#include "p8-i2c.dt.h"
-#include "p8-fsi.dt.h"
-#include "p8-kernel.dt.h"
-#include "p9w-fsi.dt.h"
-#include "p9r-fsi.dt.h"
-#include "p9z-fsi.dt.h"
-#include "p9-kernel.dt.h"
-#include "p8-host.dt.h"
-#include "p9-host.dt.h"
-#include "p8-cronus.dt.h"
-#include "p9-cronus.dt.h"
-#include "backend.dt.h"
+#include "p9.dt.h"
+#include "p8.dt.h"
+
+#include "obmc-backend.dt.h"
+#include "host-backend.dt.h"
+#include "cronus-backend.dt.h"
+#include "p8-fsi-backend.dt.h"
+#include "p8-i2c-backend.dt.h"
+#include "p9w-fsi-backend.dt.h"
+#include "p9r-fsi-backend.dt.h"
+#include "p9z-fsi-backend.dt.h"
 
 #define AMI_BMC "/proc/ractrends/Helper/FwInfo"
 #define OPENFSI_BMC "/sys/bus/platform/devices/gpio-fsi/fsi0/"
@@ -85,9 +84,9 @@ static void *ppc_target(void)
 	FILE *cpuinfo;
 
 	if (!strcmp(pdbg_backend_option, "p8"))
-		return &_binary_p8_host_dtb_o_start;
+		return &_binary_p8_dtb_o_start;
 	else if (!strcmp(pdbg_backend_option, "p9"))
-		return &_binary_p9_host_dtb_o_start;
+		return &_binary_p9_dtb_o_start;
 
 	cpuinfo = fopen("/proc/cpuinfo", "r");
 	if (!cpuinfo)
@@ -114,12 +113,12 @@ static void *ppc_target(void)
 
 	if (strncmp(pos, "POWER8", 6) == 0) {
 		pdbg_log(PDBG_INFO, "Found a POWER8 PPC host system\n");
-		return &_binary_p8_host_dtb_o_start;
+		return &_binary_p8_dtb_o_start;
 	}
 
 	if (strncmp(pos, "POWER9", 6) == 0) {
 		pdbg_log(PDBG_INFO, "Found a POWER9 PPC host system\n");
-		return &_binary_p9_host_dtb_o_start;
+		return &_binary_p9_dtb_o_start;
 	}
 
 	pdbg_log(PDBG_ERROR, "Unsupported CPU type '%s'\n", pos);
@@ -160,13 +159,13 @@ static void *bmc_target(void)
 	switch(chip_id) {
 	case CHIP_ID_P9:
 		pdbg_log(PDBG_INFO, "Found a POWER9 OpenBMC based system\n");
-		return &_binary_p9_kernel_dtb_o_start;
+		return &_binary_p9_dtb_o_start;
 		break;
 
 	case CHIP_ID_P8:
 	case CHIP_ID_P8P:
 		pdbg_log(PDBG_INFO, "Found a POWER8/8+ OpenBMC based system\n");
-		return &_binary_p8_kernel_dtb_o_start;
+		return &_binary_p8_dtb_o_start;
 		break;
 
 	default:
@@ -239,7 +238,7 @@ void *pdbg_default_dtb(void)
 	case PDBG_BACKEND_I2C:
 		/* I2C is only supported on POWER8 */
 		pdbg_log(PDBG_INFO, "Found a POWER8 AMI BMC based system\n");
-		return &_binary_p8_i2c_dtb_o_start;
+		return &_binary_p8_dtb_o_start;
 		break;
 
 	case PDBG_BACKEND_KERNEL:
@@ -254,13 +253,9 @@ void *pdbg_default_dtb(void)
 		}
 
 		if (!strcmp(pdbg_backend_option, "p8"))
-			return &_binary_p8_fsi_dtb_o_start;
-		else if (!strcmp(pdbg_backend_option, "p9w"))
-			return &_binary_p9w_fsi_dtb_o_start;
-		else if (!strcmp(pdbg_backend_option, "p9r"))
-			return &_binary_p9r_fsi_dtb_o_start;
-		else if (!strcmp(pdbg_backend_option, "p9z"))
-			return &_binary_p9z_fsi_dtb_o_start;
+			return &_binary_p8_dtb_o_start;
+		else if (!strncmp(pdbg_backend_option, "p9", 2))
+			return &_binary_p9_dtb_o_start;
 		else {
 			pdbg_log(PDBG_ERROR, "Invalid device type specified\n");
 			pdbg_log(PDBG_ERROR, "Use 'p8' or 'p9r/p9w/p9z'\n");
@@ -277,9 +272,9 @@ void *pdbg_default_dtb(void)
 		}
 
 		if (!strncmp(pdbg_backend_option, "p8", 2))
-			return &_binary_p8_cronus_dtb_o_start;
+			return &_binary_p8_dtb_o_start;
 		else if (!strncmp(pdbg_backend_option, "p9", 2))
-			return &_binary_p9_cronus_dtb_o_start;
+			return &_binary_p9_dtb_o_start;
 		else {
 			pdbg_log(PDBG_ERROR, "Invalid device type specified\n");
 			pdbg_log(PDBG_ERROR, "Use p8@<server> or p9@<server>\n");
@@ -300,5 +295,49 @@ void *pdbg_default_dtb(void)
 
 void *pdbg_default_backend_dtb(void)
 {
-	return &_binary_backend_dtb_o_start;
+	char *dtb = getenv("PDBG_BACKEND_DTB");
+
+	if (dtb)
+		return mmap_dtb(dtb);
+
+	switch(pdbg_backend) {
+	case PDBG_BACKEND_HOST:
+		return &_binary_host_backend_dtb_o_start;
+		break;
+
+	case PDBG_BACKEND_I2C:
+		return &_binary_p8_i2c_backend_dtb_o_start;
+		break;
+
+	case PDBG_BACKEND_KERNEL:
+		return &_binary_obmc_backend_dtb_o_start;
+		break;
+
+	case PDBG_BACKEND_FSI:
+		if (!strcmp(pdbg_backend_option, "p9w"))
+			return &_binary_p9w_fsi_backend_dtb_o_start;
+		else if (!strcmp(pdbg_backend_option, "p9r"))
+			return &_binary_p9r_fsi_backend_dtb_o_start;
+		else if (!strcmp(pdbg_backend_option, "p9z"))
+			return &_binary_p9z_fsi_backend_dtb_o_start;
+		else if (!strcmp(pdbg_backend_option, "p8"))
+			return &_binary_p8_fsi_backend_dtb_o_start;
+		else
+			/* pdbg_default_dtb() should already have
+			 * logged an error */
+			return NULL;
+		break;
+
+	case PDBG_BACKEND_CRONUS:
+		return &_binary_cronus_backend_dtb_o_start;
+		break;
+
+	case PDBG_BACKEND_FAKE:
+		break;
+
+	default:
+		assert(0);
+	}
+
+	return NULL;
 }
diff --git a/obmc-backend.dts.m4 b/obmc-backend.dts.m4
new file mode 100644
index 0000000..a28ef68
--- /dev/null
+++ b/obmc-backend.dts.m4
@@ -0,0 +1,36 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,kernel-fsi";
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		compatible = "ibm,kernel-pib";
+		system-path = "/proc at 0/pib at 0";
+		device-path = "/dev/scom1";
+	};
+
+	sbefifo at 0 {
+		compatible = "ibm,kernel-sbefifo";
+		device-path = "/dev/sbefifo1";
+		system-path = "/proc at 0/fsi at 0/sbefifo at 0";
+	};
+
+	mem at 0 {
+		system-path = "/mem at 0";
+ 		target = "/proc at 0/fsi at 0/sbefifo at 0/sbefifo-mem at 0";
+	};
+
+	fsi at 1 {
+		compatible = "ibm,kernel-fsi";
+		system-path = "/proc at 1/fsi at 0";
+	};
+
+	pib at 1 {
+		compatible = "ibm,kernel-pib";
+		system-path = "/proc at 1/pib at 1";
+		device-path = "/dev/scom2";
+	};
+};
diff --git a/p8-fsi-backend.dts.m4 b/p8-fsi-backend.dts.m4
new file mode 100644
index 0000000..fa5f1f4
--- /dev/null
+++ b/p8-fsi-backend.dts.m4
@@ -0,0 +1,32 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,bmcfsi";
+
+		/* GPIO pin definitions */
+		fsi_clk = <0x0 0x4>;		/* A4 */
+		fsi_dat = <0x0 0x5>; 		/* A5 */
+		fsi_dat_en = <0x20 0x1e>;	/* H6 */
+		fsi_enable = <0x0 0x18>;	/* D0 */
+		cronus_sel = <0x0 0x6>;		/* A6 */
+		clock_delay = <0x14>;
+
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		target = "/proc at 0/fsi at 0/pib at 0";
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	fsi at 1 {
+		target = "/proc at 0/pib at 0/opb at 0/hmfsi at 1";
+		system-path = "/proc at 1/fsi at 1";
+	};
+
+	pib at 1 {
+		target = "/proc at 1/fsi at 1/pib at 1";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/p8-i2c-backend.dts.m4 b/p8-i2c-backend.dts.m4
new file mode 100644
index 0000000..ffd0b06
--- /dev/null
+++ b/p8-i2c-backend.dts.m4
@@ -0,0 +1,22 @@
+/dts-v1/;
+
+/ {
+	pib at 0 {
+		compatible = "ibm,power8-i2c-slave";
+		bus = "/dev/i2c4";
+		reg = <0x50>;
+		index = <0x0>;
+
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	fsi at 1 {
+		target = "/proc at 0/pib at 0/opb at 20010/hmfsi at 0";
+		system-path = "/proc at 1/fsi at 1";
+	};
+
+	pib at 1 {
+		target = "/proc at 1/fsi at 1/pib at 1000";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/p8-pib.dts.m4 b/p8-pib.dts.m4
index 82d11d8..b648d3a 100644
--- a/p8-pib.dts.m4
+++ b/p8-pib.dts.m4
@@ -52,4 +52,21 @@ nhtm at 2010880 {
 	index = <0x0>;
 };
 
+opb at 0 {
+	#address-cells = <0x1>;
+        #size-cells = <0x1>;
+        reg = <0x0 0x20010 0xa>;
+        compatible = "ibm,power8-opb";
+	index = <0x0>;
+
+        hmfsi at 1 {
+                #address-cells = <0x2>;
+                #size-cells = <0x1>;
+                compatible = "ibm,power8-opb-hmfsi";
+                reg = <0x180000 0x80000>;
+                port = <0x2>;
+                index = <0x1>;
+	};
+};
+
 PROC_CORES;
diff --git a/p8.dts.m4 b/p8.dts.m4
new file mode 100644
index 0000000..320bd0c
--- /dev/null
+++ b/p8.dts.m4
@@ -0,0 +1,71 @@
+define(`PIB',`
+	pib@$1 {
+	      #address-cells = <0x2>;
+	      #size-cells = <0x1>;
+	      reg = <$1>;
+	      index = <$1>;
+	      class = "pib";
+	      include(p8-pib.dts.m4)dnl
+	}')dnl
+
+define(`PROC',`
+	proc@$1 {
+		class = "proc";
+		index = <$1>;
+		PIB($1);
+
+		fsi@$1 {
+                        #address-cells = <0x2>;
+                	#size-cells = <0x1>;
+			class = "fsi";
+		        index = <$1>;
+
+			pib@$1 {
+                        	#address-cells = <0x2>;
+                                #size-cells = <0x1>;
+                                reg = <0x0 0x1000 0x7>;
+			        index = <$1>;
+				compatible = "ibm,fsi-pib";
+		       };
+		};
+	}')dnl
+
+/dts-v1/;
+
+/ {
+	#address-cells = <0x1>;
+	#size-cells = <0x0>;
+
+	PROC(0);
+	PROC(1);
+	PROC(2);
+	PROC(3);
+	PROC(4);
+	PROC(5);
+	PROC(6);
+	PROC(7);
+	PROC(8);
+	PROC(9);
+	PROC(10);
+	PROC(11);
+	PROC(12);
+	PROC(13);
+	PROC(14);
+	PROC(15);
+	PROC(16);
+	PROC(17);
+	PROC(18);
+	PROC(19);
+	PROC(20);
+	PROC(21);
+	PROC(22);
+	PROC(23);
+	PROC(24);
+	PROC(25);
+	PROC(26);
+	PROC(27);
+	PROC(28);
+	PROC(29);
+	PROC(30);
+	PROC(31);
+};
diff --git a/p9-fsi.dtsi.m4 b/p9-fsi.dtsi.m4
deleted file mode 100644
index afa7d39..0000000
--- a/p9-fsi.dtsi.m4
+++ /dev/null
@@ -1,43 +0,0 @@
-
-/ {
-	#address-cells = <0x1>;
-	#size-cells = <0x0>;
-
-	fsi0: fsi at 0 {
-		#address-cells = <0x2>;
-		#size-cells = <0x1>;
-		compatible = "ibm,bmcfsi";
-		reg = <0x0 0x0 0x0>;
-
-		index = <0x0>;
-		status = "mustexist";
-
-		pib at 1000 {
-			 #address-cells = <0x2>;
-			 #size-cells = <0x1>;
-			 reg = <0x0 0x1000 0x7>;
-			 index = <0x0>;
-			 compatible = "ibm,fsi-pib", "ibm,power9-fsi-pib";
-			 include(p9-pib.dts.m4)dnl
-		};
-
-		hmfsi at 100000 {
-			#address-cells = <0x2>;
-			#size-cells = <0x1>;
-			compatible = "ibm,fsi-hmfsi";
-			reg = <0x0 0x100000 0x8000>;
-			port = <0x1>;
-			index = <0x1>;
-
-			pib at 1000 {
-				#address-cells = <0x2>;
-				#size-cells = <0x1>;
-				reg = <0x0 0x1000 0x7>;
-				index = <0x1>;
-				compatible = "ibm,fsi-pib", "ibm,power9-fsi-pib";
-				include(p9-pib.dts.m4)dnl
-			};
-		};
-
-	};
-};
diff --git a/p9-pib.dts.m4 b/p9-pib.dts.m4
index 3a99157..173fa2f 100644
--- a/p9-pib.dts.m4
+++ b/p9-pib.dts.m4
@@ -35,6 +35,10 @@ index = <HEX(eval($1, 16))>;
 reg = <0x0 HEX(CHIPLET_BASE($1)) 0xfffff>;
 }')dnl
 
+adu at 90000 {
+          compatible = "ibm,power9-adu";
+          reg = <0x0 0x90000 0x5>;
+};
 
 htm at 5012880 {
 	compatible = "ibm,power9-nhtm";
diff --git a/p9.dts.m4 b/p9.dts.m4
new file mode 100644
index 0000000..25f15c0
--- /dev/null
+++ b/p9.dts.m4
@@ -0,0 +1,80 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <0x1>;
+	#size-cells = <0x0>;
+
+	proc at 0 {
+		index = <0x0>;
+		class = "proc";
+
+		pib at 0 {
+			#address-cells = <0x2>;
+			#size-cells = <0x1>;
+
+			index = <0x0>;
+			class = "pib";
+			include(p9-pib.dts.m4)dnl
+		};
+
+		fsi at 0 {
+			#address-cells = <0x2>;
+			#size-cells = <0x1>;
+
+		      	index = <0x0>;
+			class = "fsi";
+
+			pib at 1000 {
+				 reg = < 0x00 0x1000 0x07 >;
+				 index = < 0x00 >;
+				 compatible = "ibm,fsi-pib", "ibm,power9-fsi-pib";
+			};
+
+			hmfsi at 100000 {
+				#address-cells = <0x2>;
+				#size-cells = <0x1>;
+				compatible = "ibm,fsi-hmfsi";
+				reg = <0x0 0x100000 0x8000>;
+				port = <0x1>;
+				index = <0x1>;
+			};
+
+			sbefifo at 2400 {
+				reg = <0x0 0x2400 0x7>;
+				index = <0x0>;
+
+				sbefifo-mem at 0 {
+					index = <0x0>;
+					compatible = "ibm,sbefifo-mem";
+				};
+			};
+		};
+	};
+
+	proc at 1 {
+		index = <0x1>;
+		class = "proc";
+
+		pib at 1 {
+			#address-cells = <0x2>;
+			#size-cells = <0x1>;
+
+		      	index = <0x1>;
+			class = "pib";
+			include(p9-pib.dts.m4)dnl
+		};
+
+		fsi at 0 {
+			#address-cells = <0x2>;
+			#size-cells = <0x1>;
+
+			index = <0x1>;
+			class = "fsi";
+		};
+	};
+
+	mem at 0 {
+	      index = <0x0>;
+	      class = "mem";
+	};
+};
diff --git a/p9r-fsi-backend.dts.m4 b/p9r-fsi-backend.dts.m4
new file mode 100644
index 0000000..1630823
--- /dev/null
+++ b/p9r-fsi-backend.dts.m4
@@ -0,0 +1,32 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,bmcfsi";
+
+		/* GPIO pin definitions */
+		fsi_clk = <0x1e0 0x10>;		/* AA0 */
+		fsi_dat = <0x1e0 0x12>;		/* AA2 */
+		fsi_dat_en = <0x80 0xa>;	/* R2 */
+		fsi_enable = <0x0 0x18>;	/* D0 */
+		cronus_sel = <0x0 0x6>;		/* A6 */
+		clock_delay = <0x14>;
+
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		target = "/proc at 0/fsi at 0/pib at 1000";
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	fsi at 1 {
+		target = "/proc at 0/fsi at 0/hmfsi at 0";
+		system-path = "/proc at 1/fsi at 1";
+	};
+
+	pib at 1 {
+		target = "/proc at 1/fsi at 1/pib at 1000";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/p9r-fsi.dts.m4 b/p9r-fsi.dts.m4
deleted file mode 100644
index 2165bae..0000000
--- a/p9r-fsi.dts.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-
-/include/ "p9-fsi.dtsi"
-
-/ {
-};
-
-&fsi0 {
-	/* GPIO pin definitions */
-	fsi_clk = <0x1e0 0x10>;		/* AA0 */
-	fsi_dat = <0x1e0 0x12>;		/* AA2 */
-	fsi_dat_en = <0x80 0xa>;	/* R2 */
-	fsi_enable = <0x0 0x18>;	/* D0 */
-	cronus_sel = <0x0 0x6>;		/* A6 */
-	clock_delay = <0x14>;
-};
diff --git a/p9w-fsi-backend.dts.m4 b/p9w-fsi-backend.dts.m4
new file mode 100644
index 0000000..2696459
--- /dev/null
+++ b/p9w-fsi-backend.dts.m4
@@ -0,0 +1,32 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,bmcfsi";
+
+		/* GPIO pin definitions */
+		fsi_clk = <0x1e0 0x10>;		/* AA0 */
+		fsi_dat = <0x20 0x0>; 		/* E0 */
+		fsi_dat_en = <0x80 0xa>;	/* R2 */
+		fsi_enable = <0x0 0x18>;	/* D0 */
+		cronus_sel = <0x0 0x6>;		/* A6 */
+		clock_delay = <0x14>;
+
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		target = "/proc at 0/fsi at 0/pib at 1000";
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	fsi at 1 {
+		target = "/proc at 0/fsi at 0/hmfsi at 0";
+		system-path = "/proc at 1/fsi at 1";
+	};
+
+	pib at 1 {
+		target = "/proc at 1/fsi at 1/pib at 1000";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/p9w-fsi.dts.m4 b/p9w-fsi.dts.m4
deleted file mode 100644
index 224c665..0000000
--- a/p9w-fsi.dts.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-
-/include/ "p9-fsi.dtsi"
-
-/ {
-};
-
-&fsi0 {
-	/* GPIO pin definitions */
-	fsi_clk = <0x1e0 0x10>;		/* AA0 */
-	fsi_dat = <0x20 0x0>; 		/* E0 */
-	fsi_dat_en = <0x80 0xa>;	/* R2 */
-	fsi_enable = <0x0 0x18>;	/* D0 */
-	cronus_sel = <0x0 0x6>;		/* A6 */
-	clock_delay = <0x14>;
-};
diff --git a/p9z-fsi-backend.dts.m4 b/p9z-fsi-backend.dts.m4
new file mode 100644
index 0000000..d0956cf
--- /dev/null
+++ b/p9z-fsi-backend.dts.m4
@@ -0,0 +1,32 @@
+/dts-v1/;
+
+/ {
+	fsi at 0 {
+		compatible = "ibm,bmcfsi";
+
+		/* GPIO pin definitions */
+		fsi_clk = <0x0 0x13>;		/* C3 */
+		fsi_dat = <0x0 0x12>; 		/* C2 */
+		fsi_dat_en = <0x78 0x16>;	/* O6 */
+		fsi_enable = <0x0 0x18>;	/* D0 */
+		cronus_sel = <0x78 0x1e>;	/* P6 */
+		clock_delay = <0x14>;
+
+		system-path = "/proc at 0/fsi at 0";
+	};
+
+	pib at 0 {
+		target = "/proc at 0/fsi at 0/pib at 1000";
+		system-path = "/proc at 0/pib at 0";
+	};
+
+	fsi at 1 {
+		target = "/proc at 0/fsi at 0/hmfsi at 0";
+		system-path = "/proc at 1/fsi at 1";
+	};
+
+	pib at 1 {
+		target = "/proc at 1/fsi at 1/pib at 1000";
+		system-path = "/proc at 1/pib at 1";
+	};
+};
diff --git a/p9z-fsi.dts.m4 b/p9z-fsi.dts.m4
deleted file mode 100644
index 87ad5c2..0000000
--- a/p9z-fsi.dts.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-
-/include/ "p9-fsi.dtsi"
-
-/ {
-};
-
-&fsi0 {
-	/* GPIO pin definitions */
-	fsi_clk = <0x0 0x13>;		/* C3 */
-	fsi_dat = <0x0 0x12>; 		/* C2 */
-	fsi_dat_en = <0x78 0x16>;	/* O6 */
-	fsi_enable = <0x0 0x18>;	/* D0 */
-	cronus_sel = <0x78 0x1e>;	/* P6 */
-	clock_delay = <0x14>;
-};
diff --git a/src/main.c b/src/main.c
index 3a8b0a0..99e4097 100644
--- a/src/main.c
+++ b/src/main.c
@@ -582,6 +582,7 @@ int main(int argc, char *argv[])
 		pdbg_set_backend(backend, device_node);
 
 	pdbg_targets_init(NULL);
+	pdbg_backend_init(NULL);
 
 	if (pathsel_count) {
 		if (!path_target_parse(pathsel, pathsel_count))
-- 
2.20.1



More information about the Pdbg mailing list