// SPDX-License-Identifier: (GPL-2.0 OR MIT) /* * Device Tree file for SolidSense N8 Compact * * Copyright 2024 Josua Mayer */ /dts-v1/; #include #include "imx8mn.dtsi" / { compatible = "solidrun,solidsense-n8-compact", "fsl,imx8mn"; model = "SolidRun SolidSense N8 Compact"; /* LED labels based on enclosure, schematic names differ. */ leds { compatible = "gpio-leds"; pinctrl-0 = <&led_pins>; pinctrl-names = "default"; /* D20 */ led1 { default-state = "off"; gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; label = "led1"; }; /* D18 */ led2 { default-state = "off"; gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; label = "led2"; }; /* D19 */ led3 { default-state = "off"; gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>; label = "led3"; }; }; aliases { gpio5 = &expander; rtc0 = &rtc; rtc1 = &snvs_rtc; usb0 = &usbotg1; watchdog0 = &wdog1; watchdog1 = &rtc; }; chosen { stdout-path = &uart2; }; reg_modem_vbat: regulator-modem-vbat { compatible = "regulator-fixed"; regulator-name = "modem-vbat"; pinctrl-0 = <®ulator_modem_vbat_pins>; pinctrl-names = "default"; regulator-always-on; regulator-max-microvolt = <3800000>; regulator-min-microvolt = <3800000>; gpio = <&gpio3 25 GPIO_ACTIVE_HIGH>; enable-active-high; }; /* power to lte modems behind hub ports 2/3 */ reg_modem_vbus: regulator-modem-vbus { compatible = "regulator-fixed"; regulator-name = "modem-vbus"; pinctrl-0 = <®ulator_modem_vbus_pins>; pinctrl-names = "default"; regulator-always-on; regulator-max-microvolt = <5000000>; regulator-min-microvolt = <5000000>; gpio = <&gpio5 4 GPIO_ACTIVE_HIGH>; enable-active-high; }; /* power to usb hub, and type-a behind hub port 1 */ reg_usb1_vbus: regulator-usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; pinctrl-0 = <®ulator_usb1_vbus_pins>; pinctrl-names = "default"; regulator-max-microvolt = <5000000>; regulator-min-microvolt = <5000000>; gpio = <&gpio5 5 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_usdhc2_vmmc: regulator-usdhc2-vmmc { compatible = "regulator-fixed"; regulator-name = "usdhc2-vmmc"; off-on-delay-us = <250>; pinctrl-0 = <®ulator_usdhc2_vmmc_pins>; pinctrl-names = "default"; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <3300000>; vin-supply = <®_vdd_3v3>; gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_vdd_1v8: regulator-vdd-1v8 { compatible = "regulator-fixed"; regulator-name = "vdd-1v8"; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <1800000>; }; reg_vdd_3v3: regulator-vdd-3v3 { compatible = "regulator-fixed"; regulator-name = "vdd-3v3"; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <3300000>; }; rfkill { compatible = "rfkill-gpio"; /* rfkill-gpio inverts internally */ shutdown-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; label = "rfkill-wwan"; pinctrl-0 = <&modem_pins>; pinctrl-names = "default"; radio-type = "wwan"; }; usdhc1_pwrseq: usdhc1-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; }; memory@40000000 { reg = <0x0 0x40000000 0 0x80000000>; device_type = "memory"; }; }; &A53_0 { cpu-supply = <&buck2_reg>; }; &A53_1 { cpu-supply = <&buck2_reg>; }; &A53_2 { cpu-supply = <&buck2_reg>; }; &A53_3 { cpu-supply = <&buck2_reg>; }; &ddrc { operating-points-v2 = <&ddrc_opp_table>; ddrc_opp_table: opp-table { compatible = "operating-points-v2"; opp-266500000 { opp-hz = /bits/ 64 <266500000>; }; opp-600000000 { opp-hz = /bits/ 64 <600000000>; }; }; }; &ecspi2 { /* native chip-select causes reading 0xffffffff */ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; num-cs = <1>; pinctrl-0 = <&ecspi2_pins>; pinctrl-names = "default"; status = "okay"; can@0 { compatible = "microchip,mcp2518fd"; reg = <0>; interrupt-parent = <&gpio5>; interrupts = <1 IRQ_TYPE_EDGE_FALLING>; clocks = <&clk IMX8MN_CLK_CLKOUT1>; /* generate 8MHz clock from soc-internal 24mhz reference */ assigned-clock-parents = <&clk IMX8MN_CLK_24M>, <0>; assigned-clock-rates = <0>, <8000000>; assigned-clocks = <&clk IMX8MN_CLK_CLKOUT1_SEL>, <&clk IMX8MN_CLK_CLKOUT1_DIV>; pinctrl-0 = <&can_pins>; pinctrl-names = "default"; spi-max-frequency = <20000000>; }; }; &fec1 { phy-handle = <&phy4>; phy-mode = "rgmii-id"; pinctrl-0 = <&fec1_pins>; pinctrl-names = "default"; status = "okay"; mdio { #address-cells = <1>; #size-cells = <0>; /* * Depending on board revision two different phys are used: * - v1.1: atheros phy at address 4 * - v1.2+: analog devices phy at address 0 * Configure first version by default. * On v1.2 and later, U-Boot will enable the correct phy * based on runtime detection and patch dtb accordingly. */ /* ADIN1300 */ phy0: ethernet-phy@0 { reg = <0>; interrupt-parent = <&gpio1>; interrupts = <10 IRQ_TYPE_LEVEL_LOW>; reset-assert-us = <10>; reset-deassert-us = <5000>; reset-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>; adi,led-polarity = ; adi,link-st-polarity = ; status = "disabled"; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; active-low; color = ; default-state = "keep"; function = LED_FUNCTION_LAN; }; }; }; /* AR8035 */ phy4: ethernet-phy@4 { reg = <4>; reset-assert-us = <10000>; reset-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>; status = "okay"; }; }; }; &gpio5 { usb-hub-reset-hog { line-name = "usb-hub-reset"; gpios = <3 GPIO_ACTIVE_LOW>; gpio-hog; /* deasserted */ output-low; }; }; &i2c1 { pinctrl-0 = <&i2c1_pins>; pinctrl-names = "default"; status = "okay"; pmic@4b { compatible = "rohm,bd71847"; reg = <0x4b>; interrupt-parent = <&gpio1>; interrupts = <3 IRQ_TYPE_LEVEL_LOW>; clocks = <&osc_32k>; #clock-cells = <0>; clock-output-names = "clk-32k-out"; pinctrl-0 = <&pmic_pins>; pinctrl-names = "default"; rohm,reset-snvs-powered; regulators { BUCK1 { regulator-always-on; regulator-boot-on; regulator-max-microvolt = <1300000>; regulator-min-microvolt = <700000>; regulator-ramp-delay = <1250>; // supplies soc vdd, soc mipi vdd @ 0.9V regulator-name = "buck1"; rohm,dvs-run-voltage = <850000>; rohm,dvs-suspend-voltage = <750000>; }; buck2_reg: BUCK2 { regulator-name = "buck2"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <1300000>; regulator-min-microvolt = <700000>; regulator-ramp-delay = <1250>; rohm,dvs-idle-voltage = <900000>; rohm,dvs-run-voltage = <1000000>; rohm,dvs-suspend-voltage = <0>; }; BUCK3 { // BUCK5 in datasheet // output floating regulator-name = "buck3"; regulator-max-microvolt = <1350000>; regulator-min-microvolt = <700000>; }; BUCK4 { regulator-always-on; regulator-boot-on; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <3000000>; // BUCK6 in datasheet // supplies ldo3, ldo5, muxsw regulator-name = "buck4"; }; BUCK5 { regulator-always-on; regulator-boot-on; regulator-max-microvolt = <1995000>; regulator-min-microvolt = <1605000>; // BUCK7 in datasheet // supplies ldo4, ldo6, muxsw // enables dram vpp @ 2.5V regulator-name = "buck5"; }; BUCK6 { // BUCK8 in datasheet // supplies dram @ 1.2V regulator-name = "buck6"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <1400000>; regulator-min-microvolt = <800000>; }; LDO1 { // supplies soc snvs @ 1.8V regulator-name = "ldo1"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <1600000>; }; LDO2 { // supplies soc snvs @ 0.8V regulator-name = "ldo2"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <900000>; regulator-min-microvolt = <800000>; }; LDO3 { // supplies soc vdd @ 1.8V regulator-name = "ldo3"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <1800000>; }; LDO4 { // output floating regulator-name = "ldo4"; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <900000>; }; LDO5 { // output floating regulator-name = "ldo5"; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <800000>; }; LDO6 { // supplies soc vdd mipi @ 1.2V regulator-name = "ldo6"; regulator-always-on; regulator-boot-on; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <900000>; }; }; }; }; &i2c2 { /* * routed to various connectors: * - basler camera (CON2) * - touchscreen (J3) * - expansion connector (J14) */ pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins>; status = "okay"; }; &i2c3 { pinctrl-0 = <&i2c3_pins>; pinctrl-names = "default"; status = "okay"; expander: gpio@20 { compatible = "ti,tca6408"; reg = <0x20>; #interrupt-cells = <2>; interrupt-controller; interrupt-parent = <&gpio2>; interrupts = <11 IRQ_TYPE_EDGE_FALLING>; #gpio-cells = <2>; gpio-controller; gpio-line-names = "SYSGD", "PFO#", "CAPGD", "CAPFLT#", "CHGEN#", "BSTEN#", "", ""; pinctrl-0 = <&gpio_expander_pins>; pinctrl-names = "default"; reset-gpios = <&gpio3 16 GPIO_ACTIVE_LOW>; }; light-sensor@44 { compatible = "isil,isl29023"; reg = <0x44>; }; accelerometer@53 { compatible = "adi,adxl345"; reg = <0x53>; }; /* battery-charger@68 */ rtc: rtc@69 { compatible = "abracon,abx80x"; reg = <0x69>; interrupt-parent = <&gpio1>; interrupts = <1 IRQ_TYPE_EDGE_FALLING>; pinctrl-0 = <&rtc_pins>; pinctrl-names = "default"; abracon,tc-diode = "schottky"; abracon,tc-resistor = <3>; }; }; &i2c4 { /* routed to expansion connector (J14) */ pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins>; status = "okay"; }; &iomuxc { pinctrl-0 = <&tamper_pins>, <&usb_hub_pins>; pinctrl-names = "default"; can_pins: pinctrl-can-grp { fsl,pins = < MX8MN_IOMUXC_SAI3_TXD_GPIO5_IO1 0x140 >; }; ecspi2_pins: pinctrl-ecspi2-grp { fsl,pins = < MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x96 MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x1d6 MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x1d6 MX8MN_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x1d6 >; }; fec1_pins: pinctrl-fec1-grp { /* * Some pins are sampled at phy reset to apply configuration: * - AR803x PHY (revision 1.1) * - RXD[1:0]: phy address bits [1:0] * - RXD[3:2],RX_CTL: mac interface select bits 3,1,0 * - ADIN1300 PHY (revision 1.2 or later) * - RXD[3:0]: phy address bits [3:0] * - RX_CTL,RXC: mac interface select bits 1,0 * SoC enables pull-down at reset, PHYs have internal * pull-down, so pinmux may unset pull-enable. */ fsl,pins = < MX8MN_IOMUXC_ENET_MDC_ENET1_MDC 0x2 MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO 0x2 MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1e MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1e MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1e MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1e /* RD[3:0] sampled at phy reset for address bits [3:0] */ MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x90 MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x90 MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x90 MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x90 MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x10 MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x90 MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x90 MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x10 /* phy reset */ MX8MN_IOMUXC_SAI5_RXFS_GPIO3_IO19 0x0 /* phy interrupt */ MX8MN_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x140 >; }; gpio_expander_pins: pinctrl-gpio-expander-grp { fsl,pins = < MX8MN_IOMUXC_NAND_READY_B_GPIO3_IO16 0x140 MX8MN_IOMUXC_SD1_STROBE_GPIO2_IO11 0x140 >; }; i2c1_pins: pinctrl-i2c1-grp { fsl,pins = < MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c2 MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c2 >; }; i2c2_pins: pinctrl-i2c2-grp { fsl,pins = < MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c2 MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c2 >; }; i2c3_pins: pinctrl-i2c3-grp { fsl,pins = < MX8MN_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c2 MX8MN_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c2 >; }; i2c4_pins: pinctrl-i2c4-grp { fsl,pins = < MX8MN_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c2 MX8MN_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c2 >; }; ieee802151_radio_pins: pinctrl-ieee802151-radio-grp { fsl,pins = < /* RESETN */ MX8MN_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x0 /* VDD_EN */ MX8MN_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x0 /* SWDCLK */ MX8MN_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x0 /* SDIO */ MX8MN_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x0 >; }; led_pins: pinctrl-led-grp { fsl,pins = < MX8MN_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x100 MX8MN_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x100 MX8MN_IOMUXC_GPIO1_IO13_GPIO1_IO13 0x100 >; }; modem_pins: pinctrl-modem-grp { fsl,pins = < /* RESET_N: modem-internal pull-down */ MX8MN_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x0 /* PWRKEY: pull-down ensures always-on */ MX8MN_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x100 >; }; pmic_pins: pinctrl-pmic-grp { fsl,pins = < MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x140 >; }; regulator_modem_vbat_pins: pinctrl-regulator-modem-vbat-grp { fsl,pins = < MX8MN_IOMUXC_SAI5_MCLK_GPIO3_IO25 0x0 >; }; regulator_modem_vbus_pins: pinctrl-regulator-modem-vbus-grp { fsl,pins = < MX8MN_IOMUXC_SPDIF_RX_GPIO5_IO4 0x0 >; }; regulator_usb1_vbus_pins: pinctrl-regulator-usb1-vbus-grp { fsl,pins = < MX8MN_IOMUXC_SPDIF_EXT_CLK_GPIO5_IO5 0x0 >; }; regulator_usdhc2_vmmc_pins: pinctrl-regulator-usdhc2-vmmc-grp { fsl,pins = < MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x0 >; }; rtc_pins: pinctrl-rtc-grp { fsl,pins = < MX8MN_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x140 MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x100 >; }; tamper_pins: pinctrl-tamper-grp { /* * Routed to physical tamper input (J12), * accelerometer and light-sensor interrupts. */ fsl,pins = < MX8MN_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x140 >; }; uart1_pins: pinctrl-uart1-grp { fsl,pins = < MX8MN_IOMUXC_UART1_RXD_UART1_DCE_RX 0x140 MX8MN_IOMUXC_UART1_TXD_UART1_DCE_TX 0x140 MX8MN_IOMUXC_UART3_RXD_UART1_DCE_CTS_B 0x140 MX8MN_IOMUXC_UART3_TXD_UART1_DCE_RTS_B 0x140 /* BT_REG_ON */ MX8MN_IOMUXC_SD1_DATA4_GPIO2_IO6 0x0 /* BT_WAKE_DEV */ MX8MN_IOMUXC_SD1_DATA5_GPIO2_IO7 0x0 /* BT_WAKE_HOST */ MX8MN_IOMUXC_SD1_DATA6_GPIO2_IO8 0x100 >; }; uart2_pins: pinctrl-uart2-grp { fsl,pins = < MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140 MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140 >; }; uart3_pins: pinctrl-uart3-grp { fsl,pins = < MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DTE_RX 0x140 MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DTE_TX 0x140 MX8MN_IOMUXC_ECSPI1_MISO_UART3_DTE_RTS_B 0x140 MX8MN_IOMUXC_ECSPI1_SS0_UART3_DTE_CTS_B 0x140 >; }; uart4_pins: pinctrl-uart4-grp { fsl,pins = < MX8MN_IOMUXC_UART4_RXD_UART4_DCE_RX 0x140 MX8MN_IOMUXC_UART4_TXD_UART4_DCE_TX 0x140 >; }; usb_hub_pins: pinctrl-usb-hub-grp { fsl,pins = < MX8MN_IOMUXC_SPDIF_TX_GPIO5_IO3 0x0 >; }; usdhc1_pins: pinctrl-usdhc1-grp { fsl,pins = < MX8MN_IOMUXC_SD1_CLK_USDHC1_CLK 0x190 MX8MN_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d0 MX8MN_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d0 MX8MN_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d0 MX8MN_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d0 MX8MN_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d0 /* wifi refclk */ MX8MN_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K 0x0 /* WL_WAKE_HOST */ MX8MN_IOMUXC_SD1_DATA7_GPIO2_IO9 0x100 /* WL_REG_ON */ MX8MN_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x0 >; }; usdhc2_100mhz_pins: pinctrl-usdhc2-100mhz-grp { fsl,pins = < MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x194 MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4 MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4 MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4 MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4 MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4 MX8MN_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x0 /* usdhc2 signalling voltage pmic control */ MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x140 >; }; usdhc2_200mhz_pins: pinctrl-usdhc2-100mhz-grp { fsl,pins = < MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x196 MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6 MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6 MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6 MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6 MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6 MX8MN_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x0 /* usdhc2 signalling voltage pmic control */ MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x140 >; }; usdhc2_pins: pinctrl-usdhc2-grp { fsl,pins = < MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x190 MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0 MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0 MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0 MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0 MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0 MX8MN_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x0 /* usdhc2 signalling voltage pmic control */ MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x140 >; }; usdhc3_pins: pinctrl-usdhc3-grp { fsl,pins = < MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x190 MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0 MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0 MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0 MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0 MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0 MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d0 MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d0 MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d0 MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d0 MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x190 >; }; wdog1_pins: pinctrl-wdog1-grp { fsl,pins = < MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x140 >; }; }; /* Bluetooth */ &uart1 { assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>; /* select 80MHz parent clock to support maximum baudrate 4Mbps */ assigned-clocks = <&clk IMX8MN_CLK_UART1>; pinctrl-0 = <&uart1_pins>; pinctrl-names = "default"; uart-has-rtscts; status = "okay"; bluetooth { compatible = "brcm,bcm4330-bt"; device-wakeup-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; host-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; max-speed = <3000000>; shutdown-gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>; }; }; /* console */ &uart2 { pinctrl-0 = <&uart2_pins>; pinctrl-names = "default"; status = "okay"; }; /* RS485 */ &uart3 { pinctrl-0 = <&uart3_pins>; pinctrl-names = "default"; uart-has-rtscts; fsl,dte-mode; linux,rs485-enabled-at-boot-time; status = "okay"; }; /* 802.15.1 radio */ &uart4 { pinctrl-0 = <&uart4_pins &ieee802151_radio_pins>; pinctrl-names = "default"; status = "okay"; }; &usbotg1 { disable-over-current; dr_mode = "host"; vbus-supply = <®_usb1_vbus>; status = "okay"; }; /* WiFi */ &usdhc1 { bus-width = <4>; mmc-pwrseq = <&usdhc1_pwrseq>; pinctrl-0 = <&usdhc1_pins>; pinctrl-names = "default"; vmmc-supply = <®_vdd_3v3>; vqmmc-supply = <®_vdd_1v8>; status = "okay"; }; /* microSD */ &usdhc2 { broken-cd; bus-width = <4>; pinctrl-0 = <&usdhc2_pins>; pinctrl-1 = <&usdhc2_100mhz_pins>; pinctrl-2 = <&usdhc2_200mhz_pins>; pinctrl-names = "default", "state_100mhz", "state_200mhz"; vmmc-supply = <®_usdhc2_vmmc>; status = "okay"; }; /* eMMC */ &usdhc3 { bus-width = <8>; non-removable; pinctrl-0 = <&usdhc3_pins>; vmmc-supply = <®_vdd_3v3>; vqmmc-supply = <®_vdd_1v8>; /* * Use lowest drive strength for all high-speed modes to minimise * electro-magnetic emissions. * In this particular design HS-400 still works okay, no extra * pinctrl for 100mhz and 200mhz are required. */ pinctrl-names = "default"; status = "okay"; }; &wdog1 { pinctrl-0 = <&wdog1_pins>; pinctrl-names = "default"; status = "okay"; };