/*
 * Copyright (C) 2016 Nest Labs, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include "flintstone-dev3-mlb.dtsi"
#include "flintstone-dev3-kpb.dtsi"

/ {
	model = "NestLabs Flintstone Dev3 Board";
	compatible = "nestlabs,flintstone-dev3", "fsl,imx6sx";

	mcu-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		input-names = "mcudatagpio";
		input-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>;
		output-names = "mcuresetgpio", "mcubootgpio";
		output-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH &gpio6 13 GPIO_ACTIVE_HIGH>;
	};

    aliases {
        serial-sensormcu0 = &uart5;
    };
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&mlb_hogs &kpb_hogs &mcu_hogs>;

	hog {
		mcu_hogs: mcu-hogs {
			fsl,pins = <
				MX6SX_PAD_SD4_DATA2__GPIO6_IO_16	0x400018b0	/* MCU reset */
				MX6SX_PAD_SD4_CLK__GPIO6_IO_12		0x400010b0	/* MCU to SoC interrupt */
				MX6SX_PAD_SD4_CMD__GPIO6_IO_13		0x400010b0	/* MCU boot */
			>;
		};
	};

	uart5 {
		pinctrl_uart5_2: uart5grp-2 {
			fsl,pins = <
				MX6SX_PAD_SD4_DATA4__UART5_RX		0x1b0b1
				MX6SX_PAD_SD4_DATA5__UART5_TX		0x1b0b1
				MX6SX_PAD_SD4_DATA6__UART5_RTS_B	0x1b0b1
				MX6SX_PAD_SD4_DATA7__UART5_CTS_B	0x1b0b1
			>;
		};
	};
};

/* MCU UART */
&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5_2>;
	fsl,uart-has-rtscts;
	fsl,uart-can-wake;
	status = "okay";
};
