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


#include <nxp/lpc/LPC55S69JBD100-pinctrl.h>

&pinctrl {
	pinmux_flexcomm0_usart: pinmux_flexcomm0_usart {
		group0 {
			pinmux = <FC0_TXD_SCL_MISO_WS_PIO0_30>,
				<FC0_RXD_SDA_MOSI_DATA_PIO0_29>;
			slew-rate = "standard";
		};
	};

	/* conflicts with hs_lspi pins */
	pinmux_flexcomm2_usart: pinmux_flexcomm2_usart {
		group0 {
			pinmux = <FC2_RXD_SDA_MOSI_DATA_PIO1_24>,
				<FC2_TXD_SCL_MISO_WS_PIO0_27>;
			slew-rate = "standard";
		};
	};

	pinmux_flexcomm4_i2c: pinmux_flexcomm4_i2c {
		group0 {
			pinmux = <FC4_TXD_SCL_MISO_WS_PIO1_20>,
				<FC4_RXD_SDA_MOSI_DATA_PIO1_21>;
			slew-rate = "standard";
		};
	};

	pinmux_flexcomm6_i2s: pinmux_flexcomm6_i2s {
		group0 {
			pinmux = <FC6_RXD_SDA_MOSI_DATA_PIO1_13>;
			bias-pull-up;
			slew-rate = "standard";
		};
	};

	pinmux_flexcomm7_i2s: pinmux_flexcomm7_i2s {
		group0 {
			pinmux = <FC7_TXD_SCL_MISO_WS_PIO0_19>,
				<FC7_RXD_SDA_MOSI_DATA_PIO0_20>,
				<FC7_SCK_PIO0_21>;
			bias-pull-up;
			slew-rate = "standard";
		};
	};

	pinmux_hs_lspi_default: pinmux_hs_lspi_default {
		group0 {
			pinmux = <HS_SPI_SSEL1_PIO1_1>,
				<HS_SPI_SCK_PIO1_2>,
				<HS_SPI_MISO_PIO1_3>,
				<HS_SPI_MOSI_PIO0_26>;
			bias-pull-up;
			slew-rate = "standard";
		};
	};

	pinmux_lpadc0: pinmux_lpadc0 {
		group0 {
			pinmux = <ADC0_CH0_PIO0_23>,
				<ADC0_CH1_PIO0_10>;
			slew-rate = "standard";
			nxp,analog-mode;
		};
	};

	pinmux_sctimer_default: pinmux_sctimer_default {
		group0 {
			pinmux = <SCT0_OUT2_PIO0_15>,
				<SCT0_OUT0_PIO1_4>;
			slew-rate = "standard";
		};
	};

	/* conflicts with sctimer pins */
	pinmux_sdif_default: pinmux_sdif_default {
		group0 {
			pinmux = <SDIF_SD0_D0_PIO0_24>,
				<SDIF_SD0_D1_PIO0_25>,
				<SDIF_SD0_D2_PIO0_31>,
				<SD0_CLK_PIO0_7>,
				<SD0_CMD_PIO0_8>,
				<SD0_POW_EN_PIO0_9>,
				<SDIF_SD0_D3_PIO1_0>;
			slew-rate = "fast";
		};
		group1 {
			pinmux = <SD0_WR_PRT_PIO0_15>,
				<SD0_CARD_DET_N_PIO0_17>;
			slew-rate = "standard";
		};
	};

};
