diff --git a/p10.dts.m4 b/p10.dts.m4
index aee608f..76bbc4d 100644
--- a/p10.dts.m4
+++ b/p10.dts.m4
@@ -16,8 +16,9 @@ dnl
 dnl CORE([index])
 dnl
 define(`CORE',
-`
-	core@0 {
+` define(`id', eval(`0x$1 % 2'))dnl
+
+	CONCAT(core@, id) {
 		#address-cells = <0x01>;
 		#size-cells = <0x00>;
 		reg = <0x00 0x00 0xfffff>;
@@ -76,21 +77,193 @@ define(`addr', CONCAT(chiplet_id, 000000))dnl
 ')dnl
 
 dnl
-dnl EX_([eq_index, ex_index])
+dnl FC_([index])
 dnl
-define(`EX_',
+define(`FC_',
 `define(`chiplet_id', CONCAT(1, $1))dnl
 define(`addr', CONCAT(chiplet_id, 000000))dnl
 
-	ex@$2 {
+	fc@$1 {
 		#address-cells = <0x02>;
 		#size-cells = <0x01>;
 		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
-		compatible = "ibm,power10-ex";
-		index = <$2>;
+		compatible = "ibm,power10-fc";
+		index = <$1>;
+
+')dnl
+
+dnl
+dnl PAUC_([chiplet], [index])
+dnl
+define(`PAUC_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
 
+	pauc@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-pauc";
+		index = <$2>;
 ')dnl
 
+dnl
+dnl PAU([chiplet], [index])
+dnl
+define(`PAU',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	pau@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-pau";
+		index = <$2>;
+	};
+')
+
+dnl
+dnl IOHS([chiplet], [index])
+dnl
+define(`IOHS',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	iohs@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-iohs";
+		index = <$2>;
+	};
+')
+
+dnl
+dnl MI_([chiplet], [index])
+dnl
+define(`MI_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	mi@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-mi";
+		index = <$2>;
+')
+
+dnl
+dnl MC_([chiplet], [index])
+dnl
+define(`MC_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	mc@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-mc";
+		index = <0x$2>;
+')
+
+dnl
+dnl MCC_([chiplet], [index])
+dnl
+define(`MCC_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+define(`id', eval(`$2 % 2'))dnl
+
+	CONCAT(mcc@, id) {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-mcc";
+		index = <$2>;
+')
+
+dnl
+dnl OMIC([chiplet], [index])
+dnl
+define(`OMIC',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	omic@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-omic";
+		index = <$2>;
+	};
+')
+
+dnl
+dnl OMI_([chiplet], [index])
+dnl
+define(`OMI_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+define(`id', eval(`$2 % 2'))dnl
+
+	CONCAT(omi@, id) {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-omi";
+		index = <$2>;
+')
+
+dnl
+dnl PEC_([chiplet], [index])
+dnl
+define(`PEC_',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	pec@$2 {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-pec";
+		index = <$2>;
+')
+
+dnl
+dnl PHB([chiplet], [index])
+dnl
+define(`PHB',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+define(`id', eval(`$2 % 3'))dnl
+
+	CONCAT(phb@,id) {
+		#address-cells = <0x02>;
+		#size-cells = <0x01>;
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-phb";
+		index = <$2>;
+	};
+')
+
+dnl
+dnl NMMU([chiplet], [index])
+dnl
+define(`NMMU',
+`define(`chiplet_id', $1)dnl
+define(`addr', CONCAT(chiplet_id, 000000))dnl
+
+	nmmu@$2 {
+		reg = <0x00 CONCAT(0x,addr) 0xfffff>;
+		compatible = "ibm,power10-nmmu";
+		index = <$2>;
+	};
+')
+
+dnl
 dnl
 dnl CHIP([index])
 dnl
@@ -139,501 +312,276 @@ define(`CHIP',
 				};
 			};
 
-			CHIPLET__(2)
-				n0 {
-					compatible = "ibm,power10-nest";
-					index = < 0x00 >;
-
-					capp0 {
-						compatible = "ibm,power10-capp";
-						index = < 0x00 >;
-					};
-				};
+			CHIPLET_(2)
+				NMMU(2,0)
 			};
 
-			CHIPLET__(3)
-				n1 {
-					compatible = "ibm,power10-nest";
-					index = < 0x01 >;
-
-					mcs2 {
-						compatible = "ibm,power10-mcs";
-						index = < 0x02 >;
-					};
+			CHIPLET_(3)
+				NMMU(3,1)
+			};
 
-					mcs3 {
-						compatible = "ibm,power10-mcs";
-						index = < 0x03 >;
-					};
+			CHIPLET_(8)
+				PEC_(8,0)
+					PHB(8,0)
+					PHB(8,1)
+					PHB(8,2)
 				};
 			};
 
-			CHIPLET__(4)
-				n2 {
-					compatible = "ibm,power10-nest";
-					index = < 0x02 >;
-
-					capp1 {
-						compatible = "ibm,power10-capp";
-						index = < 0x01 >;
-					};
+			CHIPLET_(9)
+				PEC_(9,1)
+					PHB(9,3)
+					PHB(9,4)
+					PHB(9,5)
 				};
 			};
 
-			CHIPLET__(5)
-				n3 {
-					compatible = "ibm,power10-nest";
-					index = < 0x03 >;
-
-					mcs0 {
-						compatible = "ibm,power10-mcs";
-						index = < 0x00 >;
-					};
-
-					mcs1 {
-						compatible = "ibm,power10-mcs";
-						index = < 0x01 >;
+			CHIPLET_(c)
+				MC_(c,0)
+					MI_(c,0)
+						MCC_(c,0)
+							OMI_(c,0)
+							};
+							OMI_(c,1)
+							};
+						};
+						MCC_(c,1)
+							OMI_(c,2)
+							};
+							OMI_(c,3)
+							};
+						};
 					};
+					OMIC(c,0)
+					OMIC(c,1)
 				};
 			};
 
-			CHIPLET_(6)
-				xbus$1_0: xbus@0 {
-					compatible = "ibm,power10-xbus";
-					index = < 0x01 >;
-					reg = < 0x00 0x6000000 0xfffff >;
+			CHIPLET_(d)
+				MC_(d,1)
+					MI_(d,1)
+						MCC_(d,2)
+							OMI_(d,4)
+							};
+							OMI_(d,5)
+							};
+						};
+						MCC_(d,3)
+							OMI_(d,6)
+							};
+							OMI_(d,7)
+							};
+						};
+					};
+					OMIC(d,2)
+					OMIC(d,3)
 				};
 			};
 
-			CHIPLET_(7)
-				mc@0 {
-					reg = < 0x00 0x7000000 0xfffff >;
-					compatible = "ibm,power10-mc";
-					index = < 0x00 >;
-
-					mca0 {
-						compatible = "ibm,power10-mca";
-						index = < 0x00 >;
-					};
-
-					mca1 {
-						compatible = "ibm,power10-mca";
-						index = < 0x01 >;
-					};
-
-					mca2 {
-						compatible = "ibm,power10-mca";
-						index = < 0x02 >;
-					};
-
-					mca3 {
-						compatible = "ibm,power10-mca";
-						index = < 0x03 >;
-					};
-
-					mcbist {
-						compatible = "ibm,power10-mcbist";
-						index = < 0x00 >;
+			CHIPLET_(e)
+				MC_(e,2)
+					MI_(e,2)
+						MCC_(e,4)
+							OMI_(e,8)
+							};
+							OMI_(e,9)
+							};
+						};
+						MCC_(e,5)
+							OMI_(e,10)
+							};
+							OMI_(e,11)
+							};
+						};
 					};
+					OMIC(e,4)
+					OMIC(e,5)
 				};
 			};
 
-			CHIPLET_(8)
-				mc@1 {
-					reg = < 0x00 0x8000000 0xfffff >;
-					compatible = "ibm,power10-mc";
-					index = < 0x01 >;
-
-					mca0 {
-						compatible = "ibm,power10-mca";
-						index = < 0x04 >;
-					};
-
-					mca1 {
-						compatible = "ibm,power10-mca";
-						index = < 0x05 >;
-					};
-
-					mca2 {
-						compatible = "ibm,power10-mca";
-						index = < 0x06 >;
-					};
-
-					mca3 {
-						compatible = "ibm,power10-mca";
-						index = < 0x07 >;
-					};
-
-					mcbist {
-						compatible = "ibm,power10-mcbist";
-						index = < 0x01 >;
+			CHIPLET_(f)
+				MC_(f,3)
+					MI_(f,3)
+						MCC_(f,6)
+							OMI_(f,12)
+							};
+							OMI_(f,13)
+							};
+						};
+						MCC_(f,7)
+							OMI_(f,14)
+							};
+							OMI_(f,15)
+							};
+						};
 					};
+					OMIC(f,6)
+					OMIC(f,7)
 				};
 			};
 
-			CHIPLET_(9)
-				obus@0 {
-					reg = < 0x00 0x9000000 0xfffff >;
-					compatible = "ibm,power10-obus";
-					index = < 0x00 >;
-				};
-
-				obrick0 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x00 >;
-				};
-
-				obrick1 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x01 >;
-				};
-
-				obrick2 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x02 >;
+			CHIPLET_(10)
+				PAUC_(10,0)
+					PAU(10,0)
 				};
 			};
 
-			CHIPLET_(c)
-				obus@3 {
-					reg = < 0x00 0xc000000 0xfffff >;
-					compatible = "ibm,power10-obus";
-					index = < 0x03 >;
-				};
-
-				obrick0 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x09 >;
-				};
-
-				obrick1 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x0a >;
+			CHIPLET_(11)
+				PAUC_(11,1)
+					PAU(11,3)
 				};
+			};
 
-				obrick2 {
-					compatible = "ibm,power10-obus_brick";
-					index = < 0x0b >;
+			CHIPLET_(12)
+				PAUC_(12,2)
+					PAU(12,4)
+					PAU(12,5)
 				};
 			};
 
-			CHIPLET_(d)
-				pec@d000000 {
-					reg = < 0x00 0xd000000 0xfffff >;
-					compatible = "ibm,power10-pec";
-					index = < 0x00 >;
+			CHIPLET_(13)
+				PAUC_(13,3)
+					PAU(13,6)
+					PAU(13,7)
 				};
+			};
 
-				phb0 {
-					compatible = "ibm,power10-phb";
-					index = < 0x00 >;
-				};
+			CHIPLET_(18)
+				IOHS(18,0)
+			};
 
-				phb1 {
-					compatible = "ibm,power10-phb";
-					index = < 0x01 >;
-				};
+			CHIPLET_(19)
+				IOHS(19,1)
 			};
 
-			CHIPLET_(e)
-				pec@e000000 {
-					reg = < 0x00 0xe000000 0xfffff >;
-					compatible = "ibm,power10-pec";
-					index = < 0x01 >;
-				};
+			CHIPLET_(1a)
+				IOHS(1a,2)
+			};
 
-				phb0 {
-					compatible = "ibm,power10-phb";
-					index = < 0x02 >;
-				};
+			CHIPLET_(1b)
+				IOHS(1b,3)
+			};
 
-				phb1 {
-					compatible = "ibm,power10-phb";
-					index = < 0x03 >;
-				};
+			CHIPLET_(1c)
+				IOHS(1c,4)
 			};
 
-			CHIPLET_(f)
-				pec@f000000 {
-					reg = < 0x00 0xf000000 0xfffff >;
-					compatible = "ibm,power10-pec";
-					index = < 0x02 >;
-				};
+			CHIPLET_(1d)
+				IOHS(1d,5)
+			};
 
-				phb0 {
-					compatible = "ibm,power10-phb";
-					index = < 0x04 >;
-				};
+			CHIPLET_(1e)
+				IOHS(1e,6)
+			};
 
-				phb1 {
-					compatible = "ibm,power10-phb";
-					index = < 0x05 >;
-				};
+			CHIPLET_(1f)
+				IOHS(1f,7)
 			};
 
-			CHIPLET_(10)
+			CHIPLET_(20)
 				EQ_(0)
-					EX_(0,0)
-						CHIPLET_(20)
-							CORE(00)
-						};
-
-						CHIPLET_(21)
-							CORE(01)
-						};
+					FC_(0)
+						CORE(0)
+						CORE(1)
 					};
-
-					EX_(0,1)
-						CHIPLET_(22)
-							CORE(02)
-						};
-
-						CHIPLET_(23)
-							CORE(03)
-						};
+					FC_(1)
+						CORE(2)
+						CORE(3)
 					};
 				};
 			};
 
-			CHIPLET_(11)
+			CHIPLET_(21)
 				EQ_(1)
-					EX_(1,0)
-						CHIPLET_(24)
-							CORE(04)
-						};
-
-						CHIPLET_(25)
-							CORE(05)
-						};
+					FC_(0)
+						CORE(4)
+						CORE(5)
 					};
-
-					EX_(1,1)
-						CHIPLET_(26)
-							CORE(06)
-						};
-
-						CHIPLET_(27)
-							CORE(07)
-						};
+					FC_(1)
+						CORE(6)
+						CORE(7)
 					};
 				};
 			};
 
-			CHIPLET_(12)
+			CHIPLET_(22)
 				EQ_(2)
-					EX_(2,0)
-						CHIPLET_(28)
-							CORE(08)
-						};
-
-						CHIPLET_(29)
-							CORE(09)
-						};
+					FC_(0)
+						CORE(8)
+						CORE(9)
 					};
-
-					EX_(2,1)
-						CHIPLET_(2a)
-							CORE(0a)
-						};
-
-						CHIPLET_(2b)
-							CORE(0b)
-						};
+					FC_(1)
+						CORE(a)
+						CORE(b)
 					};
 				};
 			};
 
-			CHIPLET_(13)
+			CHIPLET_(23)
 				EQ_(3)
-					EX_(3,0)
-						CHIPLET_(2c)
-							CORE(0c)
-						};
-
-						CHIPLET_(2d)
-							CORE(0d)
-						};
+					FC_(0)
+						CORE(c)
+						CORE(d)
 					};
-
-					EX_(3,1)
-						CHIPLET_(2e)
-							CORE(0e)
-						};
-
-						CHIPLET_(2f)
-							CORE(0f)
-						};
+					FC_(1)
+						CORE(e)
+						CORE(f)
 					};
 				};
 			};
 
-			CHIPLET_(14)
+			CHIPLET_(24)
 				EQ_(4)
-					EX_(4,0)
-						CHIPLET_(30)
-							CORE(10)
-						};
-
-						CHIPLET_(31)
-							CORE(11)
-						};
+					FC_(0)
+						CORE(10)
+						CORE(11)
 					};
-
-					EX_(4,1)
-						CHIPLET_(32)
-							CORE(12)
-						};
-
-						CHIPLET_(33)
-							CORE(13)
-						};
+					FC_(1)
+						CORE(12)
+						CORE(13)
 					};
 				};
 			};
 
-			CHIPLET_(15)
+			CHIPLET_(25)
 				EQ_(5)
-					EX_(5,0)
-						CHIPLET_(34)
-							CORE(14)
-						};
-
-						CHIPLET_(35)
-							CORE(15)
-						};
+					FC_(0)
+						CORE(14)
+						CORE(15)
 					};
-
-					EX_(5,1)
-						CHIPLET_(36)
-							CORE(16)
-						};
-
-						CHIPLET_(37)
-							CORE(17)
-						};
+					FC_(1)
+						CORE(16)
+						CORE(17)
 					};
 				};
 			};
 
-			nv0 {
-				compatible = "ibm,power10-nv";
-				index = < 0x00 >;
-			};
-
-			nv1 {
-				compatible = "ibm,power10-nv";
-				index = < 0x01 >;
-			};
-
-			nv2 {
-				compatible = "ibm,power10-nv";
-				index = < 0x02 >;
-			};
-
-			nv3 {
-				compatible = "ibm,power10-nv";
-				index = < 0x03 >;
-			};
-
-			nv4 {
-				compatible = "ibm,power10-nv";
-				index = < 0x04 >;
-			};
-
-			nv5 {
-				compatible = "ibm,power10-nv";
-				index = < 0x05 >;
-			};
-
-			occ0 {
-				compatible = "ibm,power10-occ";
-				index = < 0x00 >;
-			};
-
-			sbe0 {
-				compatible = "ibm,power10-sbe";
-				index = < 0x00 >;
-			};
-
-			ppe0 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x00 >;
-			};
-
-			ppe1 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x0a >;
-			};
-
-			ppe2 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x0d >;
-			};
-
-			ppe3 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x14 >;
-			};
-
-			ppe4 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x19 >;
-			};
-
-			ppe5 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x1e >;
-			};
-
-			ppe6 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x28 >;
-			};
-
-			ppe7 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x29 >;
-			};
-
-			ppe8 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x2a >;
-			};
-
-			ppe9 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x2b >;
-			};
-
-			ppe10 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x2c >;
-			};
-
-			ppe11 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x2d >;
-			};
-
-			ppe12 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x2e >;
-			};
-
-			ppe13 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x32 >;
+			CHIPLET_(26)
+				EQ_(6)
+					FC_(0)
+						CORE(18)
+						CORE(19)
+					};
+					FC_(1)
+						CORE(1a)
+						CORE(1b)
+					};
+				};
 			};
 
-			ppe14 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x34 >;
+			CHIPLET_(27)
+				EQ_(7)
+					FC_(0)
+						CORE(1c)
+						CORE(1d)
+					};
+					FC_(1)
+						CORE(1e)
+						CORE(1f)
+					};
+				};
 			};
 
-			ppe15 {
-				compatible = "ibm,power10-ppe";
-				index = < 0x38 >;
-			};
 		};
 	};
 ')dnl
