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

&pinctrl {
	uart0_default: uart0_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 11)>,
				<NRF_PSEL(UART_RX, 0, 30)>;
		};
	};

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

	i2c0_default: i2c0_default {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 6)>,
				<NRF_PSEL(TWIM_SCL, 0, 7)>;
		};
	};

	i2c0_sleep: i2c0_sleep {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 6)>,
				<NRF_PSEL(TWIM_SCL, 0, 7)>;
			low-power-enable;
		};
	};

	spi1_default: spi1_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 2)>,
				<NRF_PSEL(SPIM_MOSI, 0, 3)>,
				<NRF_PSEL(SPIM_MISO, 0, 4)>;
		};
	};

	spi1_sleep: spi1_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 2)>,
				<NRF_PSEL(SPIM_MOSI, 0, 3)>,
				<NRF_PSEL(SPIM_MISO, 0, 4)>;
			low-power-enable;
		};
	};

};
