|
5 | 5 | */ |
6 | 6 |
|
7 | 7 | #include <zephyr/sys/printk.h> |
8 | | -#if defined(CONFIG_CLOCK_CONTROL_NRF) |
9 | 8 | #include <zephyr/drivers/clock_control.h> |
10 | 9 | #include <zephyr/drivers/clock_control/nrf_clock_control.h> |
11 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
12 | 10 | #if defined(NRF54L15_XXAA) |
13 | 11 | #include <hal/nrf_clock.h> |
14 | 12 | #endif /* defined(NRF54L15_XXAA) */ |
| 13 | +#if defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 14 | +#include <hal/nrf_lrcconf.h> |
| 15 | +#endif |
15 | 16 |
|
16 | 17 | #if defined(CONFIG_CLOCK_CONTROL_NRF) |
17 | 18 | static void clock_init(void) |
@@ -50,15 +51,49 @@ static void clock_init(void) |
50 | 51 |
|
51 | 52 | printk("Clock has started\n"); |
52 | 53 | } |
| 54 | + |
| 55 | +#elif defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 56 | + |
| 57 | +static void clock_init(void) |
| 58 | +{ |
| 59 | + int err; |
| 60 | + int res; |
| 61 | + const struct device *radio_clk_dev = |
| 62 | + DEVICE_DT_GET_OR_NULL(DT_CLOCKS_CTLR(DT_NODELABEL(radio))); |
| 63 | + struct onoff_client radio_cli; |
| 64 | + |
| 65 | + /** Keep radio domain powered all the time to reduce latency. */ |
| 66 | + nrf_lrcconf_poweron_force_set(NRF_LRCCONF010, NRF_LRCCONF_POWER_DOMAIN_1, true); |
| 67 | + |
| 68 | + sys_notify_init_spinwait(&radio_cli.notify); |
| 69 | + |
| 70 | + err = nrf_clock_control_request(radio_clk_dev, NULL, &radio_cli); |
| 71 | + |
| 72 | + do { |
| 73 | + err = sys_notify_fetch_result(&radio_cli.notify, &res); |
| 74 | + if (!err && res) { |
| 75 | + printk("Clock could not be started: %d\n", res); |
| 76 | + return; |
| 77 | + } |
| 78 | + } while (err == -EAGAIN); |
| 79 | + |
| 80 | +#if defined(NRF54L15_XXAA) |
| 81 | + /* MLTPAN-20 */ |
| 82 | + nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_PLLSTART); |
| 83 | +#endif /* defined(NRF54L15_XXAA) */ |
| 84 | + |
| 85 | + printk("Clock has started\n"); |
| 86 | +} |
| 87 | + |
| 88 | +#else |
| 89 | +BUILD_ASSERT(false, "No Clock Control driver"); |
53 | 90 | #endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
54 | 91 |
|
55 | 92 | int main(void) |
56 | 93 | { |
57 | 94 | printk("Starting Radio Test example\n"); |
58 | 95 |
|
59 | | -#if defined(CONFIG_CLOCK_CONTROL_NRF) |
60 | 96 | clock_init(); |
61 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
62 | 97 |
|
63 | 98 | #if defined(CONFIG_SOC_SERIES_NRF54HX) |
64 | 99 | /* Apply HMPAN-102 workaround for nRF54H series */ |
|
0 commit comments