blob: d219144c074fe67f05764fa327aded1a461da907 [file] [log] [blame]
/*
* 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>;
};
};