// SPDX-License-Identifier: GPL-2.0+
/*
 * Hitachi Power Grids OPTI2 Device Tree Source
 *
 * Copyright (C) 2020 Heiko Schocher <hs@denx.de>
 *
 */

/dts-v1/;

#include "km8321.dtsi"

/ {
	model = "KMOPTI2";
	compatible = "hitachi,kmpbec8321";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		ethernet0 = &enet_piggy2;
		serial0 = &serial0;
	};
};

&i2c0 {
	mux@70 {
		compatible = "nxp,pca9547";
		reg = <0x70>;
		#address-cells = <1>;
		#size-cells = <0>;

		i2c@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			/* Inventory EEPROM of the unit itself */
			ivm@50 {
				label = "MAIN_CTRL";
				compatible = "dummy";
				reg = <0x50>;
			};
		};

		i2c@2 {
			reg = <2>;
			#address-cells = <1>;
			#size-cells = <0>;

			/* Temperature sensors */
			temp@49 {
				label = "board";
				compatible = "national,lm75";
				reg = <0x49>;
			};

			temp@4a {
				label = "power";
				compatible = "national,lm75";
				reg = <0x4a>;
			};
		};

		i2c@6 {
			reg = <6>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@5 {
			reg = <5>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@4 {
			reg = <4>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		i2c@3 {
			reg = <3>;
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&par_io {
	/* UCC5 as HDLC controller for ICN */
	pio_ucc5: ucc_pin@04 {
		pio-map = <
			/* port  pin  dir  open_drain  assignment  has_irq */
			2   0  1  0  2  0 /* TxD0 */
			2   8  2  0  2  0 /* RxD0 */
			2  29  2  0  2  0 /* CTS */
			3  30  2  0  1  0 /* ICN CLK */
			>;
	};

	/* UCC4 Piggy Ethernet */
	pio_ucc4: ucc_pin@03 {
		pio-map = <
			/* port pin dir open_drain assignment has_irq */
			3   4  3  0  2  0 /* MDIO */
			3   5  1  0  2  0 /* MDC  */

			1 18  1  0  1  0 /* TxD0 */
			1 19  1  0  1  0 /* TxD1 */
			1 22  2  0  1  0 /* RxD0 */
			1 23  2  0  1  0 /* RxD1 */
			1 26  2  0  1  0 /* RX_ER */
			1 28  2  0  1  0 /* RX_DV */
			1 30  1  0  1  0 /* TX_EN */
			1 31  2  0  1  0 /* CRS */
			3 10  2  0  3  0 /* UCC4_RMII_CLK (CLK17) */
		>;
	};

	pio_spi: spi_pin@01 {
		pio-map = <
			/* port  pin  dir  open_drain  assignment  has_irq  */
			3  0  3  0  1  0 /* SPI_MOSI (PD0, bi, f3)  */
			3  1  3	 0  1  0 /* SPI_MISO (PD1, bi, f3)  */
			3  2  3  0  1  0 /* SPI_CLK  (PD2, bi, f3)  */
		>;
	};
};

&localbus {
	ranges = <0 0 0xf0000000 0x04000000 /* LB 0 Flash (boot) */
		1 0 0xe8000000 0x01000000 /* LB 1 PRIO1 and Piggy */
		2 0 0xa0000000 0x10000000 /* LB 2 PAXE */
		3 0 0xb0000000 0x10000000>; /* LB 3 OPI2 */

	flash@0,0 {
		compatible = "cfi-flash";
		reg = <0 0x00000000 0x04000000>;
		bank-width = <2>;
		#address-cells = <1>;
		#size-cells = <1>;
		use-advanced-sector-protection;
		partition@0 { /* 768KB */
			label = "u-boot";
			reg = <0 0xC0000>;
		};
		partition@c0000 { /* 128KB */
			label = "env";
			reg = <0xc0000 0x20000>;
		};
		partition@e0000 { /* 128KB */
			label = "envred";
			reg = <0xe0000 0x20000>;
		};
		partition@100000 { /* 64512KB */
			label = "ubi0";
			reg = <0x100000 0x3F00000>;
		};
	};
};
