OMAP3: mt_ventoux: disable the buzzer at start-up
[oweals/u-boot.git] / include / bootstage.h
index a828f5c83d4a6dec146316bb7deff4bb540e44d8..a00053888f6f489ac57bb92e955508013f55be71 100644 (file)
 #ifndef _BOOTSTAGE_H
 #define _BOOTSTAGE_H
 
+/* The number of boot stage records available for the user */
+#ifndef CONFIG_BOOTSTAGE_USER_COUNT
+#define CONFIG_BOOTSTAGE_USER_COUNT    20
+#endif
+
 /*
  * A list of boot stages that we know about. Each of these indicates the
  * state that we are at, and the action that we are about to perform. For
@@ -91,8 +96,120 @@ enum bootstage_id {
        BOOTSTAGE_ID_BOARD_DONE,        /* Board init done, off to main loop */
        /* ^^^ here ends the x86 sequence */
 
+       /* Boot stages related to loading a kernel from an IDE device */
+       BOOTSTAGE_ID_IDE_START = 41,
+       BOOTSTAGE_ID_IDE_ADDR,
+       BOOTSTAGE_ID_IDE_BOOT_DEVICE,
+       BOOTSTAGE_ID_IDE_TYPE,
+
+       BOOTSTAGE_ID_IDE_PART,
+       BOOTSTAGE_ID_IDE_PART_INFO,
+       BOOTSTAGE_ID_IDE_PART_TYPE,
+       BOOTSTAGE_ID_IDE_PART_READ,
+       BOOTSTAGE_ID_IDE_FORMAT,
+
+       BOOTSTAGE_ID_IDE_CHECKSUM,      /* 50 */
+       BOOTSTAGE_ID_IDE_READ,
+
+       /* Boot stages related to loading a kernel from an NAND device */
+       BOOTSTAGE_ID_NAND_PART,
+       BOOTSTAGE_ID_NAND_SUFFIX,
+       BOOTSTAGE_ID_NAND_BOOT_DEVICE,
+       BOOTSTAGE_ID_NAND_HDR_READ = 55,
+       BOOTSTAGE_ID_NAND_AVAILABLE = 55,
+       BOOTSTAGE_ID_NAND_TYPE = 57,
+       BOOTSTAGE_ID_NAND_READ,
+
+       /* Boot stages related to loading a kernel from an network device */
+       BOOTSTAGE_ID_NET_CHECKSUM = 60,
+       BOOTSTAGE_ID_NET_ETH_START = 64,
+       BOOTSTAGE_ID_NET_ETH_INIT,
+
+       BOOTSTAGE_ID_NET_START = 80,
+       BOOTSTAGE_ID_NET_NETLOOP_OK,
+       BOOTSTAGE_ID_NET_LOADED,
+       BOOTSTAGE_ID_NET_DONE_ERR,
+       BOOTSTAGE_ID_NET_DONE,
+
+       /*
+        * Boot stages related to loading a FIT image. Some of these are a
+        * bit wonky.
+        */
+       BOOTSTAGE_ID_FIT_FORMAT = 100,
+       BOOTSTAGE_ID_FIT_NO_UNIT_NAME,
+       BOOTSTAGE_ID_FIT_UNIT_NAME,
+       BOOTSTAGE_ID_FIT_CONFIG,
+       BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE,
+       BOOTSTAGE_ID_FIT_CHECK_HASH = 104,
+
+       BOOTSTAGE_ID_FIT_CHECK_ARCH,
+       BOOTSTAGE_ID_FIT_CHECK_KERNEL,
+       BOOTSTAGE_ID_FIT_CHECKED,
+
+       BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR = 107,
+       BOOTSTAGE_ID_FIT_KERNEL_INFO,
+       BOOTSTAGE_ID_FIT_TYPE,
+
+       BOOTSTAGE_ID_FIT_COMPRESSION,
+       BOOTSTAGE_ID_FIT_OS,
+       BOOTSTAGE_ID_FIT_LOADADDR,
+       BOOTSTAGE_ID_OVERWRITTEN,
+
+       BOOTSTAGE_ID_FIT_RD_FORMAT = 120,
+       BOOTSTAGE_ID_FIT_RD_FORMAT_OK,
+       BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME,
+       BOOTSTAGE_ID_FIT_RD_UNIT_NAME,
+       BOOTSTAGE_ID_FIT_RD_SUBNODE,
+
+       BOOTSTAGE_ID_FIT_RD_CHECK,
+       BOOTSTAGE_ID_FIT_RD_HASH = 125,
+       BOOTSTAGE_ID_FIT_RD_CHECK_ALL,
+       BOOTSTAGE_ID_FIT_RD_GET_DATA,
+       BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK = 127,
+       BOOTSTAGE_ID_FIT_RD_GET_DATA_OK,
+       BOOTSTAGE_ID_FIT_RD_LOAD,
+
+       BOOTSTAGE_ID_IDE_FIT_READ = 140,
+       BOOTSTAGE_ID_IDE_FIT_READ_OK,
+
+       BOOTSTAGE_ID_NAND_FIT_READ = 150,
+       BOOTSTAGE_ID_NAND_FIT_READ_OK,
+
+       /*
+        * These boot stages are new, higher level, and not directly related
+        * to the old boot progress numbers. They are useful for recording
+        * rough boot timing information.
+        */
+       BOOTSTAGE_ID_AWAKE,
+       BOOTSTAGE_ID_START_UBOOT_F,
+       BOOTSTAGE_ID_START_UBOOT_R,
+       BOOTSTAGE_ID_USB_START,
+       BOOTSTAGE_ID_ETH_START,
+       BOOTSTAGE_ID_BOOTP_START,
+       BOOTSTAGE_ID_BOOTP_STOP,
+       BOOTSTAGE_ID_BOOTM_START,
+       BOOTSTAGE_ID_BOOTM_HANDOFF,
+       BOOTSTAGE_ID_MAIN_LOOP,
+       BOOTSTAGE_KERNELREAD_START,
+       BOOTSTAGE_KERNELREAD_STOP,
+
+       BOOTSTAGE_ID_CPU_AWAKE,
+       BOOTSTAGE_ID_MAIN_CPU_AWAKE,
+       BOOTSTAGE_ID_MAIN_CPU_READY,
+
+       /* a few spare for the user, from here */
+       BOOTSTAGE_ID_USER,
+       BOOTSTAGE_ID_COUNT = BOOTSTAGE_ID_USER + CONFIG_BOOTSTAGE_USER_COUNT,
+       BOOTSTAGE_ID_ALLOC,
 };
 
+/*
+ * Return the time since boot in microseconds, This is needed for bootstage
+ * and should be defined in CPU- or board-specific code. If undefined then
+ * millisecond resolution will be used (the standard get_timer()).
+ */
+ulong timer_get_boot_us(void);
+
 /*
  * Board code can implement show_boot_progress() if needed.
  *
@@ -100,9 +217,46 @@ enum bootstage_id {
  *             has occurred.
  */
 void show_boot_progress(int val);
-static inline void show_boot_error(int val)
+
+#ifdef CONFIG_BOOTSTAGE
+/* This is the full bootstage implementation */
+
+/*
+ * Mark a time stamp for the current boot stage.
+ */
+ulong bootstage_mark(enum bootstage_id id);
+
+ulong bootstage_error(enum bootstage_id id);
+
+ulong bootstage_mark_name(enum bootstage_id id, const char *name);
+
+/* Print a report about boot time */
+void bootstage_report(void);
+
+#else
+/*
+ * This is a dummy implementation which just calls show_boot_progress(),
+ * and won't even do that unless CONFIG_SHOW_BOOT_PROGRESS is defined
+ */
+
+static inline ulong bootstage_mark(enum bootstage_id id)
+{
+       show_boot_progress(id);
+       return 0;
+}
+
+static inline ulong bootstage_error(enum bootstage_id id)
 {
-       show_boot_progress(-val);
+       show_boot_progress(-id);
+       return 0;
 }
 
+static inline ulong bootstage_mark_name(enum bootstage_id id, const char *name)
+{
+       return 0;
+}
+
+
+#endif /* CONFIG_BOOTSTAGE */
+
 #endif