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

&pinctrl {
	/omit-if-no-ref/ uart135_default: uart135_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 11)>,
				<NRF_PSEL(UART_RTS, 1, 9)>;
		};

		group2 {
			bias-pull-up;
			psels = <NRF_PSEL(UART_RX, 1, 10)>,
				<NRF_PSEL(UART_CTS, 1, 7)>;
		};
	};

	/omit-if-no-ref/ uart135_sleep: uart135_sleep {
		group1 {
			low-power-enable;
			psels = <NRF_PSEL(UART_TX, 1, 11)>,
				<NRF_PSEL(UART_RX, 1, 10)>,
				<NRF_PSEL(UART_RTS, 1, 9)>,
				<NRF_PSEL(UART_CTS, 1, 7)>;
		};
	};

	/omit-if-no-ref/ uart136_default: uart136_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 2, 6)>,
				<NRF_PSEL(UART_RTS, 2, 7)>;
		};

		group2 {
			bias-pull-up;
			psels = <NRF_PSEL(UART_RX, 2, 4)>,
				<NRF_PSEL(UART_CTS, 2, 5)>;
		};
	};

	/omit-if-no-ref/ uart136_sleep: uart136_sleep {
		group1 {
			low-power-enable;
			psels = <NRF_PSEL(UART_TX, 2, 6)>,
				<NRF_PSEL(UART_RX, 2, 4)>,
				<NRF_PSEL(UART_RTS, 2, 7)>,
				<NRF_PSEL(UART_CTS, 2, 5)>;
		};
	};
};
