/*
 * Copyright (c) 2023 Antmicro <www.antmicro.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <dt-bindings/pinctrl/gecko-pinctrl-s1.h>

&pinctrl {
	/* configuration for usart0 device, default state - operating as UART */
	usart0_default: usart0_default {
		group1 {
			psels = <GECKO_PSEL(UART_TX, A, 0)>,
				<GECKO_PSEL(UART_RX, A, 1)>,
				<GECKO_LOC(UART_TX, 0)>,
				<GECKO_LOC(UART_RX, 0)>;
		};
	};

	i2c0_default: i2c0_default {
		group1 {
			psels = <GECKO_PSEL(I2C_SDA, A, 0)>,
				<GECKO_PSEL(I2C_SCL, A, 1)>,
				<GECKO_LOC(I2C_SDA, 4)>,
				<GECKO_LOC(I2C_SCL, 4)>;
		};
	};

	i2c1_default: i2c1_default {
		group1 {
			psels = <GECKO_PSEL(I2C_SDA, B, 11)>,
				<GECKO_PSEL(I2C_SCL, B, 12)>,
				<GECKO_LOC(I2C_SDA, 1)>,
				<GECKO_LOC(I2C_SCL, 1)>;
		};
	};
};
