soc/intel/common/block/cse: Simplify CSE final ops
Looks like the `notify_data` struct array idea comes from the FSP 2.0 notify driver, which has a similar struct but with several additional fields. However, there's no need for this mechanism in the CSE driver because the struct only contains a condition (boolean) and a function to execute, which can be expressed as a regular if-block. Change-Id: I65fcb2fc02ea16b37c764f1fd69bdff3382fad18 Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/63708 Reviewed-by: Subrata Banik <subratabanik@google.com> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
37d93dc488
commit
28315f8204
|
@ -1195,11 +1195,6 @@ static void cse_set_state(struct device *dev)
|
||||||
me_reset_with_count();
|
me_reset_with_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cse_notify_phase_data {
|
|
||||||
bool skip;
|
|
||||||
void (*notify_func)(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* `cse_final_ready_to_boot` function is native implementation of equivalent events
|
* `cse_final_ready_to_boot` function is native implementation of equivalent events
|
||||||
* performed by FSP NotifyPhase(Ready To Boot) API invocations.
|
* performed by FSP NotifyPhase(Ready To Boot) API invocations.
|
||||||
|
@ -1235,27 +1230,17 @@ static void cse_final_end_of_firmware(void)
|
||||||
heci_set_to_d0i3();
|
heci_set_to_d0i3();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct cse_notify_phase_data notify_data[] = {
|
|
||||||
{
|
|
||||||
.skip = CONFIG(USE_FSP_NOTIFY_PHASE_READY_TO_BOOT),
|
|
||||||
.notify_func = cse_final_ready_to_boot,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.skip = CONFIG(USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE),
|
|
||||||
.notify_func = cse_final_end_of_firmware,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* `cse_final` function is native implementation of equivalent events performed by
|
* `cse_final` function is native implementation of equivalent events performed by
|
||||||
* each FSP NotifyPhase() API invocations.
|
* each FSP NotifyPhase() API invocations.
|
||||||
*/
|
*/
|
||||||
static void cse_final(struct device *dev)
|
static void cse_final(struct device *dev)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < ARRAY_SIZE(notify_data); i++) {
|
if (!CONFIG(USE_FSP_NOTIFY_PHASE_READY_TO_BOOT))
|
||||||
if (!notify_data[i].skip)
|
cse_final_ready_to_boot();
|
||||||
notify_data[i].notify_func();
|
|
||||||
}
|
if (!CONFIG(USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE))
|
||||||
|
cse_final_end_of_firmware();
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_operations cse_ops = {
|
static struct device_operations cse_ops = {
|
||||||
|
|
Loading…
Reference in New Issue