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

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include "flintstone-common.dtsi"

/ {
	aliases {
		serial-ble0 = &uart3;
		i2c0 = &i2c1;
		i2c1 = &i2c2;
		i2c2 = &i2c3;
		i2c3 = &i2c4;
	};

	memory {
		reg = <0x80000000 0x20000000>; /* 512 MB */
	};

	sound {
		compatible = "fsl,imx-audio";
		model = "imx-audio";
		cpu-dai = <&sai1>;
		spkr-codec = <&codec_tfa9890>;
		mic-codec = <&codec_wm8940>;
		dsp = <&dsp_cs48l10>;
	};

	regulators {
		compatible = "simple-bus";

		/* PP_V3V (via TPS630252YFF Buck Regulator) */
		buck_3v3_reg: buck_3v3 {
			compatible = "regulator-fixed";
			regulator-name = "3v3_buck";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		panic-button {
			label = "Panic";
			gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
			linux,code = <63>; /* KEY_F5 */
			gpio-key,wakeup;
		};

		five-key {
			label = "Five Key";
			gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
			linux,code = <6>; /* KEY_5 */
			gpio-key,wakeup;
		};
	};

	/* GPIO Exporter Nodes */
	tamper-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		input-names = "usb-id-pin";
		input-gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
	};

	brcm_wifi {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "reset";
		output-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
	};

	brcm-wlan {
		compatible = "brcm,bcmdhd_wlan";
		interrupts-extended = <&gpio5 15 IRQ_TYPE_LEVEL_HIGH>;
	};

	em35x-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "reset", "wake";
		output-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH
			 &gpio2 5 GPIO_ACTIVE_HIGH>;
		input-names = "irq";
		input-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
	};

	ble0-da14580-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "reset";
		output-gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>;
	};

	buzzer-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "power-enable", "enable";
		output-gpios = <&gpio5 0 GPIO_ACTIVE_HIGH
				&gpio5 1 GPIO_ACTIVE_LOW>;
	};

	sound-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		output-names = "audio-mux-data";
		output-gpios = <&gpio7 5 GPIO_ACTIVE_HIGH>;
	};

	cell-gpios {
		reg = <0x0 0>;
		compatible = "nestlabs,gpio-exporter";
		input-names = "cell-presence", "cell-on";
		input-gpios = <&gpio3 12 GPIO_ACTIVE_LOW
				&gpio2 1 GPIO_ACTIVE_HIGH>;
		output-names = "power-enable", "power-reset";
		output-gpios = <&gpio5 12 GPIO_ACTIVE_HIGH
				&gpio5 13 GPIO_ACTIVE_HIGH>;
	};

	pad_clk_24m: pad-clk-24m {
		compatible = "padctl-gate-clock";
		clocks = <&osc>;
		#clock-cells = <0>;
		pinctrl-names = "default", "active";
		pinctrl-0 = <&pinctrl_24m_disabled>;
		pinctrl-1 = <&pinctrl_24m_enabled>;
		status = "okay";
	};
};

/* Battery Divider Circuit ADC */
&adc1 {
	#io-channel-cells = <1>;
	vref-supply = <&buck_3v3_reg>;
	status = "okay";
};

/* Zigbee SPI */
&ecspi3 {
	fsl,spi-num-chipselects = <1>;
	cs-gpios = <&gpio4 30 GPIO_ACTIVE_LOW>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi3_1>;
	dmas;
	status = "okay";

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

/* Power Controller */
&gpc {
	fsl,cpu_pupscr_sw2iso = <0xf>;
	fsl,cpu_pupscr_sw = <0xf>;
	fsl,cpu_pdnscr_iso2sw = <0x1>;
	fsl,cpu_pdnscr_iso = <0x1>;
	fsl,wdog-reset = <1>; /* watchdog select of reset source */
};

/* Sensors I2C */
&i2c1 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1_3>;
	status = "okay";

	/* LIS2DH12 (Accel) @ 0x18 */
	lis2dh12@18 {
		compatible = "st,lis2dh12";
		reg = <0x18>;
		interrupt-parent = <&gpio1>;
		interrupts = <13 GPIO_ACTIVE_HIGH>;
	};

	/* SHTC1 (Humidity) @ 0x70 */
	shtc1@70 {
		compatible = "sensirion,shtc1";
		reg = <0x70>;
	};

	/* TMP103B (Temp) @ 0x71 */
	tmp103b@71 {
		compatible = "ti,tmp103b";
		reg = <0x71>;
	};

	/* TMP103C (Temp) @ 0x72 */
	tmp103b@72 {
		compatible = "ti,tmp103c";
		reg = <0x72>;
	};

	/* TMP103D (Temp) @ 0x73 */
	tmp103b@73 {
		compatible = "ti,tmp103d";
		reg = <0x73>;
	};

};

/* Audio I2C */
&i2c3 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c3_3>;
	status = "okay";

	codec_tfa9890: tfa9890@37 {
		compatible = "nxp,tfa98xx";
		reg = <0x37>;
		gpios = <&gpio5 2 0>; /* RESET */
	};

	codec_wm8940: wm8940@1a {
		compatible = "wlf,wm8940";
		reg = <0x1a>;
	};
};

/* PMIC and Charger I2C */
&i2c4 {
	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c4_3>;
	status = "okay";

	/* MMPF0200 (PMIC) @ 0x08 */
	pmic: pfuze200@08 {
		compatible = "fsl,pfuze200";
		reg = <0x08>;

		regulators {
			/* PP_VDDCORE */
			sw1a_reg: sw1ab {
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <6250>;
			};

			/* STANDBY PP_VDDCORE */
			sw1astby_reg: sw1abstby {
				regulator-min-microvolt = <975000>;
				regulator-max-microvolt = <975000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* PP_VDDSOC */
			sw2_reg: sw2 {
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* STANDBY PP_VDDSOC */
			sw2stby_reg: sw2stby {
				regulator-min-microvolt = <1125000>;
				regulator-max-microvolt = <1125000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* PP_1V8 */
			sw3a_reg: sw3a {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* STANDBY PP1V8 */
			sw3astby_reg: sw3astby {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* PP_1V2_DDR */
			sw3b_reg: sw3b {
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* STANDBY PP_1V2_DDR */
			sw3bstby_reg: sw3bstby {
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* PP_5V_PMIC */
			swbst_reg: swbst {
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5000000>;
			};

			/* PP_VSNVS_3V0 */
			snvs_reg: vsnvs {
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-boot-on;
				regulator-always-on;
			};

			/* PP_DDR_VREF */
			vref_reg: vrefddr {
				regulator-boot-on;
				regulator-always-on;
			};

			/* SWBST_EN_H: */
			vgen3_reg: vgen3 {
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
			};

			/* PP_3V0_LDO: */
			vgen4_reg: vgen4 {
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
			};

			/* PP1V8_LDO: */
			vgen5_reg: vgen5 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};
		};
	};

	/* BQ24251RGE (Charger Chip) @ 0x6A */
	bq24251rge@6a {
		compatible = "ti,bq24251-charger";
		reg = <0x6a>;
		stat-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;

		battery-regulation-voltage = <4200000>;
		charge-current = <500000>;
		term-current-sense-threshold = <50000>;
		vindpm-threshold = <4200000>;
		ovp-voltage = <6500000>;

		io-channels = <&adc1 0>;
		divider-r1-ohm = <100000>;
		divider-r2-ohm = <301000>;
		power-supplies = <&usbotg1>;
	};
};

/* Pinmux Controller */
&iomuxc {
	i2c1 {
		pinctrl_i2c1_3: i2c1grp-3 {
			fsl,pins = <
				MX6SX_PAD_GPIO1_IO01__I2C1_SDA          0x4001b899
				MX6SX_PAD_GPIO1_IO00__I2C1_SCL          0x4001b899
			>;
		};
	};

	i2c3 {
		pinctrl_i2c3_3: i2c3grp-3 {
			fsl,pins = <
				MX6SX_PAD_KEY_ROW4__I2C3_SDA            0x4001f899
				MX6SX_PAD_KEY_COL4__I2C3_SCL            0x4001f899
			>;
		};
	};

	i2c4 {
		pinctrl_i2c4_3: i2c4grp-3 {
			fsl,pins = <
				MX6SX_PAD_USB_H_DATA__I2C4_SDA		0x4001b899
				MX6SX_PAD_USB_H_STROBE__I2C4_SCL	0x4001b899
			>;
		};
	};

	sai1 {
		pinctrl_sai1_3: sai1grp_3 {
			fsl,pins = <
				MX6SX_PAD_RGMII2_TD3__SAI1_TX_BCLK	0x1b030
				MX6SX_PAD_RGMII2_TD2__SAI1_TX_SYNC	0x1b030
				MX6SX_PAD_RGMII2_TXC__SAI1_TX_DATA_0	0x1b030
				MX6SX_PAD_RGMII2_TX_CTL__SAI1_RX_DATA_0	0x1b030
			>;
		};
	};

	uart1 {
		pinctrl_uart1_2: uart1grp-2 {
			fsl,pins = <
				MX6SX_PAD_ENET2_COL__UART1_RX 0x1b0b1
				MX6SX_PAD_ENET2_CRS__UART1_TX 0x1b0b1
			>;
		};
	};

	uart3 {
		pinctrl_uart3_2: uart3grp-2 {
			fsl,pins = <

				MX6SX_PAD_SD3_DATA4__UART3_RX		0x0041b0b1
				MX6SX_PAD_SD3_DATA5__UART3_TX		0x0041b0b1
				MX6SX_PAD_SD3_DATA7__UART3_CTS_B	0x0041b0b1
				MX6SX_PAD_SD3_DATA6__UART3_RTS_B	0x0041b0b1
			>;
		};
	};

	hog {
		mlb_hogs: mlb-hogs {
			fsl,pins = <
				MX6SX_PAD_SD3_DATA1__GPIO7_IO_3		0x0041b0b0	/* Panic Button */
				MX6SX_PAD_SD3_CLK__GPIO7_IO_0		0x004100b0	/* 5 Key Button */

				MX6SX_PAD_RGMII2_RD3__GPIO5_IO_15	0x400010b0	/* wifi OOB: interrupt to cpu */
				MX6SX_PAD_GPIO1_IO04__GPIO1_IO_4	0x400010b0	/* wifi OOB: reset from cpu */

				MX6SX_PAD_ENET1_RX_CLK__GPIO2_IO_4	0x400010b0	/* zb OOB: IRQ from zb */
				MX6SX_PAD_ENET1_COL__GPIO2_IO_0		0x400010b0	/* zb OOB: Reset from cpu */
				MX6SX_PAD_ENET1_TX_CLK__GPIO2_IO_5	0x400010b0	/* zb OOB: Wake from cpu */

				MX6SX_PAD_RGMII2_RX_CTL__GPIO5_IO_16	0x400010b0	/* BLE_RST */

				MX6SX_PAD_RGMII1_RD0__GPIO5_IO_0	0x400000b0	/* HORN_PWR_EN */
				MX6SX_PAD_RGMII1_RD1__GPIO5_IO_1	0x400000b0	/* HORN_EN_L */

				MX6SX_PAD_RGMII1_TD0__GPIO5_IO_6	0x400010b0	/* Audio DSP Reset */
				MX6SX_PAD_RGMII1_TD1__GPIO5_IO_7	0x400010b0	/* Audio DSP Interrupt */
				MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9	0x400010b0	/* Audio DSP Busy */
				MX6SX_PAD_QSPI1B_DQS__GPIO4_IO_28	0x400010b0	/* ecspi5 SS0 cs GPIO */

				MX6SX_PAD_RGMII1_RD2__GPIO5_IO_2	0x400010b0	/* TFA9890 Reset */
				MX6SX_PAD_SD3_DATA3__GPIO7_IO_5		0x004000b0	/* Audio mux data */

				MX6SX_PAD_QSPI1B_SS0_B__GPIO4_IO_30	0x400010b0	/* ecspi3 SS0 cs GPIO */

				MX6SX_PAD_GPIO1_IO13__GPIO1_IO_13	0x400000b0	/* lis2dh12 interrupt */

				MX6SX_PAD_RGMII1_RD2__GPIO5_IO_2	0x400010b0	/* tfa9890 reset */

				MX6SX_PAD_QSPI1A_SCLK__GPIO4_IO_21	0x000000b0	/* bq24251 stat */

				MX6SX_PAD_ENET1_MDIO__OSC32K_32K_OUT	0x000000b0	/* CPU_32K_CLK_OUT */

				MX6SX_PAD_RGMII2_RD0__GPIO5_IO_12	0x400000b0	/* CELL_POWER_EN */
				MX6SX_PAD_RGMII2_RD1__GPIO5_IO_13	0x400000b0	/* CELL_POWER_RESET */
				MX6SX_PAD_LCD1_DATA11__GPIO3_IO_12	0x400010b0	/* CELL_PRESENCE */
				MX6SX_PAD_ENET1_CRS__GPIO2_IO_1		0x400010b0	/* CELL_ON */

				MX6SX_PAD_QSPI1A_DATA1__GPIO4_IO_17	0x0001b8b1	/* USB ID Pin used as tamper */

				MX6SX_PAD_GPIO1_IO08__WDOG1_WDOG_B	0x000000b0	/* Watchdog */
				MX6SX_PAD_RGMII2_TD0__GPIO5_IO_18	0x000000b0	/* Warm Reset */

			>;
		};
	};

	ecspi3 {
		pinctrl_ecspi3_1: ecspi3grp-1 {
			fsl,pins = <
				MX6SX_PAD_QSPI1B_DATA1__ECSPI3_MISO	0x100b1
				MX6SX_PAD_QSPI1B_DATA0__ECSPI3_MOSI	0x100b1
				MX6SX_PAD_QSPI1B_SCLK__ECSPI3_SCLK	0x100b1
			>;
		};
	};

	ecspi5 {
		pinctrl_ecspi5_1: ecspi5grp-1 {
			fsl,pins = <
				MX6SX_PAD_QSPI1A_SS1_B__ECSPI5_MISO	0x100b1
				MX6SX_PAD_QSPI1A_DQS__ECSPI5_MOSI	0x100b1
				MX6SX_PAD_QSPI1B_SS1_B__ECSPI5_SCLK	0x100b1
			>;
		};
	};

	24m-clk {
		pinctrl_24m_enabled: 24m-enabled {
			fsl,pins = <
				MX6SX_PAD_ENET1_MDC__ANATOP_24M_OUT	0x000010b0	/* CPU_24M_CLK_OUT */
			>;
		};

		pinctrl_24m_disabled: 24m-disabled {
			fsl,pins = <
				MX6SX_PAD_ENET1_MDC__ANATOP_24M_OUT	0x00001000	/* CPU_24M_CLK_OUT */
			>;
		};
	};

	usdhc2 {
		pinctrl_usdhc2_1: usdhc2grp-1 {
			fsl,pins = <
				MX6SX_PAD_SD2_CMD__USDHC2_CMD     0x17059
				MX6SX_PAD_SD2_CLK__USDHC2_CLK     0x10059
				MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059
				MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059
				MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059
				MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059
			>;
		};
	};

};

/* A9 Debug UART */
&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1_2>;
	status = "okay";
};

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

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

/* Cellular USB (Host) */
&usbotg2 {
	vbus-supply = <&swbst_reg>;
	dr_mode = "host";
	disable-over-current;
	status = "okay";
};

/* WIFI SDIO */
&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2_1>;
	non-removable;
	keep-power-in-suspend;
	enable-sdio-wakeup;
	status = "okay";
	brcm-fmac {
		reg = <1>;
		compatible = "brcm,bcm4329-fmac";
		interrupt-names = "host-wake";
		interrupt-parent = <&gpio5>;
		interrupts = <15 IRQ_TYPE_LEVEL_HIGH>;
	};
};

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

	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>;
	};
};

/* Smart DMA */
&sdma {
	gpr = <&gpr>;
	/* SDMA event remap for SAI1 */
	fsl,sdma-event-remap = <0 15 1>, <0 16 1>;
};

/* Synchronous Audio Interface */
&sai1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai1_3>;
	status = "okay";
};

/* Audio DSP */
&ecspi5 {
	fsl,spi-num-chipselects = <1>;
	cs-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi5_1>;
	dmas;
	status = "okay";

	dsp_cs48l10: dsp-crus@0 {
		compatible = "crus,cs48l10";
		reg = <0>;
		interrupt-parent = <&intc>;
		spi-max-frequency = <19200000>;
		boot-speed = <19200000>;
		boot-type-msg = <0x80000011>;
		nreset-gpios = <134>;
		int-gpios = <135>;
		gpio_busy = <41>;
		clocks = <&pad_clk_24m>;
	};
};
