// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright 2023 IBM Corp.

&fsim0 {
	status = "okay";

	#address-cells = <2>;
	#size-cells = <0>;

	cfam-reset-gpios = <&gpio0 ASPEED_GPIO(Q, 0) GPIO_ACTIVE_HIGH>;

	cfam@0,0 {
		reg = <0 0>;
		#address-cells = <1>;
		#size-cells = <1>;
		chip-id = <0>;

		scom@1000 {
			compatible = "ibm,fsi2pib";
			reg = <0x1000 0x400>;
		};

		i2c@1800 {
			compatible = "ibm,fsi-i2c-master";
			reg = <0x1800 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			cfam0_i2c0: i2c-bus@0 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0>;	/* OMI01 */
			};

			cfam0_i2c1: i2c-bus@1 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <1>;	/* OMI23 */
			};

			cfam0_i2c10: i2c-bus@a {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <10>;	/* OP3A */
			};

			cfam0_i2c11: i2c-bus@b {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <11>;	/* OP3B */
			};

			cfam0_i2c12: i2c-bus@c {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <12>;	/* OP4A */
			};

			cfam0_i2c13: i2c-bus@d {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <13>;	/* OP4B */
			};

			cfam0_i2c14: i2c-bus@e {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <14>;	/* OP5A */
			};

			cfam0_i2c15: i2c-bus@f {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <15>;	/* OP5B */
			};
		};

		fsi2spi@1c00 {
			compatible = "ibm,fsi2spi";
			reg = <0x1c00 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			cfam0_spi0: spi@0 {
				reg = <0x0>;
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam0_spi1: spi@20 {
				reg = <0x20>;
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam0_spi2: spi@40 {
				reg = <0x40>;
				compatible =  "ibm,fsi2spi";
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam0_spi3: spi@60 {
				reg = <0x60>;
				compatible =  "ibm,fsi2spi";
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};
		};

		sbefifo@2400 {
			compatible = "ibm,p9-sbefifo";
			reg = <0x2400 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			fsi_occ0: occ {
				compatible = "ibm,p10-occ";

				occ-hwmon {
					compatible = "ibm,p10-occ-hwmon";
					ibm,no-poll-on-init;
				};
			};
		};

		fsi_hub0: hub@3400 {
			compatible = "fsi-master-hub";
			reg = <0x3400 0x400>;
			#address-cells = <2>;
			#size-cells = <0>;
		};
	};
};

&fsi_hub0 {
	cfam@1,0 {
		reg = <1 0>;
		#address-cells = <1>;
		#size-cells = <1>;
		chip-id = <1>;

		scom@1000 {
			compatible = "ibm,fsi2pib";
			reg = <0x1000 0x400>;
		};

		i2c@1800 {
			compatible = "ibm,fsi-i2c-master";
			reg = <0x1800 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			cfam1_i2c2: i2c-bus@2 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <2>;	/* OMI45 */
			};

			cfam1_i2c3: i2c-bus@3 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <3>;	/* OMI67 */
			};

			cfam1_i2c10: i2c-bus@a {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <10>;	/* OP3A */
			};

			cfam1_i2c11: i2c-bus@b {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <11>;	/* OP3B */
			};

			cfam1_i2c14: i2c-bus@e {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <14>;	/* OP5A */
			};

			cfam1_i2c15: i2c-bus@f {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <15>;	/* OP5B */
			};

			cfam1_i2c16: i2c-bus@10 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <16>;	/* OP6A */
			};

			cfam1_i2c17: i2c-bus@11 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <17>;	/* OP6B */
			};
		};

		fsi2spi@1c00 {
			compatible = "ibm,fsi2spi";
			reg = <0x1c00 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			cfam1_spi0: spi@0 {
				reg = <0x0>;
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam1_spi1: spi@20 {
				reg = <0x20>;
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam1_spi2: spi@40 {
				reg = <0x40>;
				compatible =  "ibm,fsi2spi";
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};

			cfam1_spi3: spi@60 {
				reg = <0x60>;
				compatible =  "ibm,fsi2spi";
				#address-cells = <1>;
				#size-cells = <0>;

				eeprom@0 {
					at25,byte-len = <0x80000>;
					at25,addr-mode = <4>;
					at25,page-size = <256>;

					compatible = "atmel,at25";
					reg = <0>;
					spi-max-frequency = <1000000>;
				};
			};
		};

		sbefifo@2400 {
			compatible = "ibm,p9-sbefifo";
			reg = <0x2400 0x400>;
			#address-cells = <1>;
			#size-cells = <0>;

			fsi_occ1: occ {
				compatible = "ibm,p10-occ";

				occ-hwmon {
					compatible = "ibm,p10-occ-hwmon";
					ibm,no-poll-on-init;
				};
			};
		};

		fsi_hub1: hub@3400 {
			compatible = "fsi-master-hub";
			reg = <0x3400 0x400>;
			#address-cells = <2>;
			#size-cells = <0>;

			no-scan-on-init;
		};
	};
};

/* Legacy OCC numbering (to get rid of when userspace is fixed) */
&fsi_occ0 {
	reg = <1>;
};

&fsi_occ1 {
	reg = <2>;
};

/ {
	aliases {
		i2c100 = &cfam0_i2c0;
		i2c101 = &cfam0_i2c1;
		i2c110 = &cfam0_i2c10;
		i2c111 = &cfam0_i2c11;
		i2c112 = &cfam0_i2c12;
		i2c113 = &cfam0_i2c13;
		i2c114 = &cfam0_i2c14;
		i2c115 = &cfam0_i2c15;
		i2c202 = &cfam1_i2c2;
		i2c203 = &cfam1_i2c3;
		i2c210 = &cfam1_i2c10;
		i2c211 = &cfam1_i2c11;
		i2c214 = &cfam1_i2c14;
		i2c215 = &cfam1_i2c15;
		i2c216 = &cfam1_i2c16;
		i2c217 = &cfam1_i2c17;

		spi10 = &cfam0_spi0;
		spi11 = &cfam0_spi1;
		spi12 = &cfam0_spi2;
		spi13 = &cfam0_spi3;
		spi20 = &cfam1_spi0;
		spi21 = &cfam1_spi1;
		spi22 = &cfam1_spi2;
		spi23 = &cfam1_spi3;
	};
};
