/*
 * Copyright (c) 2022, Gerson Fernando Budke <nandojve@gmail.com>
 * SPDX-License-Identifier: Apache-2.0
 */

#include <dt-bindings/pinctrl/samv71q-pinctrl.h>

&pinctrl {
	afec0_default: afec0_default {
		group1 {
			pinmux = <PD30X_AFE0_AD0>,
				 <PA19X_AFE0_AD8>;
		};
	};

	afec1_default: afec1_default {
		group1 {
			pinmux = <PC13X_AFE1_AD1>,
				 <PC31X_AFE1_AD6>;
		};
	};

	can1_default: can1_default {
		group1 {
			pinmux = <PC12C_CAN1_RX>,
				 <PC14C_CAN1_TX>;
		};
	};

	gmac_rmii: gmac_rmii {
		group1 {
			pinmux = <PD0A_GMAC_GTXCK>,
				 <PD1A_GMAC_GTXEN>,
				 <PD2A_GMAC_GTX0>,
				 <PD3A_GMAC_GTX1>,
				 <PD4A_GMAC_GRXDV>,
				 <PD5A_GMAC_GRX0>,
				 <PD6A_GMAC_GRX1>,
				 <PD7A_GMAC_GRXER>;
		};
	};

	mdio_default: mdio_default {
		group1 {
			pinmux = <PD8A_GMAC_GMDC>,
				 <PD9A_GMAC_GMDIO>;
		};
	};

	pwm_default: pwm_default {
		group1 {
			pinmux = <PA0A_PWMC0_PWMH0>,
				 <PC19B_PWMC0_PWMH2>,
				 <PD26A_PWMC0_PWML2>,
				 <PA23B_PWMC0_PWMH0>;
		};
	};

	spi0_default: spi0_default {
		group1 {
			pinmux = <PD20B_SPI0_MISO>,
				 <PD21B_SPI0_MOSI>,
				 <PD22B_SPI0_SPCK>,
				 <PD25B_SPI0_NPCS1>,
				 <PD27B_SPI0_NPCS3>;
		};
	};

	ssc_default: ssc_default {
		group1 {
			pinmux = <PD24B_SSC_RF>,
				 <PA22A_SSC_RK>,
				 <PA10C_SSC_RD>,
				 <PB0D_SSC_TF>,
				 <PB1D_SSC_TK>,
				 <PB5D_SSC_TD>;
		};
	};

	twihs0_default: twihs0_default {
		group1 {
			pinmux = <PA4A_TWI0_TWCK>,
				 <PA3A_TWI0_TWD>;
		};
	};
	twihs2_default: twihs2_default {
		group1 {
			pinmux = <PD28C_TWI2_TWCK>,
				 <PD27C_TWI2_TWD>;
		};
	};

	uart3_default: uart3_default {
		group1 {
			pinmux = <PD28A_UART3_RXD>,
				 <PD30A_UART3_TXD>;
		};
	};
	uart4_default: uart4_default {
		group1 {
			pinmux = <PD19C_UART4_TXD>,
				 <PD18C_UART4_RXD>;
		};
	};
	usart0_default: usart0_default {
		group1 {
			pinmux = <PB0C_USART0_RXD>,
				 <PB1C_USART0_TXD>;
		};
	};
	usart0_hw_ctrl_flow: usart0_hw_ctrl_flow {
		group1 {
			pinmux = <PB0C_USART0_RXD>,
				 <PB3C_USART0_RTS>;
			bias-pull-up;
		};
		group1 {
			pinmux = <PB1C_USART0_TXD>,
				 <PB2C_USART0_CTS>;
		};
	};
	usart1_default: usart1_default {
		group1 {
			pinmux = <PA21A_USART1_RXD>,
				 <PB4D_USART1_TXD>;
		};
	};
	usart1_hw_ctrl_flow: usart1_hw_ctrl_flow {
		group1 {
			pinmux = <PA21A_USART1_RXD>,
				 <PA24A_USART1_RTS>;
			bias-pull-up;
		};
		group1 {
			pinmux = <PB4D_USART1_TXD>,
				 <PA25A_USART1_CTS>;
		};
	};
	usart2_default: usart2_default {
		group1 {
			pinmux = <PD15B_USART2_RXD>,
				 <PD16B_USART2_TXD>;
		};
	};
	usart2_hw_ctrl_flow: usart2_hw_ctrl_flow_clk {
		group1 {
			pinmux = <PD15B_USART2_RXD>,
				 <PD18B_USART2_RTS>;
			bias-pull-up;
		};
		group1 {
			pinmux = <PD16B_USART2_TXD>,
				 <PD19B_USART2_CTS>;
		};
	};
};
