|
16 | 16 | #endif /* CONFIG_FEM */ |
17 | 17 |
|
18 | 18 | #include <zephyr/kernel.h> |
19 | | -#if defined(CONFIG_CLOCK_CONTROL_NRF) |
20 | 19 | #include <zephyr/drivers/clock_control.h> |
21 | 20 | #include <zephyr/drivers/clock_control/nrf_clock_control.h> |
22 | | -#endif /* #if defined(CONFIG_CLOCK_CONTROL_NRF) */ |
23 | 21 | #include <zephyr/sys/__assert.h> |
24 | 22 | #if !(defined(CONFIG_SOC_SERIES_NRF54HX) || defined(CONFIG_SOC_SERIES_NRF54LX)) |
25 | 23 | #include <hal/nrf_nvmc.h> |
|
28 | 26 | #include <hal/nrf_egu.h> |
29 | 27 | #include <hal/nrf_radio.h> |
30 | 28 |
|
| 29 | +#if defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 30 | +#include <hal/nrf_lrcconf.h> |
| 31 | +#endif |
| 32 | + |
31 | 33 | #ifdef NRF53_SERIES |
32 | 34 | #include <hal/nrf_vreqctrl.h> |
33 | 35 | #endif /* NRF53_SERIES */ |
@@ -671,7 +673,43 @@ static int clock_init(void) |
671 | 673 |
|
672 | 674 | return err; |
673 | 675 | } |
674 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
| 676 | + |
| 677 | +#elif defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 678 | + |
| 679 | +int clock_init(void) |
| 680 | +{ |
| 681 | + int err; |
| 682 | + int res; |
| 683 | + const struct device *radio_clk_dev = |
| 684 | + DEVICE_DT_GET_OR_NULL(DT_CLOCKS_CTLR(DT_NODELABEL(radio))); |
| 685 | + struct onoff_client radio_cli; |
| 686 | + |
| 687 | + /** Keep radio domain powered all the time to reduce latency. */ |
| 688 | + nrf_lrcconf_poweron_force_set(NRF_LRCCONF010, NRF_LRCCONF_POWER_DOMAIN_1, true); |
| 689 | + |
| 690 | + sys_notify_init_spinwait(&radio_cli.notify); |
| 691 | + |
| 692 | + err = nrf_clock_control_request(radio_clk_dev, NULL, &radio_cli); |
| 693 | + |
| 694 | + do { |
| 695 | + err = sys_notify_fetch_result(&radio_cli.notify, &res); |
| 696 | + if (!err && res) { |
| 697 | + printk("Clock could not be started: %d\n", res); |
| 698 | + return res; |
| 699 | + } |
| 700 | + } while (err == -EAGAIN); |
| 701 | + |
| 702 | +#if defined(NRF54L15_XXAA) |
| 703 | + /* MLTPAN-20 */ |
| 704 | + nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_PLLSTART); |
| 705 | +#endif /* defined(NRF54L15_XXAA) */ |
| 706 | + |
| 707 | + return 0; |
| 708 | +} |
| 709 | + |
| 710 | +#else |
| 711 | +BUILD_ASSERT(false, "No Clock Control driver"); |
| 712 | +#endif /* defined(CONFIG_CLOCK_CONTROL_NRF2) */ |
675 | 713 |
|
676 | 714 | static int timer_init(void) |
677 | 715 | { |
@@ -1102,12 +1140,10 @@ int dtm_init(dtm_iq_report_callback_t callback) |
1102 | 1140 | { |
1103 | 1141 | int err; |
1104 | 1142 |
|
1105 | | -#if defined(CONFIG_CLOCK_CONTROL_NRF) |
1106 | 1143 | err = clock_init(); |
1107 | 1144 | if (err) { |
1108 | 1145 | return err; |
1109 | 1146 | } |
1110 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
1111 | 1147 |
|
1112 | 1148 | #if defined(CONFIG_SOC_SERIES_NRF54HX) |
1113 | 1149 | /* Apply HMPAN-102 workaround for nRF54H series */ |
|
0 commit comments