/*
 * Copyright (C) 2015 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-evt2-mlb.dtsi"

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

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

	hog {
		fct_hogs: fct-hogs {
			fsl,pins = <
				MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9	0x000000b0	/* opt3001 interrupt */

				MX6SX_PAD_SD3_DATA0__GPIO7_IO_2		0x004000b0	/* led enable - keypad and info */

				MX6SX_PAD_QSPI1A_DATA2__GPIO4_IO_18	0x000000b0	/* led trigger - ring */
				MX6SX_PAD_SD3_CMD__GPIO7_IO_1		0x004000b0	/* led trigger - keypad */
				MX6SX_PAD_SD3_DATA2__GPIO7_IO_4		0x004000b0	/* led trigger - info */

				MX6SX_PAD_RGMII1_RXC__GPIO5_IO_5	0x000000b0	/* NFC OOB: interrupt from NFC */
				MX6SX_PAD_GPIO1_IO10__GPIO1_IO_10	0x000000b0	/* NFC OOB: firmware download */
				MX6SX_PAD_GPIO1_IO11__GPIO1_IO_11	0x000000b0	/* NFC OOB: enable */

				MX6SX_PAD_QSPI1B_DATA2__GPIO4_IO_26	0x000000b0	/* i2c2 sda */
				MX6SX_PAD_QSPI1B_DATA3__GPIO4_IO_27	0x000000b0	/* i2c2 scl */

				MX6SX_PAD_KEY_COL0__GPIO2_IO_10		0x000000b0
				MX6SX_PAD_KEY_COL1__GPIO2_IO_11		0x000000b0
				MX6SX_PAD_KEY_COL2__GPIO2_IO_12		0x000000b0
				MX6SX_PAD_KEY_COL3__GPIO2_IO_13		0x000000b0
				MX6SX_PAD_KEY_ROW0__GPIO2_IO_15		0x000000b0
				MX6SX_PAD_KEY_ROW1__GPIO2_IO_16		0x000000b0
				MX6SX_PAD_KEY_ROW2__GPIO2_IO_17		0x000000b0
				MX6SX_PAD_KEY_ROW3__GPIO2_IO_18		0x000000b0
			>;
		};
	};
};
