/*
 * Copyright (c) 2022, NXP
 * SPDX-License-Identifier: Apache-2.0
 *
 * Note: File generated by gen_board_pinctrl.py
 * from mimxrt1060_evk.mex
 */

#include <nxp/nxp_imx/rt/mimxrt1062dvl6a-pinctrl.dtsi>

&pinctrl {
	/* ADC1 inputs 0 and 15 */
	pinmux_adc1: pinmux_adc1 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_11_adc1_in0>,
				<&iomuxc_gpio_ad_b1_10_adc1_in15>;
			bias-disable;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* conflicts with lpuart3 */
	pinmux_csi: pinmux_csi {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_04_gpio1_io04>;
			drive-strength = "r0-6";
			bias-pull-down;
			bias-pull-down-value = "100k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_ad_b1_04_csi_pixclk>,
				<&iomuxc_gpio_ad_b1_05_csi_mclk>,
				<&iomuxc_gpio_ad_b1_06_csi_vsync>,
				<&iomuxc_gpio_ad_b1_07_csi_hsync>,
				<&iomuxc_gpio_ad_b1_08_csi_data09>,
				<&iomuxc_gpio_ad_b1_09_csi_data08>,
				<&iomuxc_gpio_ad_b1_10_csi_data07>,
				<&iomuxc_gpio_ad_b1_11_csi_data06>,
				<&iomuxc_gpio_ad_b1_12_csi_data05>,
				<&iomuxc_gpio_ad_b1_13_csi_data04>,
				<&iomuxc_gpio_ad_b1_14_csi_data03>,
				<&iomuxc_gpio_ad_b1_15_csi_data02>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_enet: pinmux_enet {
		group0 {
			pinmux = <&iomuxc_gpio_b1_10_enet_ref_clk>;
			bias-disable;
			drive-strength = "r0-6";
			slew-rate = "fast";
			nxp,speed = "50-mhz";
			input-enable;
		};
		group1 {
			pinmux = <&iomuxc_gpio_b1_04_enet_rx_data0>,
				<&iomuxc_gpio_b1_05_enet_rx_data1>,
				<&iomuxc_gpio_b1_06_enet_rx_en>,
				<&iomuxc_gpio_b1_07_enet_tx_data0>,
				<&iomuxc_gpio_b1_08_enet_tx_data1>,
				<&iomuxc_gpio_b1_09_enet_tx_en>,
				<&iomuxc_gpio_b1_11_enet_rx_er>;
			drive-strength = "r0-5";
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
		};
	};

	pinmux_enet_mdio: pinmux_enet_mdio {
		group0 {
			pinmux = <&iomuxc_gpio_emc_40_enet_mdc>,
				<&iomuxc_gpio_emc_41_enet_mdio>,
				<&iomuxc_gpio_ad_b0_10_gpio1_io10>,
				<&iomuxc_gpio_ad_b0_09_gpio1_io09>;
			drive-strength = "r0-5";
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
		};
	};

	pinmux_ptp: pinmux_ptp {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_02_enet_1588_event2_out>,
				<&iomuxc_gpio_ad_b1_03_enet_1588_event2_in>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};


	pinmux_flexcan3: pinmux_flexcan3 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_14_flexcan3_tx>,
				<&iomuxc_gpio_ad_b0_15_flexcan3_rx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* flexpwm output for board LED */
	pinmux_flexpwm2_3: pinmux_flexpwm2_3 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_09_flexpwm2_pwma3>;
			drive-strength = "r0-4";
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* Conflicts with SD and SPI pins. Requires R281/R356 be populated */
	pinmux_flexpwm1_0: pinmux_flexpwm1_0 {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_flexpwm1_pwmb0>;
			drive-strength = "r0-4";
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_flexpwm1: pinmux_flexpwm1 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_10_flexpwm1_pwma3>;
			drive-strength = "r0-4";
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_flexspi1: pinmux_flexspi1 {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b1_05_flexspi_a_dqs>;
			drive-strength = "r0-6";
			input-schmitt-enable;
			bias-pull-down;
			bias-pull-down-value = "100k";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
			input-enable;
		};
		group1 {
			pinmux = <&iomuxc_gpio_sd_b1_03_flexspi_b_data0>,
				<&iomuxc_gpio_sd_b1_00_flexspi_b_data3>,
				<&iomuxc_gpio_sd_b1_01_flexspi_b_data2>,
				<&iomuxc_gpio_sd_b1_02_flexspi_b_data1>,
				<&iomuxc_gpio_sd_b1_04_flexspi_b_sclk>,
				<&iomuxc_gpio_sd_b1_06_flexspi_a_ss0_b>,
				<&iomuxc_gpio_sd_b1_07_flexspi_a_sclk>,
				<&iomuxc_gpio_sd_b1_08_flexspi_a_data0>,
				<&iomuxc_gpio_sd_b1_09_flexspi_a_data1>,
				<&iomuxc_gpio_sd_b1_10_flexspi_a_data2>,
				<&iomuxc_gpio_sd_b1_11_flexspi_a_data3>;
			drive-strength = "r0-6";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
			input-enable;
		};
	};

	/* Configures pin routing and optionally pin electrical features. */
	pinmux_lcdif: pinmux_lcdif {
		group0 {
			pinmux = <&iomuxc_gpio_b0_00_lcdif_clk>,
				<&iomuxc_gpio_b0_01_lcdif_enable>,
				<&iomuxc_gpio_b0_02_lcdif_hsync>,
				<&iomuxc_gpio_b0_03_lcdif_vsync>,
				<&iomuxc_gpio_b0_04_lcdif_data00>,
				<&iomuxc_gpio_b0_05_lcdif_data01>,
				<&iomuxc_gpio_b0_06_lcdif_data02>,
				<&iomuxc_gpio_b0_07_lcdif_data03>,
				<&iomuxc_gpio_b0_08_lcdif_data04>,
				<&iomuxc_gpio_b0_09_lcdif_data05>,
				<&iomuxc_gpio_b0_10_lcdif_data06>,
				<&iomuxc_gpio_b0_11_lcdif_data07>,
				<&iomuxc_gpio_b0_12_lcdif_data08>,
				<&iomuxc_gpio_b0_13_lcdif_data09>,
				<&iomuxc_gpio_b0_14_lcdif_data10>,
				<&iomuxc_gpio_b0_15_lcdif_data11>,
				<&iomuxc_gpio_b1_00_lcdif_data12>,
				<&iomuxc_gpio_b1_01_lcdif_data13>,
				<&iomuxc_gpio_b1_02_lcdif_data14>,
				<&iomuxc_gpio_b1_03_lcdif_data15>;
			drive-strength = "r0-6";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_ad_b0_02_gpio1_io02>,
				<&iomuxc_gpio_b1_15_gpio2_io31>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_lpi2c1: pinmux_lpi2c1 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_01_lpi2c1_sda>,
				<&iomuxc_gpio_ad_b1_00_lpi2c1_scl>;
			drive-strength = "r0-6";
			drive-open-drain;
			slew-rate = "slow";
			nxp,speed = "100-mhz";
			input-enable;
		};
	};

	/* Conflicts with USDHC pins. Connect R278, R279, R280, and R281 on evk board */
	pinmux_lpspi1: pinmux_lpspi1 {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_lpspi1_pcs0>,
				<&iomuxc_gpio_sd_b0_00_lpspi1_sck>,
				<&iomuxc_gpio_sd_b0_03_lpspi1_sdi>,
				<&iomuxc_gpio_sd_b0_02_lpspi1_sdo>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* conflicts with lcdif pins */
	pinmux_lpspi3: pinmux_lpspi3 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_03_lpspi3_pcs0>,
				<&iomuxc_gpio_ad_b0_00_lpspi3_sck>,
				<&iomuxc_gpio_ad_b0_02_lpspi3_sdi>,
				<&iomuxc_gpio_ad_b0_01_lpspi3_sdo>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_lpuart1: pinmux_lpuart1 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_13_lpuart1_rx>,
				<&iomuxc_gpio_ad_b0_12_lpuart1_tx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_lpuart1_sleep: pinmux_lpuart1_sleep {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_13_gpio1_io13>;
			drive-strength = "r0";
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "slow";
			nxp,speed = "50-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_ad_b0_12_lpuart1_tx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_lpuart3: pinmux_lpuart3 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_06_lpuart3_tx>,
				<&iomuxc_gpio_ad_b1_07_lpuart3_rx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* Flow control for lpuart3 */
	pinmux_lpuart3_flow_control: pinmux_lpuart3_flow_control {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_06_lpuart3_tx>,
				<&iomuxc_gpio_ad_b1_07_lpuart3_rx>,
				<&iomuxc_gpio_ad_b1_04_lpuart3_cts_b>,
				<&iomuxc_gpio_ad_b1_05_lpuart3_rts_b>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_lpuart3_sleep: pinmux_lpuart3_sleep {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_06_gpio1_io22>;
			drive-strength = "r0";
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_ad_b1_07_lpuart3_rx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	pinmux_sai1: pinmux_sai1 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_09_sai1_mclk>,
				<&iomuxc_gpio_ad_b1_13_sai1_tx_data0>,
				<&iomuxc_gpio_ad_b1_12_sai1_rx_data0>,
				<&iomuxc_gpio_ad_b1_14_sai1_tx_bclk>,
				<&iomuxc_gpio_ad_b1_15_sai1_tx_sync>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* Note SWO is configured with a cpu frequency of 132MHz and SWO frequency of 7500KHz */
	pinmux_swo: pinmux_swo {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b0_10_arm_trace_swo>;
			bias-disable;
			drive-strength = "r0-7";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
		};
	};

	pinmux_usdhc1: pinmux_usdhc1 {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_usdhc1_clk>;
			bias-disable;
			drive-strength = "r0";
			input-schmitt-enable;
			slew-rate = "fast";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_b1_12_gpio2_io28>,
				<&iomuxc_gpio_sd_b0_00_usdhc1_cmd>,
				<&iomuxc_gpio_sd_b0_02_usdhc1_data0>,
				<&iomuxc_gpio_sd_b0_03_usdhc1_data1>,
				<&iomuxc_gpio_sd_b0_04_usdhc1_data2>,
				<&iomuxc_gpio_sd_b0_05_usdhc1_data3>;
			drive-strength = "r0";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "fast";
			nxp,speed = "100-mhz";
		};
		group2 {
			pinmux = <&iomuxc_gpio_b1_14_usdhc1_vselect>;
			drive-strength = "r0-4";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "fast";
			nxp,speed = "100-mhz";
		};
		group3 {
			pinmux = <&iomuxc_gpio_ad_b0_05_gpio1_io05>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
	};

	/* fast pinmux settings for USDHC (over 100 Mhz) */
	pinmux_usdhc1_fast: pinmux_usdhc1_fast {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_usdhc1_clk>;
			bias-disable;
			drive-strength = "r0-7";
			input-schmitt-enable;
			slew-rate = "fast";
			nxp,speed = "200-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_sd_b0_00_usdhc1_cmd>,
				<&iomuxc_gpio_sd_b0_02_usdhc1_data0>,
				<&iomuxc_gpio_sd_b0_03_usdhc1_data1>,
				<&iomuxc_gpio_sd_b0_04_usdhc1_data2>,
				<&iomuxc_gpio_sd_b0_05_usdhc1_data3>;
			drive-strength = "r0-7";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "fast";
			nxp,speed = "200-mhz";
		};
	};

	/* medium pinmux settings for USDHC (under 100 Mhz) */
	pinmux_usdhc1_med: pinmux_usdhc1_med {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_usdhc1_clk>;
			bias-disable;
			drive-strength = "r0-7";
			input-schmitt-enable;
			slew-rate = "fast";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_sd_b0_00_usdhc1_cmd>,
				<&iomuxc_gpio_sd_b0_02_usdhc1_data0>,
				<&iomuxc_gpio_sd_b0_03_usdhc1_data1>,
				<&iomuxc_gpio_sd_b0_04_usdhc1_data2>,
				<&iomuxc_gpio_sd_b0_05_usdhc1_data3>;
			drive-strength = "r0-7";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "fast";
			nxp,speed = "100-mhz";
		};
	};

	/* slow pinmux settings for USDHC (under 50 Mhz) */
	pinmux_usdhc1_slow: pinmux_usdhc1_slow {
		group0 {
			pinmux = <&iomuxc_gpio_sd_b0_01_usdhc1_clk>;
			bias-disable;
			drive-strength = "r0-7";
			input-schmitt-enable;
			slew-rate = "fast";
			nxp,speed = "50-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_sd_b0_00_usdhc1_cmd>,
				<&iomuxc_gpio_sd_b0_02_usdhc1_data0>,
				<&iomuxc_gpio_sd_b0_03_usdhc1_data1>,
				<&iomuxc_gpio_sd_b0_04_usdhc1_data2>,
				<&iomuxc_gpio_sd_b0_05_usdhc1_data3>;
			drive-strength = "r0-7";
			input-schmitt-enable;
			bias-pull-up;
			bias-pull-up-value = "47k";
			slew-rate = "fast";
			nxp,speed = "50-mhz";
		};
	};
};
