/*
 * NOTE: File generated by lpc_cfg_utils.py
 * from MIMXRT595-EVK.mex
 *
 * Copyright 2022, NXP
 * SPDX-License-Identifier: Apache-2.0
 */


#include <nxp/nxp_imx/rt/MIMXRT595SFFOC-pinctrl.h>

&pinctrl {
	pinmux_flexcomm0_usart: pinmux_flexcomm0_usart {
		group0 {
			pinmux = <FC0_RXD_SDA_MOSI_DATA_PIO0_2>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
		};
		group1 {
			pinmux = <FC0_TXD_SCL_MISO_WS_PIO0_1>;
			slew-rate = "normal";
			drive-strength = "normal";
		};
	};

	pinmux_flexcomm4_i2c: pinmux_flexcomm4_i2c {
		group0 {
			pinmux = <FC4_TXD_SCL_MISO_WS_PIO0_29>,
			       <FC4_RXD_SDA_MOSI_DATA_PIO0_30>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "high";
			drive-open-drain;
		};
	};

	pinmux_flexcomm12_usart: pinmux_flexcomm12_usart {
		group0 {
			pinmux = <FC12_RXD_SDA_MOSI_PIO4_31>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
		};
		group1 {
			pinmux = <FC12_TXD_SCL_MISO_PIO4_30>;
			slew-rate = "normal";
			drive-strength = "normal";
		};
	};

	pinmux_flexcomm16_spi: pinmux_flexcomm16_spi {
		group0 {
			pinmux = <HS_SPI1_SCK_PIO1_3>,
					<HS_SPI1_MISO_PIO1_4>,
					<HS_SPI1_MOSI_PIO1_5>,
					<HS_SPI1_SSELN0_PIO1_6>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
		};
	};

	pinmux_pmic_i2c: pinmux_pmic_i2c {
		group0 {
			pinmux = <PMIC_I2C_SCL>,
				<PMIC_I2C_SDA>;
			bias-pull-up;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
			drive-open-drain;
		};
	};

	pinmux_flexspi2: pinmux_flexspi2 {
		group0 {
			pinmux =
				<FLEXSPI1_SCLK_PIO4_11>,
				<FLEXSPI1_DATA0_PIO4_12>,
				<FLEXSPI1_DATA1_PIO4_13>,
				<FLEXSPI1_DATA2_PIO4_14>,
				<FLEXSPI1_DATA3_PIO4_15>,
				<FLEXSPI1_DATA4_PIO5_15>,
				<FLEXSPI1_DATA5_PIO5_16>,
				<FLEXSPI1_DATA6_PIO5_17>,
				<FLEXSPI1_DATA7_PIO5_18>,
				<FLEXSPI1_SS0_N_PIO4_18>;
			slew-rate = "normal";
			input-enable;
			drive-strength = "high";
		};
		group1 {
			pinmux = <FLEXSPI1_DQS_PIO4_16>;
			slew-rate = "normal";
			input-enable;
			drive-strength = "high";
			bias-pull-down;
		};
	};

	pinmux_flexspi: pinmux_flexspi {
		group0 {
			pinmux = <FLEXSPI0_SCLK_PIO1_18>,
					<FLEXSPI0_SS0_N_PIO1_19>,
					<FLEXSPI0_DATA0_PIO1_20>,
					<FLEXSPI0_DATA1_PIO1_21>,
					<FLEXSPI0_DATA2_PIO1_22>,
					<FLEXSPI0_DATA3_PIO1_23>,
					<FLEXSPI0_DATA4_PIO1_24>,
					<FLEXSPI0_DATA5_PIO1_25>,
					<FLEXSPI0_DATA6_PIO1_26>,
					<FLEXSPI0_DATA7_PIO1_27>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "high";
		};
	};

	pinmux_flexspi_sleep: pinmux_flexspi_sleep {
		group0 {
			pinmux = <FLEXSPI0_SCLK_PIO1_18>,
					<FLEXSPI0_SS0_N_PIO1_19>;
			slew-rate = "normal";
			drive-strength = "high";
		};
		group1 {
			pinmux = <FLEXSPI0_DATA0_PIO1_20>,
					<FLEXSPI0_DATA1_PIO1_21>,
					<FLEXSPI0_DATA2_PIO1_22>,
					<FLEXSPI0_DATA3_PIO1_23>,
					<FLEXSPI0_DATA4_PIO1_24>,
					<FLEXSPI0_DATA5_PIO1_25>,
					<FLEXSPI0_DATA6_PIO1_26>,
					<FLEXSPI0_DATA7_PIO1_27>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "high";
			bias-pull-up;
		};
	};

	pinmux_lpadc0: pinmux_lpadc0 {
		group0 {
			pinmux = <ADC0_CH0_PIO0_5>,
				<ADC0_CH2_PIO0_19>;
			slew-rate = "normal";
			drive-strength = "normal";
			nxp,analog-mode;
		};
	};

	pinmux_usdhc: pinmux_usdhc {
		group0 {
			pinmux = <SD0_CMD_PIO1_31>,
				 <USDHC0_USDHC_DATA0_PIO2_0>,
				 <USDHC0_USDHC_DATA1_PIO2_1>,
				 <USDHC0_USDHC_DATA2_PIO2_2>,
				 <USDHC0_USDHC_DATA3_PIO2_3>,
				 <USDHC0_USDHC_DATA4_PIO2_5>,
				 <USDHC0_USDHC_DATA5_PIO2_6>,
				 <USDHC0_USDHC_DATA6_PIO2_7>,
				 <USDHC0_USDHC_DATA7_PIO2_8>,
				 <SD0_CARD_DET_N_PIO2_9>;
			bias-pull-up;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
		};
		group1 {
			pinmux = <SD0_CLK_PIO1_30>;
			bias-pull-down;
			input-enable;
			slew-rate = "normal";
			drive-strength = "normal";
		};
		group2 {
			pinmux = <GPIO_PIO210_PIO2_10>;
			bias-pull-down;
			slew-rate = "normal";
			drive-strength = "normal";
		};
		group3 {
			pinmux = <SD0_DS_PIO2_4>;
			bias-pull-down;
			input-enable;
			slew-rate = "slow";
			drive-strength = "normal";
		};
	};
};
