// SPDX-License-Identifier: GPL-2.0+
/*
 * CMPC885 Device Tree Source
 *
 * Copyright 2020 CS GROUP France
 *
 */

/dts-v1/;

#include <dt-bindings/clk/mpc83xx-clk.h>

/ {
	model = "CMPCPRO";
	compatible = "fsl, cmpc85xx", "fsl,mod85xx", "CMPCPRO", "MPC8321E", "fsl,cmpcpro";
	#address-cells = <1>;
	#size-cells = <1>;

	chosen {
		stdout-path = &serial0;
	};
	WDT: watchdog@0 {
		device_type = "watchdog";
		compatible = "fsl,pq1-wdt";
	};

	aliases {
		ethernet0 = &eth0;
		etehrnet1 = &eth1;
		serial0 = &serial0;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		PowerPC,8321@0 {
			device_type = "cpu";
			reg = <0x0>;
			d-cache-line-size = <0x20>;	// 32 bytes
			i-cache-line-size = <0x20>;	// 32 bytes
			d-cache-size = <16384>;	// L1, 16K
			i-cache-size = <16384>;	// L1, 16K
			timebase-frequency = <0>;
			bus-frequency = <0>;
			clock-frequency = <0>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x00000000 0x20000000>;
	};

	soc8321@b0000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		compatible = "simple-bus";
		ranges = <0x0 0xb0000000 0x00100000>;
		reg = <0xb0000000 0x00000200>;
		bus-frequency = <0>;
		pmc: power@b00 {
			compatible = "fsl,mpc8323-pmc", "fsl,mpc8349-pmc";
			reg = <0xb00 0x100 0xa00 0x100>;
			interrupts = <80 0x8>;
			interrupt-parent = <&ipic>;
		};
		serial0: serial@4500 {
			clocks = <&socclocks MPC83XX_CLK_CSB>;
			cell-index = <0>;
			device_type = "serial";
			compatible = "fsl,ns16550", "ns16550";
			reg = <0x4500 0x100>;
			clock-frequency = <0>;
			interrupts = <9 0x8>;
			interrupt-parent = <&ipic>;
		};
		ipic:pic@700 {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
			reg = <0x700 0x100>;
			device_type = "ipic";
		};
		par_io@1400 {
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x1400 0x100>;
			ranges;
			compatible = "fsl,mpc8323-qe-pario","simple-bus";
			device_type = "par_io";
			num-ports = <7>;
			qe_pio_a: gpio-controller@1400 {
				#gpio-cells = <2>;
				compatible = "fsl,mpc8323-qe-pario-bank","fsl,mpc8308-gpio";
				reg = <0x1400 0x18>;
				gpio-controller;
			};
			qe_pio_b: gpio-controller@1418 {
				#gpio-cells = <2>;
				compatible = "fsl,mpc8323-qe-pario-bank","fsl,mpc8308-gpio";
				reg = <0x1418 0x18>;
				gpio-controller;
			};
			qe_pio_c: gpio-controller@1430 {
				#gpio-cells = <2>;
				compatible = "fsl,mpc8323-qe-pario-bank","fsl,mpc8308-gpio";
				reg = <0x1430 0x18>;
				gpio-controller;
			};
			qe_pio_d: gpio-controller@1448 {
				#gpio-cells = <2>;
				compatible = "fsl,mpc8323-qe-pario-bank","fsl,mpc8308-gpio";
				reg = <0x1448 0x18>;
				gpio-controller;
			};
		};
	};
	socclocks: clocks {
		bootph-all;
		compatible = "fsl,mpc832x-clk";
		#clock-cells = <1>;
	};
	qe@b0100000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "qe";
		compatible = "fsl,qe","simple-bus";
		ranges = <0x0 0xb0100000 0x00100000>;
		reg = <0xb0100000 0x480>;
		brg-frequency = <0>;
		bus-frequency = <198000000>;
		fsl,qe-num-riscs = <1>;
		fsl,qe-num-snums = <28>;
		spi@4c0 {
			clocks = <&socclocks MPC83XX_CLK_CSB>;
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl,mpc832x-spi";
			reg = <0x4c0 0x40>;
			mode = "cpu";
			gpios = <&qe_pio_d 3 1>;
			clock-frequency = <0>;
			eeprom@3 {
				compatible = "atmel,at25", "cs,eeprom";
				cell-index = <1>;
			};
		};
		eth0: ucc@3000 {
			device_type = "network";
			compatible = "ucc_geth";
			cell-index = <2>;
			reg = <0x3000 0x200>;
			rx-clock-name = "clk17";
			tx-clock-name = "clk17";
			phy-handle = <&phy1>;
			phy-connection-type = "rmii";
		};
		eth1: ucc@2200 {
			device_type = "network";
			compatible = "ucc_geth";
			cell-index = <3>;
			reg = <0x2200 0x200>;
			rx-clock-name = "clk12";
			tx-clock-name = "clk12";
			phy-handle = <&phy2>;
			phy-connection-type = "rmii";
		};
		mdio@3120 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x3120 0x18>;
			compatible = "fsl,ucc-mdio";
			phy1:ethernet-phy@1 {
				interrupt-parent = <&ipic>;
				reg = <0x1>;
				interrupts = <17 8>;
				device_type = "ethernet-phy";
			};
			phy2:ethernet-phy@2 {
				interrupt-parent = <&ipic>;
				reg = <0x2>;
				interrupts = <17 8>;
				device_type = "ethernet-phy";
			};
		};
	};
};