linux/arch/arm64/boot/dts/freescale/imx8mm-iot-gateway.dts

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
//
// Copyright 2020 CompuLab

#include "imx8mm-ucm-som.dtsi"
#include <dt-bindings/phy/phy-imx8-pcie.h>
/ {
	model = "CompuLab i.MX8MM IoT Gateway";
	compatible = "compulab,imx8mm-iot-gateway", "compulab,imx8mm-ucm-som", "fsl,imx8mm";

	regulator-usbhub-ena {
		compatible = "regulator-fixed";
		regulator-name = "usbhub_ena";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-usbhub-rst {
		compatible = "regulator-fixed";
		regulator-name = "usbhub_rst";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 24 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-uart1-mode {
		compatible = "regulator-fixed";
		regulator-name = "uart1_mode";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-uart1-duplex {
		compatible = "regulator-fixed";
		regulator-name = "uart1_duplex";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-uart1-shdn {
		compatible = "regulator-fixed";
		regulator-name = "uart1_shdn";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio5 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-uart1-trmen {
		compatible = "regulator-fixed";
		regulator-name = "uart1_trmen";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio4 25 GPIO_ACTIVE_LOW>;
		regulator-always-on;
	};

	regulator-usdhc2-v {
		compatible = "regulator-fixed";
		regulator-name = "usdhc2_v";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-mpcie2-rst {
		compatible = "regulator-fixed";
		regulator-name = "mpcie2_rst";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	regulator-mpcie2lora-dis {
		compatible = "regulator-fixed";
		regulator-name = "mpcie2lora_dis";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 21 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	pcie0_refclk: clock-pcie0-refclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <100000000>;
	};
};

&i2c1 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	eeprom@54 {
		compatible = "atmel,24c08";
		reg = <0x54>;
		pagesize = <16>;
	};
};

&ecspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&pcie_phy {
	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
	fsl,tx-deemph-gen1 = <0x2d>;
	fsl,tx-deemph-gen2 = <0xf>;
	fsl,clkreq-unsupported;
	clocks = <&pcie0_refclk>;
	clock-names = "ref";
	status = "okay";
};

&pcie0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pcie0>;
	reset-gpio = <&gpio3 20 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&usbotg1 {
	dr_mode = "host";
	status = "okay";
};

&usbotg2 {
	#address-cells = <1>;
	#size-cells = <0>;
	dr_mode = "host";
	usb-role-switch;
	status = "okay";

	usbhub@1 {
		compatible = "usb424,9514";
		reg = <1>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_usb9514>;
		#address-cells = <1>;
		#size-cells = <0>;

		ethernet: ethernet@1 {
			compatible = "usb424,ec00";
			reg = <1>;
		};
	};
};

&usdhc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc2>;
	bus-width = <4>;
	mmc-ddr-1_8v;
	non-removable;
	status = "okay";
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>;

	pinctrl_hog: hoggrp {
		fsl,pins = <
			/* mPCIe2 */
			MX8MM_IOMUXC_SAI5_RXD0_GPIO3_IO21		0x140
			MX8MM_IOMUXC_SAI5_RXD1_GPIO3_IO22		0x140
		>;
	};

	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK		0x82
			MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI		0x82
			MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO		0x82
		>;
	};

	pinctrl_ecspi1_cs: ecspi1csgrp {
		fsl,pins = <
			MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x40000
		>;
	};

	pinctrl_pcie0: pcie0grp {
		fsl,pins = <
			MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20		0x140
		>;
	};

	pinctrl_usb9514: usb9514grp {
		fsl,pins = <
			MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28		0x140 /* USB_PS_EN */
			MX8MM_IOMUXC_SAI5_RXD3_GPIO3_IO24		0x140 /* HUB_RSTn */
		>;
	};
};