/*
 * Copyright (c) 2022 Nordic Semiconductor
 * SPDX-License-Identifier: Apache-2.0
 */

&pinctrl {
	i2c1_default: i2c1_default {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 24)>,
				<NRF_PSEL(TWIM_SCL, 1, 9)>;
		};
	};

	i2c1_sleep: i2c1_sleep {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 24)>,
				<NRF_PSEL(TWIM_SCL, 1, 9)>;
			low-power-enable;
		};
	};

	uart1_default: uart1_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 5)>,
				<NRF_PSEL(UART_RX, 1, 4)>,
				<NRF_PSEL(UART_RTS, 1, 7)>,
				<NRF_PSEL(UART_CTS, 1, 6)>;
		};
	};

	uart1_sleep: uart1_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 5)>,
				<NRF_PSEL(UART_RX, 1, 4)>,
				<NRF_PSEL(UART_RTS, 1, 7)>,
				<NRF_PSEL(UART_CTS, 1, 6)>;
			low-power-enable;
		};
	};

};
