blob: 00a18c73bf135af3a390c1232bf944fbe82e6080 [file] [log] [blame]
/*
...
* Copyright (C) 2014 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 "imx6sx.dtsi"
/ {
model = "NestLabs D3 Dev Board";
compatible = "nestlabs,diamond3-dev", "fsl,imx6sx";
memory {
reg = <0x80000000 0x20000000>; /* 512 MB */
};
gpio-keys {
compatible = "gpio-keys";
HU-button {
label = "HU Button";
gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>;
linux,code = <28>; /* KEY_ENTER */
gpio-key,wakeup;
};
};
brcm_wifi {
host-irq-gpio = <&gpio5 15 GPIO_ACTIVE_HIGH>;
reg = <0x0 0>;
compatible = "nestlabs,gpio-exporter";
output-names = "reset";
output-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
};
pwm-beeper {
compatible = "pwm-beeper";
pwms = <&pwm1>;
enable-gpio = <&gpio1 5 GPIO_ACTIVE_LOW>;
};
em35x-gpios {
compatible = "nestlabs,gpio-exporter";
reg = <0x0 0>;
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>;
};
aliases {
serial-ble0 = &uart5;
serial-sensormcu0 = &uart6;
};
ble0-da14580-gpios {
reg = <0x0 0>;
compatible = "nestlabs,gpio-exporter";
output-names = "reset";
output-gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>;
};
sensor-mcu-gpios {
compatible = "nestlabs,gpio-exporter";
reg = <0x0 0>;
output-names = "reset";
output-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
input-names = "detect#";
input-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
};
battery {
compatible = "adc-div-battery";
io-channels = <&adc1 0>;
divider-r1-ohm = <100000>;
divider-r2-ohm = <301000>;
status = "okay";
};
};
/* ADC1 for VBAT */
&adc1 {
#io-channel-cells = <1>;
vref-supply = <&vgen6_reg>;
status = "okay";
};
/*lcd driver spi*/
&ecspi1 {
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1_1>;
status = "okay";
hx8369@0{
compatible = "himax,hx8369";
spi-max-frequency= <2000000>;
gpios-reset = <&gpio3 27 GPIO_ACTIVE_LOW>;
reg = <0>;
spi-cpol;
spi-cpha;
};
};
/* Zigbee SPI */
&ecspi3 {
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio4 30 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi3_1>;
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 */
};
/* PWM1 for Piezo */
&pwm1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm1_0>;
status = "okay";
};
/* I2C2 */
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_1>;
status = "okay";
/* LM3530 (LED Driver) @ 0x33 */
lm3530@33{
compatible= "national,lm3530";
reg = <0x38>;
pmws = <0>;
max-cur = <29>;
enable-gpio = <&gpio2 14 GPIO_ACTIVE_HIGH>;
};
};
&i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c4_3>;
status = "okay";
/* MMPF0200 (PMIC) @ 0x08 */
pmic: pfuze200@08 {
compatible = "fsl,pfuze200";
reg = <0x08>;
regulators {
/* VDDCORE: VDD_ARM_IN */
sw1a_reg: sw1ab {
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <6250>;
};
/* STANDBY VDDCORE: VDD_ARM_IN */
sw1astby_reg: sw1abstby {
regulator-min-microvolt = <975000>;
regulator-max-microvolt = <975000>;
regulator-boot-on;
regulator-always-on;
};
/* VDDSOC: VDD_SOC_IN */
sw2_reg: sw2 {
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-boot-on;
regulator-always-on;
};
/* STANDBY VDDSOC: VDD_SOC_IN */
sw2stby_reg: sw2stby {
regulator-min-microvolt = <975000>;
regulator-max-microvolt = <975000>;
regulator-boot-on;
regulator-always-on;
};
/* PP2V2_DDR: DDR */
sw3a_reg: sw3a {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-boot-on;
regulator-always-on;
};
/* STANDBY PP2V2_DDR: DDR */
sw3astby_reg: sw3astby {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-boot-on;
regulator-always-on;
};
/* PP1V8: NAND, Several Digital I/O Supplies (NVCC_KEY, NVCC_GPIO, etc) */
sw3b_reg: sw3b {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
regulator-always-on;
};
/* STANDBY PP1V8: NAND, Several Digital I/O Supplies (NVCC_KEY, NVCC_GPIO, etc) */
sw3bstby_reg: sw3bstby {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
regulator-always-on;
};
/* VSNVS_3V0: Pullups for reset buttons and boot straps */
snvs_reg: vsnvs {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-boot-on;
regulator-always-on;
};
/* DDR_VREF: DDR */
vref_reg: vrefddr {
regulator-boot-on;
regulator-always-on;
};
/* DISPLAY */
vgen5_reg: vgen5 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-always-on;
};
vgen6_reg: vgen6 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-always-on;
};
};
};
};
/* Pinmux Controller */
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
pwm1 {
pinctrl_pwm1_0: pwm1grp-0 {
fsl,pins = <
MX6SX_PAD_GPIO1_IO10__PWM1_OUT 0x110b0
>;
};
};
i2c4 {
pinctrl_i2c4_3: i2c4grp-3 {
fsl,pins = <
MX6SX_PAD_USB_H_DATA__I2C4_SDA 0x4001b8b1
MX6SX_PAD_USB_H_STROBE__I2C4_SCL 0x4001b8b1
>;
};
};
uart5 {
pinctrl_uart5_2: uart5grp-2 {
fsl,pins = <
MX6SX_PAD_SD4_DATA4__UART5_RX 0x1b0b1
MX6SX_PAD_SD4_DATA5__UART5_TX 0x1b0b1
MX6SX_PAD_SD4_DATA7__UART5_CTS_B 0x1b0b1
MX6SX_PAD_SD4_DATA6__UART5_RTS_B 0x1b0b1
>;
};
};
uart6 {
pinctrl_uart6_1: uart6grp-1 {
fsl,pins = <
MX6SX_PAD_KEY_ROW1__UART6_RX 0x1b0b1
MX6SX_PAD_KEY_COL1__UART6_TX 0x1b0b1
MX6SX_PAD_KEY_ROW0__UART6_CTS_B 0x1b0b1
MX6SX_PAD_KEY_COL0__UART6_RTS_B 0x1b0b1
>;
};
};
lcdif1 {
/* Set Hi-Z on all LCD data pins, as there are external pulls */
pinctrl_lcdif_dat_1: lcdifdatgrp-1 {
fsl,pins = <
MX6SX_PAD_LCD1_DATA00__LCDIF1_DATA_0 0x4001a040
MX6SX_PAD_LCD1_DATA01__LCDIF1_DATA_1 0x4001a040
MX6SX_PAD_LCD1_DATA02__LCDIF1_DATA_2 0x4001a040
MX6SX_PAD_LCD1_DATA03__LCDIF1_DATA_3 0x4001a040
MX6SX_PAD_LCD1_DATA04__LCDIF1_DATA_4 0x4001a040
MX6SX_PAD_LCD1_DATA05__LCDIF1_DATA_5 0x4001a040
MX6SX_PAD_LCD1_DATA06__LCDIF1_DATA_6 0x4001a040
MX6SX_PAD_LCD1_DATA07__LCDIF1_DATA_7 0x4001a040
MX6SX_PAD_LCD1_DATA08__LCDIF1_DATA_8 0x4001a040
MX6SX_PAD_LCD1_DATA09__LCDIF1_DATA_9 0x4001a040
MX6SX_PAD_LCD1_DATA10__LCDIF1_DATA_10 0x4001a040
MX6SX_PAD_LCD1_DATA11__LCDIF1_DATA_11 0x4001a040
MX6SX_PAD_LCD1_DATA12__LCDIF1_DATA_12 0x4001a040
MX6SX_PAD_LCD1_DATA13__LCDIF1_DATA_13 0x4001a040
MX6SX_PAD_LCD1_DATA14__LCDIF1_DATA_14 0x4001a040
MX6SX_PAD_LCD1_DATA15__LCDIF1_DATA_15 0x4001a040
MX6SX_PAD_LCD1_DATA16__LCDIF1_DATA_16 0x4001a040
MX6SX_PAD_LCD1_DATA17__LCDIF1_DATA_17 0x4001a040
MX6SX_PAD_LCD1_DATA18__LCDIF1_DATA_18 0x4001a040
MX6SX_PAD_LCD1_DATA19__LCDIF1_DATA_19 0x4001a040
MX6SX_PAD_LCD1_DATA20__LCDIF1_DATA_20 0x4001a040
MX6SX_PAD_LCD1_DATA21__LCDIF1_DATA_21 0x4001a040
MX6SX_PAD_LCD1_DATA22__LCDIF1_DATA_22 0x4001a040
MX6SX_PAD_LCD1_DATA23__LCDIF1_DATA_23 0x4001a040
>;
};
/* Set weak pullups on all LCD control pins */
pinctrl_lcdif_ctrl_1: lcdifctrlgrp-1 {
fsl,pins = <
MX6SX_PAD_LCD1_CLK__LCDIF1_CLK 0x4001b040
MX6SX_PAD_LCD1_ENABLE__LCDIF1_ENABLE 0x4001b040
MX6SX_PAD_LCD1_VSYNC__LCDIF1_VSYNC 0x4001b040
MX6SX_PAD_LCD1_HSYNC__LCDIF1_HSYNC 0x4001b040
MX6SX_PAD_LCD1_RESET__GPIO3_IO_27 0x4001b040
>;
};
};
hog {
pinctrl_hog: hoggrp {
fsl,pins = <
MX6SX_PAD_RGMII2_RD3__GPIO5_IO_15 0xc0000000 /* wifi OOB: interrupt to cpu */
MX6SX_PAD_GPIO1_IO04__GPIO1_IO_4 0xc0000000 /* wifi OOB: reset from cpu */
MX6SX_PAD_QSPI1B_SS0_B__GPIO4_IO_30 0xc0000000 /* ecspi3 SS0 cs GPIO */
MX6SX_PAD_ENET1_RX_CLK__GPIO2_IO_4 0xc0000000 /* zb OOB: IRQ from zb */
MX6SX_PAD_ENET1_COL__GPIO2_IO_0 0xc0000000 /* zb OOB: Reset from cpu */
MX6SX_PAD_ENET1_TX_CLK__GPIO2_IO_5 0xc0000000 /* zb OOB: Wake from cpu */
MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0x000000b0 /* zb OOB: PWR_EN, leave floating */
MX6SX_PAD_RGMII2_RX_CTL__GPIO5_IO_16 0xc0000000 /* BLE Reset_L */
MX6SX_PAD_RGMII2_RXC__GPIO5_IO_17 0xc0000000 /* BLE INT */
MX6SX_PAD_KEY_COL4__GPIO2_IO_14 0xc0000000 /* LCD backlight_EN */
MX6SX_PAD_QSPI1A_SS0_B__GPIO4_IO_22 0xc0000000 /* LCD CS */
MX6SX_PAD_RGMII2_RD1__GPIO5_IO_13 0xc0000000 /* Backplate_detect */
MX6SX_PAD_RGMII2_RD2__GPIO5_IO_14 0xc0000000 /* Backplate_reset_L */
MX6SX_PAD_GPIO1_IO11__GPIO1_IO_11 0xc0000000 /* BATT_DISCONNECT */
MX6SX_PAD_GPIO1_IO05__GPIO1_IO_5 0xc0000000 /* Piezo EN */
MX6SX_PAD_ENET1_MDIO__OSC32K_32K_OUT 0x10b0 /* CPU_32K_CLK_OUT */
>;
};
};
ecspi1 {
pinctrl_ecspi1_1: ecspi1grp-1 {
fsl,pins = <
MX6SX_PAD_QSPI1A_DATA1__ECSPI1_MISO 0x100b1
MX6SX_PAD_QSPI1A_DATA0__ECSPI1_MOSI 0x100b1
MX6SX_PAD_QSPI1A_SCLK__ECSPI1_SCLK 0x100b1
>;
};
};
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
>;
};
};
};
/* A9 Debug UART */
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1_2>;
status = "okay";
};
/* M4 Debug UART */
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2_1>;
status = "okay";
};
/* Bluetooth UART */
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5_2>;
fsl,uart-has-rtscts;
//fsl,uart-can-wake;
fsl,uart-cpu-mode;
status = "okay";
};
/* BP UART */
&uart6 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart6_1>;
fsl,uart-has-rtscts;
fsl,uart-can-wake;
status = "okay";
};
/* Debug USB (Device) */
&usbotg1 {
pinctrl-names = "default";
dr_mode = "peripheral";
imx6-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";
};
/* Debug SD Card */
&usdhc4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc4_2>;
cd-gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
wp-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
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>;
};
};
&cpu0 {
operating-points = <
/* kHz uV */
396000 1075000
>;
fsl,soc-operating-points = <
/* ARM kHz SOC uV */
396000 1175000
>;
};