Skip to content

Commit 877bc15

Browse files
committed
soc: nordic: nrf53: assign pin xl1,xl2 to app core if lfxo disabled
Fixes #92663 Disabled LFXO via devicetree or kconfig allows pin 0.00 and 0.01 to work correctly as gpio by assigning it to the app core instead of peripheral. Signed-off-by: Ivy Lu <[email protected]>
1 parent fdd02c5 commit 877bc15

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

soc/nordic/nrf53/soc.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@
5454
#define HFXO_NODE DT_NODELABEL(hfxo)
5555

5656
/* LFXO config from DT */
57+
#if DT_NODE_HAS_STATUS_OKAY(LFXO_NODE) && defined(CONFIG_SOC_ENABLE_LFXO)
5758
#if DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, external)
5859
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_EXTERNAL
5960
#elif DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, internal)
6061
#define LFXO_CAP (DT_ENUM_IDX(LFXO_NODE, load_capacitance_picofarad) + 1U)
61-
#else
62+
#endif /*DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, external) */
63+
#elif !DT_NODE_HAS_STATUS(LFXO_NODE, disabled) && defined(CONFIG_SOC_ENABLE_LFXO)
6264
/* LFXO config from legacy Kconfig */
6365
#if defined(CONFIG_SOC_LFXO_CAP_INT_6PF)
6466
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_6PF
@@ -68,8 +70,8 @@
6870
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_9PF
6971
#else
7072
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_EXTERNAL
71-
#endif
72-
#endif
73+
#endif /* defined(CONFIG_SOC_LFXO_CAP_INT_6PF) */
74+
#endif /* DT_NODE_HAS_STATUS_OKAY(LFXO_NODE) */
7375

7476
/* HFXO config from DT */
7577
#if DT_ENUM_HAS_VALUE(HFXO_NODE, load_capacitors, internal)
@@ -506,6 +508,14 @@ void soc_early_init_hook(void)
506508
nrf_gpio_pin_control_select(PIN_XL1, NRF_GPIO_PIN_SEL_PERIPHERAL);
507509
nrf_gpio_pin_control_select(PIN_XL2, NRF_GPIO_PIN_SEL_PERIPHERAL);
508510
#endif /* !defined(CONFIG_BUILD_WITH_TFM) */
511+
#else
512+
#if !defined(CONFIG_BUILD_WITH_TFM)
513+
/* This can only be done from secure code.
514+
* Assign XL1/XL2 as GPIO to app core if LFXO is disabled.
515+
*/
516+
nrf_gpio_pin_control_select(PIN_XL1, NRF_GPIO_PIN_SEL_APP);
517+
nrf_gpio_pin_control_select(PIN_XL2, NRF_GPIO_PIN_SEL_APP);
518+
#endif /* !defined(CONFIG_BUILD_WITH_TFM) */
509519
#endif /* defined(LFXO_CAP) */
510520
#if defined(HFXO_CAP_VAL_X2)
511521
/* This register is only accessible from secure code. */

0 commit comments

Comments
 (0)