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

Amitay Isaacs amitay at ozlabs.org
Tue Aug 20 14:14:51 AEST 2019


I like the renaming of device trees to appropriate backends.

The actual contents of the device trees need a bit of work as per the
new scheme.  For now, each backend should be complete with chip-level
targets and having the right hierarchy (based on the backend).

We need sbefifo backend as well.  Now I have a libsbefifo library
(similar to libcronus) which implements all the marshalling details and
implements all the chip-ops.

I can post the patches with libsbefifo once we add the sbefifo backend.


On Tue, 2019-08-06 at 11:37 +1000, Alistair Popple wrote:
> 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
> 

Amitay.
-- 

Art is man's attempt to improve on nature.



More information about the Pdbg mailing list