|
5 | 5 | */ |
6 | 6 | #include <zephyr/device.h> |
7 | 7 | #include <zephyr/devicetree.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) */ |
|
20 | 18 | #include <zephyr/kernel.h> |
21 | 19 | #include <zephyr/types.h> |
22 | 20 | #include <dk_buttons_and_leds.h> |
| 21 | +#if defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 22 | +#include <hal/nrf_lrcconf.h> |
| 23 | +#endif |
23 | 24 |
|
24 | 25 | LOG_MODULE_REGISTER(esb_prx, CONFIG_ESB_PRX_APP_LOG_LEVEL); |
25 | 26 |
|
@@ -104,7 +105,45 @@ int clocks_start(void) |
104 | 105 | LOG_DBG("HF clock started"); |
105 | 106 | return 0; |
106 | 107 | } |
107 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
| 108 | + |
| 109 | +#elif defined(CONFIG_CLOCK_CONTROL_NRF2) |
| 110 | + |
| 111 | +int clocks_start(void) |
| 112 | +{ |
| 113 | + int err; |
| 114 | + int res; |
| 115 | + const struct device *radio_clk_dev = |
| 116 | + DEVICE_DT_GET_OR_NULL(DT_CLOCKS_CTLR(DT_NODELABEL(radio))); |
| 117 | + struct onoff_client radio_cli; |
| 118 | + |
| 119 | + /** Keep radio domain powered all the time to reduce latency. */ |
| 120 | + nrf_lrcconf_poweron_force_set(NRF_LRCCONF010, NRF_LRCCONF_POWER_DOMAIN_1, true); |
| 121 | + |
| 122 | + sys_notify_init_spinwait(&radio_cli.notify); |
| 123 | + |
| 124 | + err = nrf_clock_control_request(radio_clk_dev, NULL, &radio_cli); |
| 125 | + |
| 126 | + do { |
| 127 | + err = sys_notify_fetch_result(&radio_cli.notify, &res); |
| 128 | + if (!err && res) { |
| 129 | + LOG_ERR("Clock could not be started: %d", res); |
| 130 | + return res; |
| 131 | + } |
| 132 | + } while (err == -EAGAIN); |
| 133 | + |
| 134 | +#if defined(NRF54L15_XXAA) |
| 135 | + /* MLTPAN-20 */ |
| 136 | + nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_PLLSTART); |
| 137 | +#endif /* defined(NRF54L15_XXAA) */ |
| 138 | + |
| 139 | + LOG_DBG("HF clock started"); |
| 140 | + |
| 141 | + return 0; |
| 142 | +} |
| 143 | + |
| 144 | +#else |
| 145 | +BUILD_ASSERT(false, "No Clock Control driver"); |
| 146 | +#endif /* defined(CONFIG_CLOCK_CONTROL_NRF2) */ |
108 | 147 |
|
109 | 148 | int esb_initialize(void) |
110 | 149 | { |
@@ -156,12 +195,10 @@ int main(void) |
156 | 195 |
|
157 | 196 | LOG_INF("Enhanced ShockBurst prx sample"); |
158 | 197 |
|
159 | | -#if defined(CONFIG_CLOCK_CONTROL_NRF) |
160 | 198 | err = clocks_start(); |
161 | 199 | if (err) { |
162 | 200 | return 0; |
163 | 201 | } |
164 | | -#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ |
165 | 202 |
|
166 | 203 | err = dk_leds_init(); |
167 | 204 | if (err) { |
|
0 commit comments