/*
 * NOTE: Autogenerated file by kinetis_cfg_utils.py
 * for MK66FN2M0VMD18/signal_configuration.xml
 *
 * Copyright (c) 2022, NXP
 * SPDX-License-Identifier: Apache-2.0
 */


#include <nxp/kinetis/MK66FN2M0VMD18-pinctrl.h>

&pinctrl {
	enet_default: enet_default {
		group0 {
			pinmux = <RMII0_MDIO_PTB0>;
			drive-strength = "low";
			drive-open-drain;
			bias-pull-up;
			slew-rate = "fast";
		};
		group1 {
			pinmux = <RMII0_RXER_PTA5>,
				<RMII0_RXD1_PTA12>,
				<RMII0_RXD0_PTA13>,
				<RMII0_CRS_DV_PTA14>,
				<RMII0_TXEN_PTA15>,
				<RMII0_TXD1_PTA17>,
				<RMII0_TXD0_PTA16>,
				<RMII0_MDC_PTB1>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	flexcan0_default: flexcan0_default {
		group0 {
			pinmux = <CAN0_RX_PTB19>,
				<CAN0_TX_PTB18>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	flexcan1_default: flexcan1_default {
		group0 {
			pinmux = <CAN1_RX_PTC16>,
				<CAN1_TX_PTC17>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	ftm0_default: ftm0_default {
		group0 {
			pinmux = <FTM0_CH0_PTC1>,
				<FTM0_CH1_PTA4>,
				<FTM0_CH4_PTD4>,
				<FTM0_CH5_PTD5>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	/* conflicts with UART2 */
	ftm3_default: ftm3_default {
		group0 {
			pinmux = <FTM3_CH1_PTD1>,
				<FTM3_CH4_PTC8>,
				<FTM3_CH5_PTC9>,
				<FTM3_CH6_PTE11>,
				<FTM3_CH7_PTE12>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	i2c0_default: i2c0_default {
		group0 {
			pinmux = <I2C0_SCL_PTE24>,
				<I2C0_SDA_PTE25>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	i2c1_default: i2c1_default {
		group0 {
			pinmux = <I2C1_SCL_PTC10>,
				<I2C1_SDA_PTC11>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	lpuart0_default: lpuart0_default {
		group0 {
			pinmux = <LPUART0_RX_PTD8>;
			drive-strength = "low";
			bias-pull-up;
			slew-rate = "fast";
		};
		group1 {
			pinmux = <LPUART0_TX_PTD9>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	spi0_default: spi0_default {
		group0 {
			pinmux = <SPI0_PCS2_PTC2>,
				<SPI0_SCK_PTC5>,
				<SPI0_SIN_PTC7>,
				<SPI0_SOUT_PTC6>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	spi1_default: spi1_default {
		group0 {
			pinmux = <SPI1_PCS0_PTB10>,
				<SPI1_PCS1_PTB9>,
				<SPI1_SCK_PTB11>,
				<SPI1_SIN_PTB17>,
				<SPI1_SOUT_PTB16>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	spi2_default: spi2_default {
		group0 {
			pinmux = <SPI2_PCS0_PTB20>,
				<SPI2_SCK_PTB21>,
				<SPI2_SIN_PTB23>,
				<SPI2_SOUT_PTB22>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	uart0_default: uart0_default {
		group0 {
			pinmux = <UART0_RX_PTA1>,
				<UART0_TX_PTA2>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	uart1_default: uart1_default {
		group0 {
			pinmux = <UART1_RX_PTC3>,
				<UART1_TX_PTC4>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	/* conflicts with FTM3 */
	uart2_default: uart2_default {
		group0 {
			pinmux = <UART2_RX_PTD2>,
				<UART2_TX_PTD3>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

	uart4_default: uart4_default {
		group0 {
			pinmux = <UART4_CTS_b_PTC13>,
				<UART4_RTS_b_PTE27>,
				<UART4_RX_PTC14>,
				<UART4_TX_PTC15>;
			drive-strength = "low";
			slew-rate = "fast";
		};
	};

};
