/*
 * Copyright (c) 2018, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <mem.h>

/*
 * Determines the address and size for code memory which will be applied
 * when "zephyr,flash = &flash". Use this to select a custom region,
 * usually within DDR.
 */
#define DT_FLASH_SIZE	DT_SIZE_K(512)
#define DT_FLASH_ADDR	84000000 /* DT_ADDR will add leading 0x where needed */

/*
 * Determines the address and size for data memory which will be applied
 * when "zephyr,sram = &sram". Use this to select a custom region,
 * usually within DDR.
 */
#define DT_SRAM_SIZE	DT_SIZE_K(128)
#define DT_SRAM_ADDR	84080000 /* DT_ADDR will add leading 0x where needed */

#include <nxp/nxp_imx6sx_m4.dtsi>
#include "udoo_neo_full_m4-pinctrl.dtsi"

/ {
	model = "UDOO Neo Full board";
	compatible = "nxp,mcimx6x_m4";

	aliases {
		led0 = &red_led;
	};

	chosen {
		zephyr,flash = &flash;
		zephyr,sram = &tcmu;
		zephyr,console = &uart5;
		zephyr,shell-uart = &uart5;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio4 6 0>;
			label = "User LD1";
		};
	};
};

&uart5 {
	status = "okay";
	current-speed = <115200>;
	modem-mode = <0>;
	pinctrl-0 = <&uart5_default>;
	pinctrl-names = "default";
};

&gpio4 {
	status = "okay";
};

&gpio5 {
	status = "okay";
};

&gpio6 {
	status = "okay";
};

&mub {
	status = "okay";
};

&epit1 {
	status = "okay";
};

&epit2 {
	status = "okay";
};
