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

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include "imx6ul.dtsi"

#define PAD_CONFIG__DEFAULT     0x00001008
#define PAD_CONFIG__ADC         0x00000008
#define PAD_CONFIG__GPIO        0x40001008
#define PAD_CONFIG__I2C         0x40001808

/ {
	memory {
		reg = <0 0>; /* Determined and Populated by Bootloader */
	};

	soc {
		busfreq {
			status = "disabled";
		};
	};

	aliases {
		serial-ble0 = &uart3;
		serial-sensormcu0 = &uart2;
	};

	gpio-keys {
		compatible = "gpio-keys";
		reg = <0 0>;

		hu_button: HU-button {
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_hu_button>;
			label = "HU Button";
			linux,code = <KEY_ENTER>;
			gpio-key,wakeup;
		};
	};

	gpio-wakeups {
		compatible = "gpio-keys";
		reg = <0 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_wakeup>;

		sensor_mcu_wakeup: sensor-mcu-wakeup {
			label = "Sensor MCU Wakeup";
			linux,code = <KEY_WAKEUP>;
			gpio-key,wakeup;
		};

	};

	brcm_wlan: brcm-wlan {
		compatible = "brcm,bcmdhd_wlan";
		reg = <0 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_brcm_wlan>;
	};

	ble-rfkill {
		compatible = "rfkill-gpio";
		reg = <0 0>;
		rfkill-name = "BLE";
		rfkill-type = <2>;
		reset-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
	};

	wifi_gpios: brcm_wifi {
		compatible = "nestlabs,gpio-exporter";
		reg = <0 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_wifi_gpios>;
		output-names = "reset";
	};

	em35x_gpios: em35x-gpios {
		compatible = "nestlabs,gpio-exporter";
		reg = <0 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_em35x_gpios>;
		output-names = "reset", "wake";
		output-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>,
		               <&gpio1 9 GPIO_ACTIVE_HIGH>;
		input-names = "irq";
		input-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
	};

	sensor_mcu_gpios: sensor-mcu-gpios {
		compatible = "nestlabs,gpio-exporter";
		reg = <0 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_sensor_mcu_gpios>;
	};

	adc_ref: fixedregulator@0 {
		compatible = "regulator-fixed";
		reg = <0 0>;
		regulator-name = "fixed-supply";
		regulator-always-on;
	};

battery: battery@0 {
		 compatible = "adc-div-battery";
		 status = "okay";
	 };
};

/* Zigbee SPI */
&ecspi4 {
	fsl,spi-num-chipselects = <1>;
	cs-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi4_1>;
	status = "okay";

	spidev_em35x@0 {
		compatible = "silabs,em35x";
		spi-max-frequency = <20000000>;
		reg = <0>;
	};
};

&gpc {
	fsl,cpu_pupscr_sw2iso = <0x1>;
	fsl,cpu_pupscr_sw = <0x0>;
	fsl,cpu_pdnscr_iso2sw = <0x1>;
	fsl,cpu_pdnscr_iso = <0x1>;
	fsl,ldo-bypass = <0>; /* DCDC, ldo-enable */
};

/* PWM8 for Piezo */
&pwm8 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm8_0>;
	clocks = <&clks IMX6UL_CLK_PWM8>,
	         <&clks IMX6UL_CLK_PWM8>;
	status = "okay";
};

/* I2C2 */
&i2c2 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2_1>;
	status = "okay";
	/* LM3530 (LED Driver) @ 0x63 */
	backlight: lm3695@63 {
		compatible= "national,lm3695";
		reg = <0x63>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_backlight>;
		max-brightness = <2047>;
		default-brightness = <1800>;
		single-string;
		boost-freq;
		high-voltage;
		ramp-rise-time = <2000>;
		ramp-fall-time = <2000>;
		fb-device = "mxsfb";
	};
};

/*lcd driver spi */
&ecspi2 {
	pinctrl-0 = <&pinctrl_ecspi2_1>;
	pinctrl-names = "default";
	status = "okay";
};

&lcdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lcdif_dat_1 &pinctrl_lcdif_ctrl_1>;
	status = "okay";
};

/* Pinmux Controller */
&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>, <&pinctrl_hog_extra>;

	i2c2 {
		pinctrl_i2c2_1: i2c2grp-1 {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO00__I2C2_SCL          PAD_CONFIG__I2C         /* I2C_AP_PIN_LCD_SCK */
				MX6UL_PAD_GPIO1_IO01__I2C2_SDA          PAD_CONFIG__I2C         /* I2C_AP_PIN_LCD_SDA */
			>;
		};
	};

	pwm8 { // Piezo pwm
		pinctrl_pwm8_0: pwm8grp-0 {
			fsl,pins = <
				MX6UL_PAD_ENET1_RX_ER__PWM8_OUT         PAD_CONFIG__DEFAULT     /* PWM_PIEZO_DRIVE */
			>;
		};
	};


	uart3 { /* serial BLE */
		pinctrl_uart3_1: uart3grp-1 {
			fsl,pins = <
				MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX   PAD_CONFIG__DEFAULT     /* UART_AP_TO_BLE */
				MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX   PAD_CONFIG__DEFAULT     /* UART_BLE_TO_AP */
				MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS    PAD_CONFIG__DEFAULT     /* UART_FLOW_BLE_TO_AP */
				MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS    PAD_CONFIG__DEFAULT     /* UART_FLOW_AP_TO_BLE */
			>;
		};
	};

	uart2 { //BP_UART
		pinctrl_uart2_1: uart2grp-1 {
			fsl,pins = <
				MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   PAD_CONFIG__DEFAULT     /* UART_MCU_TO_AP */
				MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   PAD_CONFIG__DEFAULT     /* UART_AP_TO_MCU */
				MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS    PAD_CONFIG__DEFAULT     /* UART_FLOW_AP_TO_MCU */
				MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS    PAD_CONFIG__DEFAULT     /* UART_FLOW_MCU_TO_AP */
			>;
		};
	};

	usdhc2 { /* WIFI SDIO */
		pinctrl_usdhc2_1: usdhc2grp {
			fsl,pins = <
				MX6UL_PAD_CSI_VSYNC__USDHC2_CLK         PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_CLK */
				MX6UL_PAD_CSI_HSYNC__USDHC2_CMD         PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_CMD */
				MX6UL_PAD_CSI_DATA00__USDHC2_DATA0      PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_DATA0 */
				MX6UL_PAD_CSI_DATA01__USDHC2_DATA1      PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_DATA1 */
				MX6UL_PAD_CSI_DATA02__USDHC2_DATA2      PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_DATA2 */
				MX6UL_PAD_CSI_DATA03__USDHC2_DATA3      PAD_CONFIG__DEFAULT     /* AP_SDIO_WIFI_DATA3 */
			>;
		};
	};

	lcdif1 {
		/* Set Hi-Z on all LCD data pins, as there are external pulls */
		pinctrl_lcdif_dat_1: lcdifdatgrp-1 {
			fsl,pins = <
				MX6UL_PAD_LCD_DATA00__LCDIF_DATA00      PAD_CONFIG__DEFAULT     /* LCD_DATA0 */
				MX6UL_PAD_LCD_DATA01__LCDIF_DATA01      PAD_CONFIG__DEFAULT     /* LCD_DATA1 */
				MX6UL_PAD_LCD_DATA02__LCDIF_DATA02      PAD_CONFIG__DEFAULT     /* LCD_DATA2 */
				MX6UL_PAD_LCD_DATA03__LCDIF_DATA03      PAD_CONFIG__DEFAULT     /* LCD_DATA3 */
				MX6UL_PAD_LCD_DATA04__LCDIF_DATA04      PAD_CONFIG__DEFAULT     /* LCD_DATA4 */
				MX6UL_PAD_LCD_DATA05__LCDIF_DATA05      PAD_CONFIG__DEFAULT     /* LCD_DATA5 */
				MX6UL_PAD_LCD_DATA06__LCDIF_DATA06      PAD_CONFIG__DEFAULT     /* LCD_DATA6 */
				MX6UL_PAD_LCD_DATA07__LCDIF_DATA07      PAD_CONFIG__DEFAULT     /* LCD_DATA7 */
				MX6UL_PAD_LCD_DATA08__LCDIF_DATA08      PAD_CONFIG__DEFAULT     /* LCD_DATA8 */
				MX6UL_PAD_LCD_DATA09__LCDIF_DATA09      PAD_CONFIG__DEFAULT     /* LCD_DATA9 */
				MX6UL_PAD_LCD_DATA10__LCDIF_DATA10      PAD_CONFIG__DEFAULT     /* LCD_DATA10 */
				MX6UL_PAD_LCD_DATA11__LCDIF_DATA11      PAD_CONFIG__DEFAULT     /* LCD_DATA11 */
				MX6UL_PAD_LCD_DATA12__LCDIF_DATA12      PAD_CONFIG__DEFAULT     /* LCD_DATA12 */
				MX6UL_PAD_LCD_DATA13__LCDIF_DATA13      PAD_CONFIG__DEFAULT     /* LCD_DATA13 */
				MX6UL_PAD_LCD_DATA14__LCDIF_DATA14      PAD_CONFIG__DEFAULT     /* LCD_DATA14 */
				MX6UL_PAD_LCD_DATA15__LCDIF_DATA15      PAD_CONFIG__DEFAULT     /* LCD_DATA15 */
				MX6UL_PAD_LCD_DATA16__LCDIF_DATA16      PAD_CONFIG__DEFAULT     /* LCD_DATA16 */
				MX6UL_PAD_LCD_DATA17__LCDIF_DATA17      PAD_CONFIG__DEFAULT     /* LCD_DATA17 */
				MX6UL_PAD_LCD_DATA18__LCDIF_DATA18      PAD_CONFIG__DEFAULT     /* LCD_DATA18 */
				MX6UL_PAD_LCD_DATA19__LCDIF_DATA19      PAD_CONFIG__DEFAULT     /* LCD_DATA19 */
				MX6UL_PAD_LCD_DATA20__LCDIF_DATA20      PAD_CONFIG__DEFAULT     /* LCD_DATA20 */
				MX6UL_PAD_LCD_DATA21__LCDIF_DATA21      PAD_CONFIG__DEFAULT     /* LCD_DATA21 */
				MX6UL_PAD_LCD_DATA22__LCDIF_DATA22      PAD_CONFIG__DEFAULT     /* LCD_DATA22 */
				MX6UL_PAD_LCD_DATA23__LCDIF_DATA23      PAD_CONFIG__DEFAULT     /* LCD_DATA23 */
			>;
		};

		/* Set weak pullups on all LCD control pins */
		pinctrl_lcdif_ctrl_1: lcdifctrlgrp-1 {
			fsl,pins = <
				MX6UL_PAD_LCD_CLK__LCDIF_CLK            PAD_CONFIG__DEFAULT     /* LCD_CLK */
				MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE      PAD_CONFIG__DEFAULT     /* LCD_ENABLE */
				MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC        PAD_CONFIG__DEFAULT     /* LCD_VSYNC */
				MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC        PAD_CONFIG__DEFAULT     /* LCD_HSYNC */
				MX6UL_PAD_LCD_RESET__GPIO3_IO04         PAD_CONFIG__GPIO        /* LCD_RESET */
			>;
		};
	};

	HU-button {
		pinctrl_hu_button: hu-button-grp {
			/* Board Specific */
		};
	};

	gpio-wakeup {
		pinctrl_gpio_wakeup: gpio-wakeup-grp {
			/* Board Specific */
		};
	};

	brcm-wlan {
		pinctrl_brcm_wlan: brcm-wlan-grp {
			/* Board Specific */
		};
	};

	wifi-gpios {
		pinctrl_wifi_gpios: wifi-gpios-grp {
			/* Board Specific */
		};
	};

	sensor-mcu-gpios {
		pinctrl_sensor_mcu_gpios: sensor-mcu-gpios-grp {
			/* Board Specific */
		};
	};

	backlight {
		pinctrl_backlight: backlight-grp {
			/* Board Specific */
		};
	};

	hog {
		pinctrl_hog: hoggrp {
			fsl,pins = <
				MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29     PAD_CONFIG__GPIO        /* SPI2_LCD_CS_L*/
				MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15       PAD_CONFIG__GPIO        /* SPI_6LO_CS */
				MX6UL_PAD_ENET1_RX_DATA1__GPIO2_IO01    PAD_CONFIG__GPIO        /* BLE_RST_L */
				MX6UL_PAD_ENET1_TX_DATA1__GPIO2_IO04    PAD_CONFIG__GPIO        /* SAMPLE_VBAT_AP */
				MX6UL_PAD_ENET1_TX_CLK__GPIO2_IO06      PAD_CONFIG__GPIO        /* PIEZO_EN_L */
			>;
		};

		pinctrl_hog_extra: hog-extra-grp {
			/* Board Specific */
		};
	};

	ecspi2 { /*LCD SPI*/
		pinctrl_ecspi2_1: ecspi2grp-1 {
			fsl,pins = <
				MX6UL_PAD_UART5_RX_DATA__ECSPI2_MISO    PAD_CONFIG__DEFAULT     /* SPI_AP_LCD_MISO */
				MX6UL_PAD_UART5_TX_DATA__ECSPI2_MOSI    PAD_CONFIG__DEFAULT     /* SPI_AP_LCD_MOSI */
				MX6UL_PAD_UART4_TX_DATA__ECSPI2_SCLK    PAD_CONFIG__DEFAULT     /* SPI_AP_LCD_CLK */
			>;
		};
	};
	ecspi4 { /*6lowpan SPI*/
		pinctrl_ecspi4_1: ecspi4grp-1 {
			fsl,pins = <
				MX6UL_PAD_ENET2_TX_CLK__ECSPI4_MISO     PAD_CONFIG__DEFAULT     /* SPI_6LO_MISO */
				MX6UL_PAD_ENET2_TX_EN__ECSPI4_MOSI      PAD_CONFIG__DEFAULT     /* SPI_6LO_MOSI */
				MX6UL_PAD_ENET2_TX_DATA1__ECSPI4_SCLK   PAD_CONFIG__DEFAULT     /* SPI_6LO_SCLK */
			>;
		};
	};

	em35x-gpios {
		pinctrl_em35x_gpios: em35x-gpios-grp {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO07__GPIO1_IO07        PAD_CONFIG__GPIO        /* 6LO_RESET_L */
				MX6UL_PAD_GPIO1_IO06__GPIO1_IO06        PAD_CONFIG__GPIO        /* INT_6LO_TO_AP */
				MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        PAD_CONFIG__GPIO        /* INT_AP_TO_6LO */
			>;
		};
	};
};

/* Bluetooth UART */
&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3_1>;
	fsl,uart-has-rtscts;
	status = "okay";
};

/* BP UART */
&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2_1>;
	fsl,uart-has-rtscts;
	status = "okay";
};

/* Debug USB (Device) */
&usbotg1 {
	pinctrl-names = "default";
	dr_mode = "peripheral";
	imx-usb-charger-detection;
	status = "okay";
};

/* WIFI SDIO */
&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2_1>;
	non-removable;
	keep-power-in-suspend;
	enable-sdio-wakeup;
	status = "okay";
};

/* GPMI NAND */
&gpmi {
	status = "okay";
	nand-on-flash-bbt; /* Need to reserve NAND_BBT_SCAN_MAXBLOCKS at end of NAND */

	partition@0-a {
		label = "nand0";
		reg = <0x0 0x20000000>;
	};

	partition@0-b {
		label = "u-boot";
		reg = <0x0 0x00400000>;
	};
	partition@00400000 {
		label = "ubipart";
		reg = <0x00400000 0x1F400000>;
	};

	partition@1F800000 {
		label = "oopsdata";
		reg = <0x1F800000 0x780000>;
	};
};

