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

&pinctrl {
	uart20_default: uart20_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 4)>,
				<NRF_PSEL(UART_RX, 1, 5)>;
		};
	};

	uart20_sleep: uart20_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 4)>,
				<NRF_PSEL(UART_RX, 1, 5)>;
			low-power-enable;
		};
	};

	uart30_default: uart30_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 0)>,
				<NRF_PSEL(UART_RX, 0, 1)>;
		};
	};

	uart30_sleep: uart30_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 0)>,
				<NRF_PSEL(UART_RX, 0, 1)>;
			low-power-enable;
		};
	};
};
