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

};
