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

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

&pinctrl {
	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;
		};
	};

	pinmux_lpi2c3: pinmux_lpi2c3 {
		group0 {
			pinmux = <&iomuxc_gpio_ad_b1_07_lpi2c3_scl>,
				<&iomuxc_gpio_ad_b1_06_lpi2c3_sda>;
			drive-strength = "r0-6";
			drive-open-drain;
			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-6";
			bias-pull-up;
			bias-pull-up-value = "100k";
			slew-rate = "slow";
			nxp,speed = "100-mhz";
		};
		group1 {
			pinmux = <&iomuxc_gpio_ad_b0_12_lpuart1_tx>;
			drive-strength = "r0-6";
			slew-rate = "slow";
			nxp,speed = "100-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";
		};
	};

};

