Skip to content

Commit 1b70a1c

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 1b70a1c

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

soc/nordic/nrf53/soc.c

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

5656
/* LFXO config from DT */
57+
#if DT_NODE_HAS_STATUS_OKAY(LFXO_NODE)
58+
BUILD_ASSERT(DT_NODE_HAS_PROP(LFXO_NODE, load_capacitors));
5759
#if DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, external)
5860
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_EXTERNAL
5961
#elif DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, internal)
6062
#define LFXO_CAP (DT_ENUM_IDX(LFXO_NODE, load_capacitance_picofarad) + 1U)
61-
#else
62-
/* LFXO config from legacy Kconfig */
63-
#if defined(CONFIG_SOC_LFXO_CAP_INT_6PF)
64-
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_6PF
65-
#elif defined(CONFIG_SOC_LFXO_CAP_INT_7PF)
66-
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_7PF
67-
#elif defined(CONFIG_SOC_LFXO_CAP_INT_9PF)
68-
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_9PF
69-
#else
70-
#define LFXO_CAP NRF_OSCILLATORS_LFXO_CAP_EXTERNAL
71-
#endif
72-
#endif
63+
#endif /*DT_ENUM_HAS_VALUE(LFXO_NODE, load_capacitors, external) */
64+
#endif /* DT_NODE_HAS_STATUS_OKAY(LFXO_NODE) */
7365

7466
/* HFXO config from DT */
7567
#if DT_ENUM_HAS_VALUE(HFXO_NODE, load_capacitors, internal)
@@ -496,7 +488,7 @@ void soc_early_init_hook(void)
496488
#endif
497489

498490
#ifdef CONFIG_SOC_NRF5340_CPUAPP
499-
#if defined(LFXO_CAP)
491+
#if DT_NODE_HAS_STATUS_OKAY(LFXO_NODE)
500492
nrf_oscillators_lfxo_cap_set(NRF_OSCILLATORS, LFXO_CAP);
501493
#if !defined(CONFIG_BUILD_WITH_TFM)
502494
/* This can only be done from secure code.
@@ -506,7 +498,10 @@ void soc_early_init_hook(void)
506498
nrf_gpio_pin_control_select(PIN_XL1, NRF_GPIO_PIN_SEL_PERIPHERAL);
507499
nrf_gpio_pin_control_select(PIN_XL2, NRF_GPIO_PIN_SEL_PERIPHERAL);
508500
#endif /* !defined(CONFIG_BUILD_WITH_TFM) */
509-
#endif /* defined(LFXO_CAP) */
501+
#elif !defined(CONFIG_BUILD_WITH_TFM)
502+
nrf_gpio_pin_control_select(PIN_XL1, NRF_GPIO_PIN_SEL_APP);
503+
nrf_gpio_pin_control_select(PIN_XL2, NRF_GPIO_PIN_SEL_APP);
504+
#endif /* DT_NODE_HAS_STATUS_OKAY(LFXO_NODE) */
510505
#if defined(HFXO_CAP_VAL_X2)
511506
/* This register is only accessible from secure code. */
512507
uint32_t xosc32mtrim = soc_secure_read_xosc32mtrim();

0 commit comments

Comments
 (0)