Skip to content

Commit a415e2d

Browse files
bjarki-andreasencarlescufi
authored andcommitted
Revert "[nrf fromtree] modules: hal_nordic: dvfs: added callback when scaling done"
This reverts commit 05c6a7c. Signed-off-by: Bjarki Arge Andreasen <[email protected]>
1 parent dd1c96c commit a415e2d

File tree

3 files changed

+13
-92
lines changed

3 files changed

+13
-92
lines changed

modules/hal_nordic/nrfs/dvfs/Kconfig

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ config NRFS_LOCAL_DOMAIN_DOWNSCALE_SAFETY_TIMEOUT_US
2626
default 1000000 if (NRFS_LOCAL_DOMAIN_DVFS_TEST || LOG)
2727
default 1500
2828

29-
config NRFS_LOCAL_DOMAIN_DOWNSCALE_FINISH_DELAY_TIMEOUT_US
30-
int "Additional delay to let secdom finish dowscale procedure in us"
31-
range 1 10000000
32-
default 1000
33-
3429
config NRFS_LOCAL_DOMAIN_DVFS_HANDLER_TASK_STACK_SIZE
3530
int "Stack size used for DVFS handling task"
3631
range 256 2048

modules/hal_nordic/nrfs/dvfs/ld_dvfs_handler.c

Lines changed: 12 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ static K_SEM_DEFINE(dvfs_service_sync_sem, 0, 1);
1919
static K_SEM_DEFINE(dvfs_service_idle_sem, 0, 1);
2020

2121
#define DVFS_SERV_HDL_INIT_DONE_BIT_POS (0)
22-
#define DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS (1)
22+
#define DVFS_SERV_HDL_FREQ_CHANGE_IN_PROGRESS_BIT_POS (1)
2323

2424
static atomic_t dvfs_service_handler_state_bits;
25-
static volatile enum dvfs_frequency_setting current_freq_setting;
26-
static volatile enum dvfs_frequency_setting requested_freq_setting;
27-
static dvfs_service_handler_callback dvfs_frequency_change_applied_clb;
25+
static enum dvfs_frequency_setting current_freq_setting;
2826

2927
static void dvfs_service_handler_set_state_bit(uint32_t bit_pos)
3028
{
@@ -46,9 +44,9 @@ static bool dvfs_service_handler_init_done(void)
4644
return dvfs_service_handler_get_state_bit(DVFS_SERV_HDL_INIT_DONE_BIT_POS);
4745
}
4846

49-
static bool dvfs_service_handler_freq_change_req_pending(void)
47+
static bool dvfs_service_handler_freq_change_in_progress(void)
5048
{
51-
return dvfs_service_handler_get_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS);
49+
return dvfs_service_handler_get_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_IN_PROGRESS_BIT_POS);
5250
}
5351

5452
static void dvfs_service_handler_nrfs_error_check(nrfs_err_t err)
@@ -89,12 +87,6 @@ static enum dvfs_frequency_setting dvfs_service_handler_get_current_oppoint(void
8987
return current_freq_setting;
9088
}
9189

92-
static enum dvfs_frequency_setting dvfs_service_handler_get_requested_oppoint(void)
93-
{
94-
LOG_DBG("Requested LD freq setting: %d", requested_freq_setting);
95-
return requested_freq_setting;
96-
}
97-
9890
/* Function to check if current operation is down-scaling */
9991
static bool dvfs_service_handler_is_downscaling(enum dvfs_frequency_setting target_freq_setting)
10092
{
@@ -151,12 +143,7 @@ static void dvfs_service_handler_scaling_finish(enum dvfs_frequency_setting oppo
151143
dvfs_service_handler_error(err);
152144
}
153145
}
154-
dvfs_service_handler_clear_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS);
155146
current_freq_setting = oppoint_freq;
156-
LOG_DBG("Current LD freq setting: %d", current_freq_setting);
157-
if (dvfs_frequency_change_applied_clb) {
158-
dvfs_frequency_change_applied_clb(current_freq_setting);
159-
}
160147
}
161148

162149
/* Function to set hsfll to highest frequency when switched to ABB. */
@@ -165,29 +152,11 @@ static void dvfs_service_handler_set_initial_hsfll_config(void)
165152
int32_t err = ld_dvfs_configure_hsfll(DVFS_FREQ_HIGH);
166153

167154
current_freq_setting = DVFS_FREQ_HIGH;
168-
requested_freq_setting = DVFS_FREQ_HIGH;
169155
if (err != 0) {
170156
dvfs_service_handler_error(err);
171157
}
172158
}
173159

174-
/* Timer to add additional delay to finish downscale procedure when domain other than secure */
175-
#if !defined(NRF_SECURE)
176-
#define SCALING_FINISH_DELAY_TIMEOUT_US \
177-
K_USEC(CONFIG_NRFS_LOCAL_DOMAIN_DOWNSCALE_FINISH_DELAY_TIMEOUT_US)
178-
179-
static void dvfs_service_handler_scaling_finish_delay_timeout(struct k_timer *timer)
180-
{
181-
if (timer) {
182-
dvfs_service_handler_scaling_finish(
183-
*(enum dvfs_frequency_setting *)timer->user_data);
184-
}
185-
}
186-
187-
K_TIMER_DEFINE(dvfs_service_scaling_finish_delay_timer,
188-
dvfs_service_handler_scaling_finish_delay_timeout, NULL);
189-
#endif
190-
191160
/* DVFS event handler callback function.*/
192161
static void nrfs_dvfs_evt_handler(nrfs_dvfs_evt_t const *p_evt, void *context)
193162
{
@@ -213,13 +182,7 @@ static void nrfs_dvfs_evt_handler(nrfs_dvfs_evt_t const *p_evt, void *context)
213182
break;
214183
case NRFS_DVFS_EVT_OPPOINT_REQ_CONFIRMED:
215184
/* Optional confirmation from sysctrl, wait for oppoint.*/
216-
dvfs_service_handler_clear_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS);
217-
LOG_DBG("DVFS handler EVT_OPPOINT_REQ_CONFIRMED %d", (uint32_t)p_evt->freq);
218-
if (dvfs_service_handler_get_requested_oppoint() == p_evt->freq) {
219-
if (dvfs_frequency_change_applied_clb) {
220-
dvfs_frequency_change_applied_clb(p_evt->freq);
221-
}
222-
}
185+
LOG_DBG("DVFS handler EVT_OPPOINT_REQ_CONFIRMED");
223186
break;
224187
case NRFS_DVFS_EVT_OPPOINT_SCALING_PREPARE:
225188
/*Target oppoint will be received here.*/
@@ -233,20 +196,15 @@ static void nrfs_dvfs_evt_handler(nrfs_dvfs_evt_t const *p_evt, void *context)
233196
dvfs_service_handler_scaling_background_job(p_evt->freq);
234197
LOG_DBG("DVFS handler EVT_OPPOINT_SCALING_PREPARE handled");
235198
#if !defined(NRF_SECURE)
236-
/* Additional delay for downscale to finish on secdom side */
237-
static enum dvfs_frequency_setting freq;
238-
239-
freq = p_evt->freq;
240-
dvfs_service_scaling_finish_delay_timer.user_data = (void *)&freq;
241-
k_timer_start(&dvfs_service_scaling_finish_delay_timer,
242-
SCALING_FINISH_DELAY_TIMEOUT_US, K_NO_WAIT);
199+
current_freq_setting = p_evt->freq;
243200
} else {
244201
LOG_ERR("DVFS handler - unexpected EVT_OPPOINT_SCALING_PREPARE");
245202
}
246203
#endif
247204
break;
248205
case NRFS_DVFS_EVT_OPPOINT_SCALING_DONE:
249206
LOG_DBG("DVFS handler EVT_OPPOINT_SCALING_DONE");
207+
dvfs_service_handler_clear_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_IN_PROGRESS_BIT_POS);
250208
dvfs_service_handler_scaling_finish(p_evt->freq);
251209
LOG_DBG("DVFS handler EVT_OPPOINT_SCALING_DONE handled");
252210
break;
@@ -317,36 +275,18 @@ int32_t dvfs_service_handler_change_freq_setting(enum dvfs_frequency_setting fre
317275
return -EAGAIN;
318276
}
319277

320-
if (!dvfs_service_handler_freq_setting_allowed(freq_setting)) {
321-
LOG_ERR("Requested frequency setting %d not supported.", freq_setting);
322-
return -ENXIO;
323-
}
324-
325-
if (dvfs_service_handler_freq_change_req_pending()) {
326-
LOG_DBG("Frequency change request pending.");
278+
if (dvfs_service_handler_freq_change_in_progress()) {
279+
LOG_DBG("Frequency change in progress.");
327280
return -EBUSY;
328281
}
329282

330-
dvfs_service_handler_set_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS);
331-
requested_freq_setting = freq_setting;
283+
if (!dvfs_service_handler_freq_setting_allowed(freq_setting)) {
284+
return -ENXIO;
285+
}
332286

333287
nrfs_err_t status = nrfs_dvfs_oppoint_request(freq_setting, get_next_context());
334288

335-
if (status != NRFS_SUCCESS) {
336-
dvfs_service_handler_clear_state_bit(DVFS_SERV_HDL_FREQ_CHANGE_REQ_PENDING_BIT_POS);
337-
}
338-
339289
dvfs_service_handler_nrfs_error_check(status);
340290

341291
return status;
342292
}
343-
344-
void dvfs_service_handler_register_freq_setting_applied_callback(dvfs_service_handler_callback clb)
345-
{
346-
if (clb) {
347-
LOG_DBG("Registered frequency applied callback");
348-
dvfs_frequency_change_applied_clb = clb;
349-
} else {
350-
LOG_ERR("Invalid callback function provided!");
351-
}
352-
}

modules/hal_nordic/nrfs/dvfs/ld_dvfs_handler.h

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extern "C" {
1717
* @brief Function to request LD frequency change.
1818
*
1919
* @param frequency requested frequency setting from enum dvfs_frequency_setting.
20-
* @return EBUSY Frequency change request pending.
20+
* @return EBUSY Frequency change in progress.
2121
* @return EAGAIN DVFS init in progress.
2222
* @return ENXIO Not supported frequency settings.
2323
* @return NRFS_SUCCESS Request sent successfully.
@@ -26,20 +26,6 @@ extern "C" {
2626
*/
2727
int32_t dvfs_service_handler_change_freq_setting(enum dvfs_frequency_setting freq_setting);
2828

29-
/**
30-
* @brief Type to use as callback function in dvfs service
31-
*
32-
* @param new_setting applied frequency setting
33-
*/
34-
typedef void (*dvfs_service_handler_callback)(enum dvfs_frequency_setting new_setting);
35-
36-
/**
37-
* @brief Register callback function which will be called when new dvfs frequency is applied.
38-
*
39-
* @param clb dvfs_service_handler_callback to register
40-
*/
41-
void dvfs_service_handler_register_freq_setting_applied_callback(dvfs_service_handler_callback clb);
42-
4329
#ifdef __cplusplus
4430
}
4531
#endif

0 commit comments

Comments
 (0)