/*
 * 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-dvt-mlb.dtsi"
#include "flintstone-evt3-doe-kpb.dtsi"

/ {
	model = "NestLabs Flintstone DVT Board";
	compatible = "nestlabs,flintstone-dvt", "fsl,imx6sx";
};

&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5_2>;
	fsl,uart-can-wake;
	status = "okay";
};

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

	hog {
		mcu_hogs: mcu-hogs {
			fsl,pins = <
				MX6SX_PAD_SD4_DATA6__UART5_RTS_B	0x40019081  /* MCU RTS: unused, tristate */
				MX6SX_PAD_SD4_DATA7__UART5_CTS_B	0x40019081  /* MCU CTS: unused, tristate */
			>;
		};
	};

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