diff --git a/board/a4m072/a4m072.c b/board/a4m072/a4m072.c
index 9c272a0ec88e860a9cd47ab8fb23ba1b92536f61..ae7ccbb4e9dbbaff1daac139a06301b3da663c56 100644
--- a/board/a4m072/a4m072.c
+++ b/board/a4m072/a4m072.c
@@ -35,6 +35,7 @@
 #include <libfdt.h>
 #include <netdev.h>
 #include <led-display.h>
+#include <linux/err.h>
 
 #include "mt46v32m16.h"
 
@@ -410,18 +411,26 @@ int display_putc(char c)
 }
 
 /*
- * Output content of the software display buffer to the LED display every 0.5s
+ * Flush current symbol to the LED display hardware
+ */
+static inline void display_flush(void)
+{
+	u32 val = display_buf[display_out_pos];
+
+	val |= (val << 8) | (val << 16) | (val << 24);
+	out_be32((void *)CONFIG_SYS_DISP_CHR_RAM, val);
+}
+
+/*
+ * Output contents of the software display buffer to the LED display every 0.5s
  */
 void board_show_activity(ulong timestamp)
 {
 	static ulong last;
 	static u8 once;
-	u32 val;
 
 	if (!once || (timestamp - last >= (CONFIG_SYS_HZ / 2))) {
-		val = display_buf[display_out_pos];
-		val |= (val << 8) | (val << 16) | (val << 24);
-		out_be32((void *)CONFIG_SYS_DISP_CHR_RAM, val);
+		display_flush();
 		display_out_pos ^= 1;
 		last = timestamp;
 		once = 1;
@@ -435,3 +444,63 @@ void show_activity(int arg)
 {
 }
 #endif
+#if defined (CONFIG_SHOW_BOOT_PROGRESS)
+static int a4m072_status2code(int status, char *buf)
+{
+	char c = 0;
+
+	if (((status > 0) && (status <= 8)) ||
+				((status >= 100) && (status <= 108)) ||
+				((status < 0) && (status >= -9)) ||
+				(status == -100) || (status == -101) ||
+				((status <= -103) && (status >= -113))) {
+		c = '5';
+	} else if (((status >= 9) && (status <= 14)) ||
+			((status >= 120) && (status <= 123)) ||
+			((status >= 125) && (status <= 129)) ||
+			((status >= -13) && (status <= -10)) ||
+			(status == -120) || (status == -122) ||
+			((status <= -124) && (status >= -127)) ||
+			(status == -129)) {
+		c = '8';
+	} else if (status == 15) {
+		c = '9';
+	} else if ((status <= -30) && (status >= -32)) {
+		c = 'A';
+	} else if (((status <= -35) && (status >= -40)) ||
+			((status <= -42) && (status >= -51)) ||
+			((status <= -53) && (status >= -58)) ||
+			(status == -64) ||
+			((status <= -80) && (status >= -83)) ||
+			(status == -130) || (status == -140) ||
+			(status == -150)) {
+		c = 'B';
+	}
+
+	if (c == 0)
+		return -EINVAL;
+
+	buf[0] = (status < 0) ? '-' : c;
+	buf[1] = c;
+
+	return 0;
+}
+
+void show_boot_progress(int status)
+{
+	char buf[2];
+
+	if (a4m072_status2code(status, buf) < 0)
+		return;
+
+	display_set(0);	/* Clear DP Led */
+	display_putc_nomark(buf[0]);
+	display_putc_nomark(buf[1]);
+	display_set(DISPLAY_HOME);
+	display_out_pos = 0;	/* reset output position */
+
+	/* we want to flush status 15 now */
+	if (status == 15)
+		display_flush();
+}
+#endif
diff --git a/include/configs/a4m072.h b/include/configs/a4m072.h
index ce931d72a9fd9d20dbbb34ca1ba3be37b17899ed..a54ab1dc8633e5144bb6c2f7334790a9ca6bd4f5 100644
--- a/include/configs/a4m072.h
+++ b/include/configs/a4m072.h
@@ -382,4 +382,6 @@
 #define CONFIG_SYS_DISP_CHR_RAM	     CONFIG_SYS_CS7_START
 #define CONFIG_SHOW_ACTIVITY		/* used for display realization */
 
+#define CONFIG_SHOW_BOOT_PROGRESS
+
 #endif /* __CONFIG_H */