/*
 * Copyright (c) 2022 PHYTEC Messtechnik GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_imx8mm_m4.dtsi>
#include "mimx8mm_phyboard_polis-pinctrl.dtsi"

/ {
	model = "Phyboard Polis NXP i.MX8M Mini";
	compatible = "nxp,mimx8mm_phyboard_polis";

	aliases {
		uart-4 = &uart4;
		uart-3 = &uart3;
		uart-2 = &uart2;
		uart-1 = &uart1;
		led0 = &led_blue;
	};

	chosen {
		zephyr,flash = &tcml_code;
		zephyr,sram = &tcmu_sys;
		zephyr,console = &uart4;
		zephyr,shell-uart = &uart4;
	};

	leds {
		compatible = "gpio-leds";

		led_red: led_red {
			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
		};

		led_blue: led_blue {
			gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
		};

		led_green: led_green {
			gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
		};
	};

};

/* RS232 / RS485 pinheader on the board */
&uart1 {
	status = "disabled";
	pinctrl-0 = <&uart1_default>;
	pinctrl-names = "default";
	hw-flow-control;
};

/*
 *  UART to bluetooth module / X18 header
 *  Currently there is no driver for the used module
 */
&uart2 {
	status = "disabled";
	pinctrl-0 = <&uart2_default>;
	pinctrl-names = "default";
	hw-flow-control;
};

/* UART usually used from A53 Core (1st tty on Debug USB connector */
&uart3 {
	status = "disabled";
	pinctrl-0 = <&uart3_default>;
	pinctrl-names = "default";
};

/* UART of the M4 Core (2nd tty on Debug USB connector) */
&uart4 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart4_default>;
	pinctrl-names = "default";
};

/*
 * needs to be configured, so the leds don't generate an error,
 * but does not interfer with the A53-Core
 */
&gpio1 {
	status = "okay";
};

&mailbox0 {
	status = "okay";
};
