summaryrefslogtreecommitdiff
path: root/src/lib/hardwaremain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/hardwaremain.c')
-rw-r--r--src/lib/hardwaremain.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c
index 501591f114..fed153be48 100644
--- a/src/lib/hardwaremain.c
+++ b/src/lib/hardwaremain.c
@@ -24,6 +24,7 @@
#include <bootstate.h>
#include <console/console.h>
+#include <console/post_codes.h>
#include <version.h>
#include <device/device.h>
#include <device/pci.h>
@@ -83,6 +84,7 @@ struct boot_phase {
struct boot_state {
const char *name;
boot_state_t id;
+ u8 post_code;
struct boot_phase phases[2];
boot_state_t (*run_state)(void *arg);
void *arg;
@@ -96,6 +98,7 @@ struct boot_state {
{ \
.name = #state_, \
.id = state_, \
+ .post_code = POST_ ## state_, \
.phases = { { NULL, 0 }, { NULL, 0 } }, \
.run_state = run_func_, \
.arg = NULL, \
@@ -138,7 +141,6 @@ static boot_state_t bs_dev_enumerate(void *arg)
{
/* Find the devices we don't have hard coded knowledge about. */
dev_enumerate();
- post_code(POST_DEVICE_ENUMERATION_COMPLETE);
return BS_DEV_RESOURCES;
}
@@ -146,9 +148,9 @@ static boot_state_t bs_dev_enumerate(void *arg)
static boot_state_t bs_dev_resources(void *arg)
{
timestamp_add_now(TS_DEVICE_CONFIGURE);
+
/* Now compute and assign the bus resources. */
dev_configure();
- post_code(POST_DEVICE_CONFIGURATION_COMPLETE);
return BS_DEV_ENABLE;
}
@@ -156,9 +158,9 @@ static boot_state_t bs_dev_resources(void *arg)
static boot_state_t bs_dev_enable(void *arg)
{
timestamp_add_now(TS_DEVICE_ENABLE);
+
/* Now actually enable devices on the bus */
dev_enable();
- post_code(POST_DEVICES_ENABLED);
return BS_DEV_INIT;
}
@@ -166,9 +168,9 @@ static boot_state_t bs_dev_enable(void *arg)
static boot_state_t bs_dev_init(void *arg)
{
timestamp_add_now(TS_DEVICE_INITIALIZE);
+
/* And of course initialize devices on the bus */
dev_initialize();
- post_code(POST_DEVICES_INITIALIZED);
return BS_POST_DEVICE;
}
@@ -194,7 +196,6 @@ static boot_state_t bs_os_resume_check(void *arg)
boot_states[BS_OS_RESUME].arg = wake_vector;
return BS_OS_RESUME;
}
- post_code(0x8a);
#endif
timestamp_add_now(TS_CBMEM_POST);
@@ -376,6 +377,8 @@ static void bs_walk_state_machine(void)
bs_sample_time(state);
+ post_code(state->post_code);
+
next_id = state->run_state(state->arg);
printk(BS_DEBUG_LVL, "BS: Exiting %s state.\n", state->name);