I believe it started with SDK 2.0.0 but the board config files now define different ways to specify how hardware is to run.
&pinctrl { uart1_default: uart1_default { group1 { psels = <NRF_PSEL(UART_TX, 0, 26)>, <NRF_PSEL(UART_RTS, 0, 29)>; }; group2 { psels = <NRF_PSEL(UART_RX, 0, 27)>, <NRF_PSEL(UART_CTS, 0, 28)>; bias-pull-up; }; }; uart1_sleep: uart1_sleep { group1 { psels = <NRF_PSEL(UART_TX, 0, 26)>, <NRF_PSEL(UART_RX, 0, 27)>, <NRF_PSEL(UART_RTS, 0, 29)>, <NRF_PSEL(UART_CTS, 0, 28)>; low-power-enable; }; }; &uart1 { status = "okay"; pinctrl-0 = <&uart1_default_alt>; pinctrl-1 = <&uart1_sleep_alt>; pinctrl-names = "default", "sleep"; };
I took this to mean that I can dynamically toggle these configurations from "uart1_default" to "uart1_sleep" from perhaps a function call. Did find the pinctrl_apply_state() function call but it's return a -2 that state id doesn't exist even though it is defined. Here's my code.