/*
 * 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_CH8_PIO0_16>,
				<ADC0_CH4_PIO1_8>,
				<ADC0_CH12_PIO1_9>;
			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";
		};
	};

	pinmux_usbfs: pinmux_usbfs {
		group0 {
			pinmux = <USB0_VBUS_PIO0_22>;
			slew-rate = "standard";
		};
	};
};
