/*
 * 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.
 */

/ {

	led-trigger-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "ring", "keypad", "info";
		output-gpios = <&gpio4 18 GPIO_ACTIVE_LOW
				&gpio7 1 GPIO_ACTIVE_LOW
				&gpio7 4 GPIO_ACTIVE_LOW>;
	};
};

&i2c2 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2_2>;
	status = "okay";

	/* NFC */
	pn548@28 {
		compatible = "nxp,pn547";
		reg = <0x28>;

		interrupt-parent = <&gpio5>;
		interrupts = <5 GPIO_ACTIVE_HIGH>;

		nxp,pn54x-irq = <&gpio5 5 GPIO_ACTIVE_HIGH>;
		nxp,pn54x-ven = <&gpio1 11 GPIO_ACTIVE_HIGH>;
		nxp,pn54x-firm = <&gpio1 10 GPIO_ACTIVE_HIGH>;
	};

	/* Ring LEDS 1,2,3 */
	lp55231@32 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl0";
		reg = <0x32>;
		clock-mode = /bits/ 8 <1>;
		enable-gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>;
		animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
		animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
			0x00 0x9f 0x80 0x90 0x01 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
			0xf0 0x00 0x9f 0x81 0x90 0x02 0x8e 0x80 0x8e 0x90 0x8e
			0xe0 0xf0 0x00 0x9f 0x82 0x90 0x03 0x8e 0x20 0x8e 0x30
			0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
			0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
			0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
			0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
			0xc0 0x00>;

		chan0 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan2 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan3 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan5 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};
	};

	/* Ring LEDS 7,8,9 */
	lp55231@33 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl1";
		reg = <0x33>;
		clock-mode = /bits/ 8 <1>;
		animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
		animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
			0x00 0x9f 0x80 0x90 0x07 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
			0xf0 0x00 0x9f 0x81 0x90 0x08 0x8e 0x80 0x8e 0x90 0x8e
			0xe0 0xf0 0x00 0x9f 0x82 0x90 0x09 0x8e 0x20 0x8e 0x30
			0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
			0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
			0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
			0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
			0xc0 0x00>;

		chan0 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan2 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan3 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan5 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};
	};

	/* Keypad LEDS info */
	lp55231@35 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl8";
		reg = <0x35>;
		clock-mode = /bits/ 8 <1>;

		chan0 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan2 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan3 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan5 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};
	};

	/* OPT3001 (ALS) @ 0x44 */
	light@44 {
		compatible = "ti,opt3001";
		reg = <0x44>;
		interrupt-parent = <&gpio1>;
		interrupts = <9 GPIO_ACTIVE_HIGH>;
		status = "okay";
	};
};

&i2c3 {

	/* Ring LEDS 4,5,6 */
	lp55231@32 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl4";
		reg = <0x32>;
		clock-mode = /bits/ 8 <1>;
		animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
		animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
			0x00 0x9f 0x80 0x90 0x04 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
			0xf0 0x00 0x9f 0x81 0x90 0x05 0x8e 0x80 0x8e 0x90 0x8e
			0xe0 0xf0 0x00 0x9f 0x82 0x90 0x06 0x8e 0x20 0x8e 0x30
			0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
			0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
			0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
			0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
			0xc0 0x00>;

		chan0 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan2 {
			led-cur = /bits/ 8 <47>;
			max-cur = /bits/ 8 <200>;
		};

		chan3 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan5 {
			led-cur = /bits/ 8 <53>;
			max-cur = /bits/ 8 <200>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};
	};

	/* Keypad LEDS 1,2,3,4,5,6,7,8,9 */
	lp55231@33 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl5";
		reg = <0x33>;
		clock-mode = /bits/ 8 <1>;

		chan0 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan1 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan2 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan3 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan4 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan5 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};
	};

	/* Keypad LEDS 0,back,enter */
	lp55231@34 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl6";
		reg = <0x34>;
		clock-mode = /bits/ 8 <1>;

		chan0 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan2 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan3 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan5 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <255>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};
	};

	/* Keypad LEDS stay, home, away */
	lp55231@35 {
		compatible = "national,lp55231", "national,lp5523";
		label = "ctrl7";
		reg = <0x35>;
		clock-mode = /bits/ 8 <1>;

		chan0 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan1 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan2 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan3 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan4 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan5 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <200>;
		};

		chan6 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan7 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};

		chan8 {
			led-cur = /bits/ 8 <1>;
			max-cur = /bits/ 8 <250>;
		};
	};
};

&iomuxc {
	hog {
		kpb_hogs: kpb-hogs {
			fsl,pins = <
				MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9	0x400000b0	/* opt3001 interrupt */

				MX6SX_PAD_SD3_DATA0__GPIO7_IO_2		0x004010b0	/* led enable - ring, keypad, 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	0x400010b0	/* NFC OOB: interrupt from NFC */
				MX6SX_PAD_GPIO1_IO10__GPIO1_IO_10	0x400010b0	/* NFC OOB: firmware download */
				MX6SX_PAD_GPIO1_IO11__GPIO1_IO_11	0x400010b0	/* NFC OOB: enable */
			>;
		};
	};

	i2c2 {
		pinctrl_i2c2_2: i2c2grp-2 {
			fsl,pins = <
				MX6SX_PAD_QSPI1B_DATA2__I2C2_SDA	0x4001f899
				MX6SX_PAD_QSPI1B_DATA3__I2C2_SCL	0x4001f899
			>;
		};
	};

	kpp {
		pinctrl_kpp_0: kppgrp-0 {
			fsl,pins = <
				MX6SX_PAD_KEY_COL0__KPP_COL_0		0x110b0
				MX6SX_PAD_KEY_COL1__KPP_COL_1		0x110b0
				MX6SX_PAD_KEY_COL2__KPP_COL_2		0x110b0
				MX6SX_PAD_KEY_COL3__KPP_COL_3		0x110b0
				MX6SX_PAD_KEY_ROW0__KPP_ROW_0		0x1f010
				MX6SX_PAD_KEY_ROW1__KPP_ROW_1		0x1f010
				MX6SX_PAD_KEY_ROW2__KPP_ROW_2		0x1f010
				MX6SX_PAD_KEY_ROW3__KPP_ROW_3		0x1f010
			>;
		};

		pinctrl_kpp_0_sleep: kppgrp-0-sleep {
			fsl,pins = <
				MX6SX_PAD_KEY_COL0__GPIO2_IO_10		0x3080
				MX6SX_PAD_KEY_COL1__GPIO2_IO_11		0x3080
				MX6SX_PAD_KEY_COL2__GPIO2_IO_12		0x3080
				MX6SX_PAD_KEY_COL3__GPIO2_IO_13		0x3080
				MX6SX_PAD_KEY_ROW0__GPIO2_IO_15		0x3080
				MX6SX_PAD_KEY_ROW1__GPIO2_IO_16		0x3080
				MX6SX_PAD_KEY_ROW2__GPIO2_IO_17		0x3080
				MX6SX_PAD_KEY_ROW3__GPIO2_IO_18		0x3080
			>;
		};
	};
};

/* Keypad */
&kpp {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_kpp_0>;
	pinctrl-1 = <&pinctrl_kpp_0_sleep>;
	linux,keymap = <0x00000002	/* KEY_1 */
			0x00010003	/* KEY_2 */
			0x00020004	/* KEY_3 */
			0x0003003c	/* KEY_F2 (STAY) */
			0x01000005	/* KEY_4 */
			0x0101003e	/* KEY_F4 (INFO) */
			0x01020007	/* KEY_6 */
			0x0103003b	/* KEY_F1 (HOME) */
			0x02000008	/* KEY_7 */
			0x02010009	/* KEY_8 */
			0x0202000a	/* KEY_9 */
			0x0203003d	/* KEY_F3 (AWAY) */
			0x0300009e	/* KEY_BACK */
			0x0301000b	/* KEY_0 */
			0x03020160>;	/* KEY_OK */
	linux,input-no-autorepeat;
	status = "okay";
};
