/*
 * Copyright 2024 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/ipc_service/static_vrings.h>
#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h>

/ {
	chosen {
		/* Delete ipc chosen property where old IPM mailbox driver bellow is
		 * configured.
		 */
		/delete-property/ zephyr,ipc;
		/delete-property/ zephyr,ipc_shm;

		zephyr,console = &lpuart1;
		zephyr,shell-uart = &lpuart1;
	};

	/* Define memory regions for IPC
	 * Note that shared memory must have specific MPU attributes set.
	 */
	ocram2_ipc0: memory@202c0000{
		compatible = "zephyr,memory-region", "mmio-sram";
		reg = <0x202c0000 DT_SIZE_K(32)>;
		zephyr,memory-region="OCRAM2_IPC0";
		zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_IO))>;
	};
	ocram2_ipc1: memory@202c8000{
		compatible = "zephyr,memory-region", "mmio-sram";
		reg = <0x202c8000 DT_SIZE_K(32)>;
		zephyr,memory-region="OCRAM2_IPC1";
		zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_IO))>;
	};

	soc {
		/* Delete IPM Driver node nxp,imx-mu */
		/delete-node/ mailbox@40c48000;

		/* Attach MBOX driver to MU Unit */
		mbox:mbox@40c48000 {
			compatible = "nxp,mbox-imx-mu";
			reg = <0x40c48000 0x4000>;
			interrupts = <118 0>;
			rx-channels = <4>;
			#mbox-cells = <1>;
			status = "okay";
		};
	};

	ipc {
		/delete-node/ ipc0;

		ipc0: ipc0 {
			compatible = "zephyr,ipc-openamp-static-vrings";
			memory-region = <&ocram2_ipc0>;
			mboxes = <&mbox 0>, <&mbox 1>;
			mbox-names = "tx", "rx";
			role = "host";
			status = "okay";
		};

		ipc1: ipc1 {
			compatible = "zephyr,ipc-openamp-static-vrings";
			memory-region = <&ocram2_ipc1>;
			mboxes = <&mbox 2>, <&mbox 3>;
			mbox-names = "tx", "rx";
			role = "host";
			zephyr,priority = <1 PRIO_COOP>;
			zephyr,buffer-size = <128>;
			status = "okay";
		};
	};
};
