diff --git a/module/power_domain/src/mod_power_domain.c b/module/power_domain/src/mod_power_domain.c index 19a4713fdc2e7b4941c81b51521a2c34f28ad00c..d983993371e8369a5d600907ead5257e4ad3deee 100644 --- a/module/power_domain/src/mod_power_domain.c +++ b/module/power_domain/src/mod_power_domain.c @@ -836,17 +836,6 @@ static void process_set_state_request(struct pd_ctx *lowest_pd, if (pd->state_requested_to_driver == state) continue; - /* - * The driver must be called thus the processing of the set state - * request is going to be asynchronous. Assign the responsability of - * the response to the request to the power domain. If there is no - * need for a driver call for the ancestors or descendants of the power - * domain as part of the processing of the requested composite state, - * the response to the request will be sent when the transition to the - * new requested power state is completed. - */ - pd_in_charge_of_response = pd; - /* * If a power state transition has already been initiated for an * ancestor or descendant, we don't initiate the power state transition @@ -873,7 +862,20 @@ static void process_set_state_request(struct pd_ctx *lowest_pd, continue; status = initiate_power_state_transition(pd); - first_power_state_transition_initiated = (status == FWK_SUCCESS); + + if (status == FWK_SUCCESS) { + /* + * The driver must be called thus the processing of the set state + * request is going to be asynchronous. Assign the responsibility + * of the response to the request to the power domain. If there is + * no need for a driver call for the ancestors or descendants of + * the power domain as part of the processing of the requested + * composite state, the response to the request will be sent when + * the transition to the new requested power state is completed. + */ + pd_in_charge_of_response = pd; + first_power_state_transition_initiated = true; + } } if (!resp_event->response_requested)