// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
 * Copyright (c) 2022-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, D-82229 Seefeld, Germany.
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/net/ti-dp83867.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/pwm/pwm.h>
#include "k3-serdes.h"

#include "k3-am642-tqma64xxl.dtsi"

/ {
	compatible = "tq,am642-tqma6442l-mbax4xxl", "tq,am642-tqma6442l",
		     "ti,am642";
	model = "TQ-Systems TQMa64xxL SoM on MBax4xxL carrier board";
	chassis-type = "embedded";

	aliases {
		ethernet0 = &cpsw_port1;
		i2c1 = &mcu_i2c0;
		mmc1 = &sdhci1;
		serial0 = &mcu_uart0;
		serial1 = &mcu_uart1;
		serial2 = &main_uart0;
		serial3 = &main_uart1;
		serial4 = &main_uart2;
		serial5 = &main_uart4;
		serial6 = &main_uart5;
		serial7 = &main_uart3;
		spi1 = &main_spi0;
		spi2 = &mcu_spi0;
	};

	chosen {
		stdout-path = &main_uart0;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&mcu_gpio_keys_pins>;

		user-button {
			label = "USER_BUTTON";
			linux,code = <BTN_0>;
			gpios = <&mcu_gpio0 5 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&mcu_gpio_leds_pins>;

		led-0 {
			gpios = <&mcu_gpio0 8 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_INDICATOR;
		};
		led-1 {
			gpios = <&mcu_gpio0 9 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_YELLOW>;
			function = LED_FUNCTION_INDICATOR;
		};
	};

	fan0: pwm-fan {
		compatible = "pwm-fan";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm_fan_pins>;
		fan-supply = <&reg_pwm_fan>;
		#cooling-cells = <2>;
		/* typical 25 kHz -> 40.000 nsec */
		pwms = <&epwm5 0 40000 PWM_POLARITY_INVERTED>;
		cooling-levels = <0 32 64 128 196 240>;
		pulses-per-revolution = <2>;
		interrupt-parent = <&main_gpio1>;
		interrupts = <49 IRQ_TYPE_EDGE_FALLING>;
		status = "disabled";
	};

	wifi_pwrseq: pwrseq-wifi {
		compatible = "mmc-pwrseq-simple";
		pinctrl-names = "default";
		pinctrl-0 = <&main_mmc1_wifi_pwrseq_pins>;
		reset-gpios = <&main_gpio0 23 GPIO_ACTIVE_LOW>;
	};

	reg_pwm_fan: regulator-pwm-fan {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm_fan_reg_pins>;
		regulator-name = "FAN_PWR";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		gpio = <&main_gpio1 48 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_sd: regulator-sd {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&main_mmc1_reg_pins>;
		regulator-name = "V_3V3_SD";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&main_gpio1 43 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
};

&cpsw3g {
	pinctrl-names = "default";
	pinctrl-0 = <&cpsw_pins>;
};

&cpsw_port1 {
	phy-mode = "rgmii-rxid";
	phy-handle = <&cpsw3g_phy0>;
};

&cpsw_port2 {
	status = "disabled";
};

&cpsw3g_mdio {
	pinctrl-names = "default";
	pinctrl-0 = <&cpsw_mdio_pins>;
	status = "okay";

	cpsw3g_phy0: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0>;
		reset-gpios = <&main_gpio0 44 GPIO_ACTIVE_LOW>;
		reset-assert-us = <1000>;
		reset-deassert-us = <1000>;
		ti,rx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
		ti,tx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
	};
};

&epwm5 {
	pinctrl-names = "default";
	pinctrl-0 = <&epwm5_pins>;
	status = "okay";
};

&main_gpio0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_gpio0_digital_pins>,
		    <&main_gpio0_hog_pins>;
	gpio-line-names =
		"", "", "", "", /* 0-3 */
		"", "", "", "", /* 4-7 */
		"", "", "", "", /* 8-11 */
		"", "", "", "", /* 12-15 */
		"", "", "", "", /* 16-19 */
		"", "", "", "", /* 20-23 */
		"", "", "EN_DIG_OUT_1", "STATUS_OUT_1", /* 24-27 */
		"EN_DIG_OUT_2", "STATUS_OUT_2", "EN_SIG_OUT_3", "", /* 28-31 */
		"", "", "STATUS_OUT_3", "EN_DIG_OUT_4", /* 32-35 */
		"", "", "STATUS_OUT_4", "DIG_IN_1", /* 36-39 */
		"DIG_IN_2", "DIG_IN_3", "DIG_IN_4"; /* 40- */
};

&main_gpio1 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_gpio1_hog_pins>,
		    <&main_gpio1_pru_pins>;
	gpio-line-names =
		"", "", "", "", /* 0-3 */
		"", "", "", "", /* 4-7 */
		"", "", "", "", /* 8-11 */
		"", "", "", "", /* 12-15 */
		"", "", "", "", /* 16-19 */
		"", "", "", "", /* 20-23 */
		"", "", "", "", /* 24-27 */
		"", "", "", "", /* 28-31 */
		"", "", "", "", /* 32-35 */
		"", "", "", "", /* 36-39 */
		"", "", "", "", /* 40-43 */
		"", "", "", "", /* 44-47 */
		"", "", "", "", /* 48-51 */
		"", "", "", "ADC_SYNC", /* 52-55 */
		"", "", "ADC_RST#", "ADC_DATA_RDY", /* 56-59 */
		"", "", "", "", /* 60-63 */
		"", "", "", "ADC_INT#", /* 64-67 */
		"BG95_PWRKEY", "BG95_RESET"; /* 68- */

	line50-hog {
		/* See also usb0 */
		gpio-hog;
		gpios = <50 0>;
		line-name = "USB0_VBUS_OC#";
		input;
	};

	line54-hog {
		gpio-hog;
		gpios = <54 0>;
		line-name = "PRG0_MDIO_SWITCH";
		output-low;
	};

	line70-hog {
		gpio-hog;
		gpios = <70 0>;
		line-name = "PHY_INT#";
		input;
	};
};

&main_mcan0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan0_pins>;
	status = "okay";
};

&main_mcan1 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_mcan1_pins>;
	status = "okay";
};

&main_spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_spi0_pins>;
	ti,pindir-d0-out-d1-in;
	status = "okay";

	/* adc@0: NXP NAFE13388 */
};

/* UART/USB adapter port 1 */
&main_uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart0_pins>;
	status = "okay";
};

/*
 * IOT Module - GNSS UART
 *
 * Note: We expect usage of a SYSFW that does not reserve UART1 for debug traces
 */
&main_uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart1_pins>;
	status = "okay";
};

/* RS485 port */
&main_uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart2_pins>;
	linux,rs485-enabled-at-boot-time;
	rs485-rts-active-low;
	status = "okay";
};

/* Bluetooth module */
&main_uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart3_pins>;
	/*
	 * Left disabled for now, until a way to deal with drivers and firmware
	 * for the combined WLAN/BT module has been figured out
	 */
};

/* IOT module - Main UART */
&main_uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart4_pins>;
	status = "okay";
};

/* IOT module - DBG UART */
&main_uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart5_pins>;
	status = "okay";
};

&main0_thermal {
	trips {
		main0_active0: trip-active0 {
			temperature = <40000>;
			hysteresis = <5000>;
			type = "active";
		};

		main0_active1: trip-active1 {
			temperature = <48000>;
			hysteresis = <3000>;
			type = "active";
		};

		main0_active2: trip-active2 {
			temperature = <60000>;
			hysteresis = <10000>;
			type = "active";
		};
	};

	cooling-maps {
		map1 {
			trip = <&main0_active0>;
			cooling-device = <&fan0 1 1>;
		};

		map2 {
			trip = <&main0_active1>;
			cooling-device = <&fan0 2 2>;
		};

		map3 {
			trip = <&main0_active2>;
			cooling-device = <&fan0 3 3>;
		};
	};
};

&main1_thermal {
	trips {
		main1_active0: trip-active0 {
			temperature = <40000>;
			hysteresis = <5000>;
			type = "active";
		};

		main1_active1: trip-active1 {
			temperature = <48000>;
			hysteresis = <3000>;
			type = "active";
		};

		main1_active2: trip-active2 {
			temperature = <60000>;
			hysteresis = <10000>;
			type = "active";
		};
	};

	cooling-maps {
		map1 {
			trip = <&main1_active0>;
			cooling-device = <&fan0 1 1>;
		};

		map2 {
			trip = <&main1_active1>;
			cooling-device = <&fan0 2 2>;
		};

		map3 {
			trip = <&main1_active2>;
			cooling-device = <&fan0 3 3>;
		};
	};
};

&mcu_gpio0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_gpio0_pins>;
};

&mcu_i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_i2c0_pins>;
	/* Left disabled: not functional without external pullup */
};

&mcu_spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_spi0_pins>;
	ti,pindir-d0-out-d1-in;
	status = "okay";
};

/* UART/USB adapter port 2 */
&mcu_uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_uart0_pins>;
	status = "okay";
};

/* Pin header */
&mcu_uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_uart1_pins>;
	status = "okay";
};

&serdes_ln_ctrl {
	idle-states = <AM64_SERDES0_LANE0_USB>;
};

&serdes0 {
	serdes0_usb_link: phy@0 {
		reg = <0>;
		#phy-cells = <0>;
		resets = <&serdes_wiz0 1>;
		cdns,num-lanes = <1>;
		cdns,phy-type = <PHY_TYPE_USB3>;
	};
};

&sdhci1 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_mmc1_pins>;
	bus-width = <4>;
	cd-gpios = <&main_gpio1 77 GPIO_ACTIVE_LOW>;
	disable-wp;
	no-mmc;
	ti,driver-strength-ohm = <50>;
	ti,fails-without-test-cd;
	/* Enabled by overlay */
};

&tscadc0 {
	status = "okay";
	adc {
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
	};
};

&usb0 {
	/*
	 * The CDNS USB driver currently doesn't support overcurrent GPIOs,
	 * so there is no overcurrent detection. The OC pin is configured
	 * as a GPIO hog instead.
	 */
	pinctrl-names = "default";
	pinctrl-0 = <&main_usb0_pins>;
	dr_mode = "otg";
	maximum-speed = "super-speed";
	phys = <&serdes0_usb_link>;
	phy-names = "cdns3,usb3-phy";
};

&usbss0 {
	ti,vbus-divider;
};

&main_pmx0 {
	cpsw_pins: cpsw-pins {
		pinctrl-single,pins = <
			/* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */
			AM64X_IOPAD(0x01cc, PIN_INPUT, 4)
			/* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */
			AM64X_IOPAD(0x01d4, PIN_INPUT, 4)
			/* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */
			AM64X_IOPAD(0x01d8, PIN_INPUT, 4)
			/* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */
			AM64X_IOPAD(0x01f4, PIN_INPUT, 4)
			/* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */
			AM64X_IOPAD(0x0188, PIN_INPUT, 4)
			/* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */
			AM64X_IOPAD(0x0184, PIN_INPUT, 4)
			/* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4)
			/* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4)
			/* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4)
			/* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4)
			/* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4)
			/* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4)
		>;
	};

	cpsw_mdio_pins: cpsw-mdio-pins {
		pinctrl-single,pins = <
			/* (R21) GPMC0_CSn3.GPIO0_44 - RESET_RGMII1# */
			AM64X_IOPAD(0x00b4, PIN_OUTPUT, 7)

			/* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4)
			/* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
			AM64X_IOPAD(0x01f8, PIN_INPUT, 4)
		>;
	};

	epwm5_pins: epwm5-pins {
		pinctrl-single,pins = <
			/* (W19) GPMC0_WAIT0.EHRPWM5_B */
			AM64X_IOPAD(0x0098, PIN_OUTPUT, 3)
		>;
	};

	/* Digital IOs */
	main_gpio0_digital_pins: main-gpio0-digital-pins {
		pinctrl-single,pins = <
			/* (W20) GPMC0_AD11.GPIO0_26 - EN_DIG_OUT_1 */
			AM64X_IOPAD(0x0068, PIN_OUTPUT, 7)
			/* (W21) GPMC0_AD12.GPIO0_27 - STATUS_OUT_1 */
			AM64X_IOPAD(0x006c, PIN_INPUT, 7)
			/* (V18) GPMC0_AD13.GPIO0_28 - EN_DIG_OUT_2 */
			AM64X_IOPAD(0x0070, PIN_OUTPUT, 7)
			/* (Y21) GPMC0_AD14.GPIO0_29 - STATUS_OUT_2 */
			AM64X_IOPAD(0x0074, PIN_INPUT, 7)
			/* (Y20) GPMC0_AD15.GPIO0_30 - EN_DIG_OUT_3 */
			AM64X_IOPAD(0x0078, PIN_OUTPUT, 7)
			/* (T21) GPMC0_WEn.GPIO0_34 - STATUS_OUT_3 */
			AM64X_IOPAD(0x008c, PIN_INPUT, 7)
			/* (P17) GPMC0_BE0n_CLE.GPIO0_35 - EN_DIG_OUT_4 */
			AM64X_IOPAD(0x0090, PIN_OUTPUT, 7)
			/* (Y18) GPMC0_WAIT1.GPIO0_38 - STATUS_OUT_4 */
			AM64X_IOPAD(0x009c, PIN_INPUT, 7)
			/* (N16) GPMC0_WPn.GPIO0_39 - DIG_IN_1 */
			AM64X_IOPAD(0x00a0, PIN_INPUT, 7)
			/* (N17) GPMC0_DIR.GPIO0_40 - DIG_IN_2 */
			AM64X_IOPAD(0x00a4, PIN_INPUT, 7)
			/* (R19) GPMC0_CSn0.GPIO0_41 - DIG_IN_3 */
			AM64X_IOPAD(0x00a8, PIN_INPUT, 7)
			/* (R20) GPMC0_CSn1.GPIO0_42 - DIG_IN_4 */
			AM64X_IOPAD(0x00ac, PIN_INPUT, 7)
		>;
	};

	main_gpio0_hog_pins: main-gpio0-hog-pins {
		pinctrl-single,pins = <
			/* (P19) GPMC0_CSn2.GPIO0_43 - MMC1_CTRL */
			AM64X_IOPAD(0x00b0, PIN_OUTPUT, 7)
		>;
	};

	main_gpio1_hog_pins: main-gpio1-hog-pins {
		pinctrl-single,pins = <
			/* (B15) SPI1_D0.GPIO1_50 - USB0_VBUS_OC# */
			AM64X_IOPAD(0x0228, PIN_INPUT, 7)
			/* (B16) UART0_CTSn.GPIO1_54 - PRG0_MDIO_SWITCH */
			AM64X_IOPAD(0x0238, PIN_OUTPUT, 7)
			/* (C19) EXTINTn.GPIO1_70 - PHY_INT# */
			AM64X_IOPAD(0x0278, PIN_INPUT, 7)
		>;
	};

	main_gpio1_pru_pins: main-gpio1-pru-pins {
		pinctrl-single,pins = <
			/* (Y1) PRG0_PRU0_GPO0.GPIO1_0 */
			AM64X_IOPAD(0x0160, PIN_INPUT, 7)
			/* (R4) PRG0_PRU0_GPO1.GPIO1_1 */
			AM64X_IOPAD(0x0164, PIN_INPUT, 7)
			/* (U2) PRG0_PRU0_GPO2.GPIO1_2 */
			AM64X_IOPAD(0x0168, PIN_INPUT, 7)
			/* (V2) PRG0_PRU0_GPO3.GPIO1_3 */
			AM64X_IOPAD(0x016c, PIN_INPUT, 7)
			/* (AA2) PRG0_PRU0_GPO4.GPIO1_4 */
			AM64X_IOPAD(0x0170, PIN_INPUT, 7)
			/* (R3) PRG0_PRU0_GPO5.GPIO1_5 */
			AM64X_IOPAD(0x0174, PIN_INPUT, 7)
			/* (T3) PRG0_PRU0_GPO6.GPIO1_6 */
			AM64X_IOPAD(0x0178, PIN_INPUT, 7)
			/* (T1) PRG0_PRU0_GPO7.GPIO1_7 */
			AM64X_IOPAD(0x017c, PIN_INPUT, 7)
			/* (T2) PRG0_PRU0_GPO8.GPIO1_8 */
			AM64X_IOPAD(0x0180, PIN_INPUT, 7)
			/* (Y3) PRG0_PRU0_GPO11.GPIO1_11 */
			AM64X_IOPAD(0x018c, PIN_INPUT, 7)
			/* (AA3) PRG0_PRU0_GPO12.GPIO1_12 */
			AM64X_IOPAD(0x0190, PIN_INPUT, 7)
			/* (R6) PRG0_PRU0_GPO13.GPIO1_13 */
			AM64X_IOPAD(0x0194, PIN_INPUT, 7)
			/* (V4) PRG0_PRU0_GPO14.GPIO1_14 */
			AM64X_IOPAD(0x0198, PIN_INPUT, 7)
			/* (T5) PRG0_PRU0_GPO15.GPIO1_15 */
			AM64X_IOPAD(0x019c, PIN_INPUT, 7)
			/* (U4) PRG0_PRU0_GPO16.GPIO1_16 */
			AM64X_IOPAD(0x01a0, PIN_INPUT, 7)
			/* (U1) PRG0_PRU0_GPO17.GPIO1_17 */
			AM64X_IOPAD(0x01a4, PIN_INPUT, 7)
			/* (V1) PRG0_PRU0_GPO18.GPIO1_18 */
			AM64X_IOPAD(0x01a8, PIN_INPUT, 7)
			/* (W1) PRG0_PRU0_GPO19.GPIO1_19 */
			AM64X_IOPAD(0x01ac, PIN_INPUT, 7)
			/* (Y2) PRG0_PRU1_GPO0.GPIO1_20 */
			AM64X_IOPAD(0x01b0, PIN_INPUT, 7)
			/* (W2) PRG0_PRU1_GPO1.GPIO1_21 */
			AM64X_IOPAD(0x01b4, PIN_INPUT, 7)
			/* (V3) PRG0_PRU1_GPO2.GPIO1_22 */
			AM64X_IOPAD(0x01b8, PIN_INPUT, 7)
			/* (T4) PRG0_PRU1_GPO3.GPIO1_23 */
			AM64X_IOPAD(0x01bc, PIN_INPUT, 7)
			/* (W3) PRG0_PRU1_GPO4.GPIO1_24 */
			AM64X_IOPAD(0x01c0, PIN_INPUT, 7)
			/* (P4) PRG0_PRU1_GPO5.GPIO1_25 */
			AM64X_IOPAD(0x01c4, PIN_INPUT, 7)
			/* (R5) PRG0_PRU1_GPO6.GPIO1_26 */
			AM64X_IOPAD(0x01c8, PIN_INPUT, 7)
			/* (R1) PRG0_PRU1_GPO8.GPIO1_28 */
			AM64X_IOPAD(0x01d0, PIN_INPUT, 7)
			/* (W4) PRG0_PRU1_GPO11.GPIO1_31 */
			AM64X_IOPAD(0x01dc, PIN_INPUT, 7)
			/* (Y4) PRG0_PRU1_GPO12.GPIO1_32 */
			AM64X_IOPAD(0x01e0, PIN_INPUT, 7)
			/* (T6) PRG0_PRU1_GPO13.GPIO1_33 */
			AM64X_IOPAD(0x01e4, PIN_INPUT, 7)
			/* (U6) PRG0_PRU1_GPO14.GPIO1_34 */
			AM64X_IOPAD(0x01e8, PIN_INPUT, 7)
			/* (U5) PRG0_PRU1_GPO15.GPIO1_35 */
			AM64X_IOPAD(0x01ec, PIN_INPUT, 7)
			/* (AA4) PRG0_PRU1_GPO16.GPIO1_36 */
			AM64X_IOPAD(0x01f0, PIN_INPUT, 7)
			/* (P2) PRG0_MDIO0_MDIO.GPIO1_40 */
			AM64X_IOPAD(0x0200, PIN_INPUT, 7)
			/* (P3) PRG0_MDIO0_MDC.GPIO1_41 */
			AM64X_IOPAD(0x0204, PIN_INPUT, 7)
		>;
	};

	main_mcan0_pins: main-mcan0-pins {
		pinctrl-single,pins = <
			/* (B17) MCAN0_RX */
			AM64X_IOPAD(0x0254, PIN_INPUT, 0)
			/* (A17) MCAN0_TX */
			AM64X_IOPAD(0x0250, PIN_OUTPUT, 0)
		>;
	};

	main_mcan1_pins: main-mcan1-pins {
		pinctrl-single,pins = <
			/* (D17) MCAN1_RX */
			AM64X_IOPAD(0x025c, PIN_INPUT, 0)
			/* (C17) MCAN1_TX */
			AM64X_IOPAD(0x0258, PIN_OUTPUT, 0)
		>;
	};

	main_mmc1_pins: main-mmc1-pins {
		pinctrl-single,pins = <
			/* (J19) MMC1_CMD */
			AM64X_IOPAD(0x0294, PIN_INPUT, 0)
			/* (L20) MMC1_CLK */
			AM64X_IOPAD(0x028c, PIN_INPUT, 0)
			/* (K21) MMC1_DAT0 */
			AM64X_IOPAD(0x0288, PIN_INPUT, 0)
			/* (L21) MMC1_DAT1 */
			AM64X_IOPAD(0x0284, PIN_INPUT, 0)
			/* (K19) MMC1_DAT2 */
			AM64X_IOPAD(0x0280, PIN_INPUT, 0)
			/* (K18) MMC1_DAT3 */
			AM64X_IOPAD(0x027c, PIN_INPUT, 0)
			/* (D19) MMC1_SDCD.GPIO1_77 */
			AM64X_IOPAD(0x0298, PIN_INPUT, 7)
			/* (#N/A) MMC1_CLKLB */
			AM64X_IOPAD(0x0290, PIN_INPUT, 0)
		>;
	};

	main_mmc1_reg_pins: main-mmc1-reg-pins {
		pinctrl-single,pins = <
			/* (C13) SPI0_CS1.GPIO1_43 - MMC1_SD_EN */
			AM64X_IOPAD(0x020c, PIN_OUTPUT, 7)
		>;
	};

	main_mmc1_wifi_pwrseq_pins: main-mmc1-wifi-pwrseq-pins {
		pinctrl-single,pins = <
			/* (V19) GPMC0_AD8.GPIO0_23 - WIFI-BT_EN */
			AM64X_IOPAD(0x005c, PIN_OUTPUT, 7)
		>;
	};

	main_spi0_pins: main-spi0-pins {
		pinctrl-single,pins = <
			/* (D13) SPI0_CLK */
			AM64X_IOPAD(0x0210, PIN_OUTPUT, 0)
			/* (D12) SPI0_CS0 */
			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0)
			/* (A13) SPI0_D0 */
			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0)
			/* (A14) SPI0_D1 */
			AM64X_IOPAD(0x0218, PIN_INPUT, 0)
		>;
	};

	main_spi0_adc_pins: main-spi0-adc-pins {
		pinctrl-single,pins = <
			/* (A16) UART0_RTSn.GPIO1_55 - ADC_SYNC */
			AM64X_IOPAD(0x023c, PIN_INPUT, 7)
			/* (D16) UART1_CTSn.GPIO1_58 - ADC_RST# */
			AM64X_IOPAD(0x0248, PIN_OUTPUT, 7)
			/* (E16) UART1_RTSn.GPIO1_59 - ADC_DATA_RDY */
			AM64X_IOPAD(0x024c, PIN_INPUT, 7)
			/* (B19) I2C1_SDA.GPIO1_67 - ADC_INT# */
			AM64X_IOPAD(0x026c, PIN_INPUT, 7)
		>;
	};

	main_uart0_pins: main-uart0-pins {
		pinctrl-single,pins = <
			/* (D15) UART0_RXD */
			AM64X_IOPAD(0x0230, PIN_INPUT, 0)
			/* (C16) UART0_TXD */
			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0)
		>;
	};

	main_uart1_pins: main-uart1-pins {
		pinctrl-single,pins = <
			/* (E15) UART1_RXD */
			AM64X_IOPAD(0x0240, PIN_INPUT, 0)
			/* (E14) UART1_TXD */
			AM64X_IOPAD(0x0244, PIN_OUTPUT, 0)
		>;
	};

	main_uart2_pins: main-uart2-pins {
		pinctrl-single,pins = <
			/* (T18) GPMC0_AD2.UART2_RTSn */
			AM64X_IOPAD(0x0044, PIN_OUTPUT, 2)
			/* (T20) GPMC0_AD0.UART2_RXD */
			AM64X_IOPAD(0x003c, PIN_INPUT, 2)
			/* (U21) GPMC0_AD1.UART2_TXD */
			AM64X_IOPAD(0x0040, PIN_OUTPUT, 2)
		>;
	};

	main_uart3_pins: main-uart3-pins {
		pinctrl-single,pins = <
			/* (T17) GPMC0_AD9.UART3_CTSn */
			AM64X_IOPAD(0x0060, PIN_INPUT, 2)
			/* (U19) GPMC0_AD5.UART3_RTSn */
			AM64X_IOPAD(0x0050, PIN_OUTPUT, 2)
			/* (U20) GPMC0_AD3.UART3_RXD */
			AM64X_IOPAD(0x0048, PIN_INPUT, 2)
			/* (U18) GPMC0_AD4.UART3_TXD */
			AM64X_IOPAD(0x004c, PIN_OUTPUT, 2)
		>;
	};

	main_uart4_pins: main-uart4-pins {
		pinctrl-single,pins = <
			/* (R16) GPMC0_AD10.UART4_CTSn */
			AM64X_IOPAD(0x0064, PIN_INPUT, 2)
			/* (R17) GPMC0_CLK.UART4_RTSn */
			AM64X_IOPAD(0x007c, PIN_OUTPUT, 2)
			/* (V20) GPMC0_AD6.UART4_RXD */
			AM64X_IOPAD(0x0054, PIN_INPUT, 2)
			/* (V21) GPMC0_AD7.UART4_TXD */
			AM64X_IOPAD(0x0058, PIN_OUTPUT, 2)

			/* Control GPIOs for IOT Module connected to UART4 */
			/* (D18) ECAP0_IN_APWM_OUT.GPIO1_68 - BG95_PWRKEY */
			AM64X_IOPAD(0x0270, PIN_OUTPUT, 7)
			/* (A19) EXT_REFCLK1.GPIO1_69 - BG95_RESET */
			AM64X_IOPAD(0x0274, PIN_OUTPUT, 7)
		>;
	};

	main_uart5_pins: main-uart5-pins {
		pinctrl-single,pins = <
			/* (P16) GPMC0_ADVn_ALE.UART5_RXD */
			AM64X_IOPAD(0x0084, PIN_INPUT, 2)
			/* (R18) GPMC0_OEn_REn.UART5_TXD */
			AM64X_IOPAD(0x0088, PIN_OUTPUT, 2)
		>;
	};

	main_usb0_pins: main-usb0-pins {
		pinctrl-single,pins = <
			/* (E19) USB0_DRVVBUS */
			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0)
		>;
	};

	pru_icssg1_mdio_pins: pru-icssg1-mdio-pins {
		pinctrl-single,pins = <
			/* (A15) SPI1_D1.GPIO1_51 - RESET_PRG1_RGMII1# */
			AM64X_IOPAD(0x022c, PIN_OUTPUT, 7)
			/* (B14) SPI1_CS0.GPIO1_47 - RESET_PRG1_RGMII2# */
			AM64X_IOPAD(0x021c, PIN_OUTPUT, 7)

			/* (Y6) PRG1_MDIO0_MDC */
			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0)
			/* (AA6) PRG1_MDIO0_MDIO */
			AM64X_IOPAD(0x0158, PIN_INPUT, 0)
		>;
	};

	pru_icssg1_rgmii1_pins: pru-icssg1-rgmii1-pins {
		pinctrl-single,pins = <
			/* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
			AM64X_IOPAD(0x00b8, PIN_INPUT, 2)
			/* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
			AM64X_IOPAD(0x00bc, PIN_INPUT, 2)
			/* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
			AM64X_IOPAD(0x00c0, PIN_INPUT, 2)
			/* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
			AM64X_IOPAD(0x00c4, PIN_INPUT, 2)
			/* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
			AM64X_IOPAD(0x00d0, PIN_INPUT, 2)
			/* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
			AM64X_IOPAD(0x00c8, PIN_INPUT, 2)
			/* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
			AM64X_IOPAD(0x00e4, PIN_OUTPUT, 2)
			/* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
			AM64X_IOPAD(0x00e8, PIN_OUTPUT, 2)
			/* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
			AM64X_IOPAD(0x00ec, PIN_OUTPUT, 2)
			/* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
			AM64X_IOPAD(0x00f0, PIN_OUTPUT, 2)
			/* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
			AM64X_IOPAD(0x00f8, PIN_OUTPUT, 2)
			/* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
			AM64X_IOPAD(0x00f4, PIN_OUTPUT, 2)
		>;
	};

	pru_icssg1_rgmii2_pins: pru-icssg1-rgmii2-pins {
		pinctrl-single,pins = <
			/* (W11) PRG1_PRU1_GPO0.PRG1_RGMII2_RD0 */
			AM64X_IOPAD(0x0108, PIN_INPUT, 2)
			/* (V11) PRG1_PRU1_GPO1.PRG1_RGMII2_RD1 */
			AM64X_IOPAD(0x010c, PIN_INPUT, 2)
			/* (AA12) PRG1_PRU1_GPO2.PRG1_RGMII2_RD2 */
			AM64X_IOPAD(0x0110, PIN_INPUT, 2)
			/* (Y12) PRG1_PRU1_GPO3.PRG1_RGMII2_RD3 */
			AM64X_IOPAD(0x0114, PIN_INPUT, 2)
			/* (U11) PRG1_PRU1_GPO6.PRG1_RGMII2_RXC */
			AM64X_IOPAD(0x0120, PIN_INPUT, 2)
			/* (W12) PRG1_PRU1_GPO4.PRG1_RGMII2_RX_CTL */
			AM64X_IOPAD(0x0118, PIN_INPUT, 2)
			/* (AA10) PRG1_PRU1_GPO11.PRG1_RGMII2_TD0 */
			AM64X_IOPAD(0x0134, PIN_OUTPUT, 2)
			/* (V10) PRG1_PRU1_GPO12.PRG1_RGMII2_TD1 */
			AM64X_IOPAD(0x0138, PIN_OUTPUT, 2)
			/* (U10) PRG1_PRU1_GPO13.PRG1_RGMII2_TD2 */
			AM64X_IOPAD(0x013c, PIN_OUTPUT, 2)
			/* (AA11) PRG1_PRU1_GPO14.PRG1_RGMII2_TD3 */
			AM64X_IOPAD(0x0140, PIN_OUTPUT, 2)
			/* (Y10) PRG1_PRU1_GPO16.PRG1_RGMII2_TXC */
			AM64X_IOPAD(0x0148, PIN_OUTPUT, 2)
			/* (Y11) PRG1_PRU1_GPO15.PRG1_RGMII2_TX_CTL */
			AM64X_IOPAD(0x0144, PIN_OUTPUT, 2)
		>;
	};

	pwm_fan_pins: pwm-fan-pins {
		pinctrl-single,pins = <
			/* (T19) GPMC0_BE1n.EHRPWM5_A */
			AM64X_IOPAD(0x0094, PIN_OUTPUT, 3)
			/* (C14) SPI1_CLK.GPIO1_49 - FAN_RPM */
			AM64X_IOPAD(0x0224, PIN_INPUT, 7)
		>;
	};

	pwm_fan_reg_pins: pwm-fan-reg-pins {
		pinctrl-single,pins = <
			/* (D14) SPI1_CS1.GPIO1_48 - FAN_PWR */
			AM64X_IOPAD(0x0220, PIN_OUTPUT, 7)
		>;
	};
};

&mcu_pmx0 {
	mcu_gpio_keys_pins: mcu-gpio-keys-pins {
		pinctrl-single,pins = <
			/* (A7) MCU_SPI1_CS0.MCU_GPIO0_5 */
			AM64X_MCU_IOPAD(0x0014, PIN_INPUT, 7)
		>;
	};

	mcu_gpio_leds_pins: mcu-gpio-leds-pins {
		pinctrl-single,pins = <
			/* (C7) MCU_SPI1_D0.MCU_GPIO0_8 */
			AM64X_MCU_IOPAD(0x0020, PIN_OUTPUT, 7)
			/* (C8) MCU_SPI1_D1.MCU_GPIO0_9 */
			AM64X_MCU_IOPAD(0x0024, PIN_OUTPUT, 7)
		>;
	};

	mcu_gpio0_pins: mcu-gpio0-pins {
		pinctrl-single,pins = <
			/* (E8) MCU_UART0_RTSn.MCU_GPIO0_0 */
			AM64X_MCU_IOPAD(0x0034, PIN_INPUT, 7)
			/* (D8) MCU_UART0_CTSn.MCU_GPIO0_1 */
			AM64X_MCU_IOPAD(0x0030, PIN_INPUT, 7)
			/* (B7) MCU_SPI1_CS1.MCU_GPIO0_6 */
			AM64X_MCU_IOPAD(0x0018, PIN_INPUT, 7)
			/* (D7) MCU_SPI1_CLK.MCU_GPIO0_7 */
			AM64X_MCU_IOPAD(0x001c, PIN_INPUT, 7)
			/* (A11) MCU_I2C1_SCL.MCU_GPIO0_20 */
			AM64X_MCU_IOPAD(0x0050, PIN_INPUT, 7)
			/* (B10) MCU_I2C1_SDA.MCU_GPIO0_21 */
			AM64X_MCU_IOPAD(0x0054, PIN_INPUT, 7)
		>;
	};

	mcu_i2c0_pins: mcu-i2c0-pins {
		pinctrl-single,pins = <
			/* (E9) MCU_I2C0_SCL */
			AM64X_MCU_IOPAD(0x0048, PIN_INPUT, 0)
			/* (A10) MCU_I2C0_SDA */
			AM64X_MCU_IOPAD(0x004c, PIN_INPUT, 0)
		>;
	};

	mcu_spi0_pins: mcu-spi0-pins {
		pinctrl-single,pins = <
			/* (E6) MCU_SPI0_CLK */
			AM64X_MCU_IOPAD(0x0008, PIN_OUTPUT, 0)
			/* (D6) MCU_SPI0_CS0 */
			AM64X_MCU_IOPAD(0x0000, PIN_OUTPUT, 0)
			/* (C6) MCU_SPI0_CS1 */
			AM64X_MCU_IOPAD(0x0004, PIN_OUTPUT, 0)
			/* (E7) MCU_SPI0_D0 */
			AM64X_MCU_IOPAD(0x000c, PIN_OUTPUT, 0)
			/* (B6) MCU_SPI0_D1 */
			AM64X_MCU_IOPAD(0x0010, PIN_INPUT, 0)
		>;
	};

	mcu_uart0_pins: mcu-uart0-pins {
		pinctrl-single,pins = <
			/* (A9) MCU_UART0_RXD */
			AM64X_MCU_IOPAD(0x0028, PIN_INPUT, 0)
			/* (A8) MCU_UART0_TXD */
			AM64X_MCU_IOPAD(0x002c, PIN_OUTPUT, 0)
		>;
	};

	mcu_uart1_pins: mcu-uart1-pins {
		pinctrl-single,pins = <
			/* (B8) MCU_UART1_CTSn */
			AM64X_MCU_IOPAD(0x0040, PIN_INPUT, 0)
			/* (B9) MCU_UART1_RTSn */
			AM64X_MCU_IOPAD(0x0044, PIN_OUTPUT, 0)
			/* (C9) MCU_UART1_RXD */
			AM64X_MCU_IOPAD(0x0038, PIN_INPUT, 0)
			/* (D9) MCU_UART1_TXD */
			AM64X_MCU_IOPAD(0x003c, PIN_OUTPUT, 0)
		>;
	};
};
