/*
 * 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";
		};
	};

	/* RX */
	pinmux_flexcomm1_i2s: pinmux_flexcomm1_i2s {
		group0 {
			pinmux = <FC1_RXD_SDA_MOSI_DATA_PIO0_9>,
				<FC1_TXD_SCL_MISO_WS_PIO0_8>,
				<FC1_SCK_PIO0_7>;
			slew-rate = "normal";
			input-enable;
			drive-strength = "high";
		};
	};

	/* TX */
	pinmux_flexcomm3_i2s: pinmux_flexcomm3_i2s {
		group0 {
			pinmux = <FC3_RXD_SDA_MOSI_DATA_PIO0_23>;
			input-enable;
			slew-rate = "normal";
			drive-strength = "high";
		};
	};

	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_CH8_PIO0_6>,
				<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";
		};
	};

	pinmux_sctimer_default: pinmux_sctimer_default {
		group0 {
			pinmux = <SCT0_OUT0_PIO0_5>,
			       <SCT0_OUT1_PIO0_6>;
			slew-rate = "normal";
			drive-strength = "normal";
		};
	};

	pinmux_i3c: pinmux_i3c {
		group0 {
			pinmux = <I3C0_SCL_PIO2_29>,
				<I3C0_SDA_PIO2_30>;
			input-enable;
			slew-rate = "slow";
			drive-strength = "high";
		};

		group1 {
			pinmux = <I3C0_PUR_PIO2_31>;
			slew-rate = "normal";
			drive-strength = "normal";
		};
	};

};
