// SPDX-License-Identifier: GPL-2.0 OR X11
/*
* Copyright (C) 2016 Boundary Devices, Inc.
*/
/dts-v1/;
#include "imx6sx.dtsi"
/ {
model = "Boundary Devices i.MX6 SoloX Nitrogen6sx Board";
compatible = "boundary,imx6sx-nitrogen6sx", "fsl,imx6sx";
memory@80000000 {
device_type = "memory";
reg = <0x80000000 0x40000000>;
};
backlight-lvds {
compatible = "pwm-backlight";
pwms = <&pwm4 0 5000000 0>;
brightness-levels = <0 4 8 16 32 64 128 255>;
default-brightness-level = <6>;
power-supply = <®_3p3v>;
};
reg_1p8v: regulator-1p8v {
compatible = "regulator-fixed";
regulator-name = "1P8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
reg_3p3v: regulator-3p3v {
compatible = "regulator-fixed";
regulator-name = "3P3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
reg_can1_3v3: regulator-can1-3v3 {
compatible = "regulator-fixed";
regulator-name = "can1-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio4 27 GPIO_ACTIVE_LOW>;
};
reg_can2_3v3: regulator-can2-3v3 {
compatible = "regulator-fixed";
regulator-name = "can2-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio4 24 GPIO_ACTIVE_LOW>;
};
reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1_vbus>;
compatible = "regulator-fixed";
regulator-name = "usb_otg1_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
reg_wlan: regulator-wlan {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_wlan>;
compatible = "regulator-fixed";
clocks = <&clks IMX6SX_CLK_CKO>;
regulator-name = "wlan-en";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
startup-delay-us = <70000>;
gpio = <&gpio7 6 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
sound {
compatible = "fsl,imx-audio-sgtl5000";
model = "imx6sx-nitrogen6sx-sgtl5000";
ssi-controller = <&ssi1>;
audio-codec = <&codec>;
audio-routing =
"MIC_IN", "Mic Jack",
"Mic Jack", "Mic Bias",
"Headphone Jack", "HP_OUT";
mux-int-port = <1>;
mux-ext-port = <5>;
};
};
&audmux {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_audmux>;
status = "okay";
};
&ecspi1 {
cs-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>;
status = "okay";
flash: flash@0 {
compatible = "microchip,sst25vf016b";
spi-max-frequency = <20000000>;
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "U-Boot";
reg = <0x0 0xc0000>;
read-only;
};
partition@c0000 {
label = "env";
reg = <0xc0000 0x2000>;
read-only;
};
partition@c2000 {
label = "Kernel";
reg = <0xc2000 0x11e000>;
};
partition@1e0000 {
label = "M4";
reg = <0x1e0000 0x20000>;
};
};
};
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
phy-mode = "rgmii";
phy-handle = <ðphy1>;
phy-supply = <®_3p3v>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy1: ethernet-phy@4 {
reg = <4>;
};
ethphy2: ethernet-phy@5 {
reg = <5>;
};
};
};
&fec2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet2>;
phy-mode = "rgmii";
phy-handle = <ðphy2>;
phy-supply = <®_3p3v>;
fsl,magic-packet;
status = "okay";
};
&flexcan1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan1>;
xceiver-supply = <®_can1_3v3>;
status = "okay";
};
&flexcan2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexcan2>;
xceiver-supply = <®_can2_3v3>;
status = "okay";
};
&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
codec: sgtl5000@a {
compatible = "fsl,sgtl5000";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sgtl5000>;
reg = <0x0a>;
#sound-dai-cells = <0>;
clocks = <&clks IMX6SX_CLK_CKO2>;
VDDA-supply = <®_1p8v>;
VDDIO-supply = <®_1p8v>;
VDDD-supply = <®_1p8v>;
assigned-clocks = <&clks IMX6SX_CLK_CKO2_SEL>,
<&clks IMX6SX_CLK_CKO2>;
assigned-clock-parents = <&clks IMX6SX_CLK_OSC>;
assigned-clock-rates = <0>, <24000000>;
};
};
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
};
&pcie {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie>;
reset-gpio = <&gpio4 10 GPIO_ACTIVE_LOW>;
status = "okay";
};
&pwm4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm4>;
};
&ssi1 {
status = "okay";
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
status = "okay";
};
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
uart-has-rtscts;
status = "okay";
};
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5>;
status = "okay";
};
&usbotg1 {
vbus-supply = <®_usb_otg1_vbus>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
status = "okay";
};
&usbotg2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg2>;
dr_mode = "host";
disable-over-current;
reset-gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;
status = "okay";
};
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2>;
bus-width = <4>;
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
keep-power-in-suspend;
wakeup-source;
status = "okay";
};
&usdhc3 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3>;
bus-width = <4>;
non-removable;
keep-power-in-suspend;
vmmc-supply = <®_wlan>;
cap-power-off-card;
cap-sdio-irq;
status = "okay";
brcmf: wifi@1 {
reg = <1>;
compatible = "brcm,bcm4329-fmac";
interrupt-parent = <&gpio7>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
};
wlcore: wlcore@2 {
compatible = "ti,wl1271";
reg = <2>;
interrupt-parent = <&gpio7>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
ref-clock-frequency = <38400000>;
};
};
&usdhc4 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc4_50mhz>;
pinctrl-1 = <&pinctrl_usdhc4_100mhz>;
pinctrl-2 = <&pinctrl_usdhc4_200mhz>;
bus-width = <8>;
non-removable;
vmmc-supply = <®_1p8v>;
keep-power-in-suspend;
status = "okay";
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
pinctrl_audmux: audmuxgrp {
fsl,pins = <
MX6SX_PAD_SD1_DATA0__AUDMUX_AUD5_RXD 0x1b0b0
MX6SX_PAD_SD1_DATA1__AUDMUX_AUD5_TXC 0x1b0b0
MX6SX_PAD_SD1_DATA2__AUDMUX_AUD5_TXFS 0x1b0b0
MX6SX_PAD_SD1_DATA3__AUDMUX_AUD5_TXD 0x1b0b0
>;
};
pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
MX6SX_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
MX6SX_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
MX6SX_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
MX6SX_PAD_KEY_ROW1__GPIO2_IO_16 0x0b0b1
>;
};
pinctrl_enet1: enet1grp {
fsl,pins = <
MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0x1b0b0
MX6SX_PAD_ENET1_MDC__ENET1_MDC 0x1b0b0
MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0x30b1
MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0x30b1
MX6SX_PAD_RGMII1_TD2__ENET1_TX_DATA_2 0x30b1
MX6SX_PAD_RGMII1_TD3__ENET1_TX_DATA_3 0x30b1
MX6SX_PAD_RGMII1_TXC__ENET1_RGMII_TXC 0x30b1
MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0x30b1
MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081
MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081
MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081
MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2 0x3081
MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081
MX6SX_PAD_RGMII1_RXC__ENET1_RX_CLK 0x3081
MX6SX_PAD_ENET2_CRS__GPIO2_IO_7 0xb0b0
MX6SX_PAD_ENET1_RX_CLK__GPIO2_IO_4 0xb0b0
MX6SX_PAD_ENET1_TX_CLK__GPIO2_IO_5 0xb0b0
>;
};
pinctrl_enet2: enet2grp {
fsl,pins = <
MX6SX_PAD_RGMII2_TD0__ENET2_TX_DATA_0 0x30b1
MX6SX_PAD_RGMII2_TD1__ENET2_TX_DATA_1 0x30b1
MX6SX_PAD_RGMII2_TD2__ENET2_TX_DATA_2 0x30b1
MX6SX_PAD_RGMII2_TD3__ENET2_TX_DATA_3 0x30b1
MX6SX_PAD_RGMII2_TXC__ENET2_RGMII_TXC 0x30b1
MX6SX_PAD_RGMII2_TX_CTL__ENET2_TX_EN 0x30b1
MX6SX_PAD_RGMII2_RD0__ENET2_RX_DATA_0 0x3081
MX6SX_PAD_RGMII2_RD1__ENET2_RX_DATA_1 0x3081
MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN 0x3081
MX6SX_PAD_RGMII2_RD2__ENET2_RX_DATA_2 0x3081
MX6SX_PAD_RGMII2_RD3__ENET2_RX_DATA_3 0x3081
MX6SX_PAD_RGMII2_RXC__ENET2_RX_CLK 0x3081
MX6SX_PAD_ENET2_COL__GPIO2_IO_6 0xb0b0
MX6SX_PAD_ENET2_RX_CLK__GPIO2_IO_8 0xb0b0
MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9 0xb0b0
>;
};
pinctrl_flexcan1: flexcan1grp {
fsl,pins = <
MX6SX_PAD_QSPI1B_DQS__CAN1_TX 0x1b0b0
MX6SX_PAD_QSPI1A_SS1_B__CAN1_RX 0x1b0b0
MX6SX_PAD_QSPI1B_DATA3__GPIO4_IO_27 0x1b0b0
MX6SX_PAD_QSPI1B_DATA3__GPIO4_IO_27 0x0b0b0
>;
};
pinctrl_flexcan2: flexcan2grp {
fsl,pins = <
MX6SX_PAD_QSPI1A_DQS__CAN2_TX 0x1b0b0
MX6SX_PAD_QSPI1B_SS1_B__CAN2_RX 0x1b0b0
MX6SX_PAD_QSPI1B_DATA0__GPIO4_IO_24 0x0b0b0
>;
};
pinctrl_hog: hoggrp {
fsl,pins = <
MX6SX_PAD_NAND_CE0_B__GPIO4_IO_1 0x1b0b0
MX6SX_PAD_NAND_CLE__GPIO4_IO_3 0x1b0b0
MX6SX_PAD_NAND_RE_B__GPIO4_IO_12 0x1b0b0
MX6SX_PAD_NAND_WE_B__GPIO4_IO_14 0x1b0b0
MX6SX_PAD_NAND_WP_B__GPIO4_IO_15 0x1b0b0
MX6SX_PAD_NAND_READY_B__GPIO4_IO_13 0x1b0b0
MX6SX_PAD_QSPI1A_DATA0__GPIO4_IO_16 0x1b0b0
MX6SX_PAD_QSPI1A_DATA1__GPIO4_IO_17 0x1b0b0
MX6SX_PAD_QSPI1A_DATA2__GPIO4_IO_18 0x1b0b0
MX6SX_PAD_QSPI1A_DATA3__GPIO4_IO_19 0x1b0b0
MX6SX_PAD_SD1_CMD__CCM_CLKO1 0x000b0
MX6SX_PAD_SD3_DATA5__GPIO7_IO_7 0x1b0b0
/* Test points */
MX6SX_PAD_NAND_DATA04__GPIO4_IO_8 0x1b0b0
MX6SX_PAD_QSPI1B_DATA1__GPIO4_IO_25 0x1b0b0
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1
MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO02__I2C2_SCL 0x4001b8b1
MX6SX_PAD_GPIO1_IO03__I2C2_SDA 0x4001b8b1
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX6SX_PAD_KEY_COL4__I2C3_SCL 0x4001b8b1
MX6SX_PAD_KEY_ROW4__I2C3_SDA 0x4001b8b1
>;
};
pinctrl_pcie: pciegrp {
fsl,pins = <
MX6SX_PAD_NAND_DATA05__GPIO4_IO_9 0xb0b0
MX6SX_PAD_NAND_DATA06__GPIO4_IO_10 0xb0b0
MX6SX_PAD_NAND_DATA07__GPIO4_IO_11 0xb0b0
>;
};
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO13__PWM4_OUT 0x110b0
>;
};
pinctrl_reg_wlan: reg-wlangrp {
fsl,pins = <
MX6SX_PAD_SD3_DATA4__GPIO7_IO_6 0x1b0b0
MX6SX_PAD_GPIO1_IO11__CCM_CLKO1 0x000b0
>;
};
pinctrl_sgtl5000: sgtl5000grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO12__CCM_CLKO2 0x000b0
MX6SX_PAD_ENET1_COL__GPIO2_IO_0 0x1b0b0
MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0x1b0b0
MX6SX_PAD_QSPI1A_SS0_B__GPIO4_IO_22 0xb0b0
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO04__UART1_DCE_TX 0x1b0b1
MX6SX_PAD_GPIO1_IO05__UART1_DCE_RX 0x1b0b1
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO06__UART2_DCE_TX 0x1b0b1
MX6SX_PAD_GPIO1_IO07__UART2_DCE_RX 0x1b0b1
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX6SX_PAD_QSPI1B_SS0_B__UART3_DCE_TX 0x1b0b1
MX6SX_PAD_QSPI1B_SCLK__UART3_DCE_RX 0x1b0b1
>;
};
pinctrl_uart5: uart5grp {
fsl,pins = <
MX6SX_PAD_KEY_COL3__UART5_DCE_TX 0x1b0b1
MX6SX_PAD_KEY_ROW3__UART5_DCE_RX 0x1b0b1
MX6SX_PAD_SD3_DATA6__UART3_DCE_RTS 0x1b0b1
MX6SX_PAD_SD3_DATA7__UART3_DCE_CTS 0x1b0b1
>;
};
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO08__USB_OTG1_OC 0x1b0b0
MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x170b1
>;
};
pinctrl_usbotg1_vbus: usbotg1-vbusgrp {
fsl,pins = <
MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x1b0b0
>;
};
pinctrl_usbotg2: usbotg2grp {
fsl,pins = <
MX6SX_PAD_QSPI1B_DATA2__GPIO4_IO_26 0xb0b0
>;
};
pinctrl_usdhc2: usdhc2grp {
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
MX6SX_PAD_KEY_COL2__GPIO2_IO_12 0x1b0b0
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x10071
MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x17071
MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x17071
MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x17071
MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x17071
MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x17071
>;
};
pinctrl_usdhc4_50mhz: usdhc4-50mhzgrp {
fsl,pins = <
MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x10071
MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x17071
MX6SX_PAD_SD4_RESET_B__USDHC4_RESET_B 0x17071
MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x17071
MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x17071
MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x17071
MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x17071
MX6SX_PAD_SD4_DATA4__USDHC4_DATA4 0x17071
MX6SX_PAD_SD4_DATA5__USDHC4_DATA5 0x17071
MX6SX_PAD_SD4_DATA6__USDHC4_DATA6 0x17071
MX6SX_PAD_SD4_DATA7__USDHC4_DATA7 0x17071
>;
};
pinctrl_usdhc4_100mhz: usdhc4-100mhzgrp {
fsl,pins = <
MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x100b9
MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x170b9
MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x170b9
MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x170b9
MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x170b9
MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x170b9
MX6SX_PAD_SD4_DATA4__USDHC4_DATA4 0x170b9
MX6SX_PAD_SD4_DATA5__USDHC4_DATA5 0x170b9
MX6SX_PAD_SD4_DATA6__USDHC4_DATA6 0x170b9
MX6SX_PAD_SD4_DATA7__USDHC4_DATA7 0x170b9
>;
};
pinctrl_usdhc4_200mhz: usdhc4-200mhzgrp {
fsl,pins = <
MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x100f9
MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x170f9
MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x170f9
MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x170f9
MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x170f9
MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x170f9
MX6SX_PAD_SD4_DATA4__USDHC4_DATA4 0x170f9
MX6SX_PAD_SD4_DATA5__USDHC4_DATA5 0x170f9
MX6SX_PAD_SD4_DATA6__USDHC4_DATA6 0x170f9
MX6SX_PAD_SD4_DATA7__USDHC4_DATA7 0x170f9
>;
};
};