/*
 * Copyright (c) 2023 Raytac Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

&pinctrl {
	i2c1_default: i2c1_default {
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 1, 2)>,
				<NRF_PSEL(TWIM_SCL, 1, 3)>;
		};
	};

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

	uart0_default: uart0_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 31)>,
				<NRF_PSEL(UART_RX, 1, 11)>,
				<NRF_PSEL(UART_RTS, 1, 13)>,
				<NRF_PSEL(UART_CTS, 1, 12)>;
		};
	};

	uart0_sleep: uart0_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 31)>,
				<NRF_PSEL(UART_RX, 1, 11)>,
				<NRF_PSEL(UART_RTS, 1, 13)>,
				<NRF_PSEL(UART_CTS, 1, 12)>;
			low-power-enable;
		};
	};

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

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

	pwm0_default: pwm0_default {
		group1 {
			psels = <NRF_PSEL(PWM_OUT0, 0, 28)>;
		};
	};

	pwm0_sleep: pwm0_sleep {
		group1 {
			psels = <NRF_PSEL(PWM_OUT0, 0, 28)>;
			low-power-enable;
		};
	};

	qspi_default: qspi_default {
		group1 {
			psels = <NRF_PSEL(QSPI_SCK, 0, 17)>,
				<NRF_PSEL(QSPI_IO0, 0, 13)>,
				<NRF_PSEL(QSPI_IO1, 0, 14)>,
				<NRF_PSEL(QSPI_IO2, 0, 15)>,
				<NRF_PSEL(QSPI_IO3, 0, 16)>,
				<NRF_PSEL(QSPI_CSN, 0, 18)>;
		};
	};

	qspi_sleep: qspi_sleep {
		group1 {
			psels = <NRF_PSEL(QSPI_SCK, 0, 17)>,
				<NRF_PSEL(QSPI_IO0, 0, 13)>,
				<NRF_PSEL(QSPI_IO1, 0, 14)>,
				<NRF_PSEL(QSPI_IO2, 0, 15)>,
				<NRF_PSEL(QSPI_IO3, 0, 16)>,
				<NRF_PSEL(QSPI_CSN, 0, 18)>;
			low-power-enable;
		};
	};

	spi4_default: spi4_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 8)>,
				<NRF_PSEL(SPIM_MISO, 0, 10)>,
				<NRF_PSEL(SPIM_MOSI, 0, 9)>;
		};
	};

	spi4_sleep: spi4_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 0, 8)>,
				<NRF_PSEL(SPIM_MISO, 0, 10)>,
				<NRF_PSEL(SPIM_MOSI, 0, 9)>;
			low-power-enable;
		};
	};

};
