time: add aml time profile function [1/1]
PD#SWPL-141778
Problem:
need calculate cost time in every stages
Solution:
add aml time profile for testing cost time in stages
Verify:
s1a_bg201
Change-Id: I025b6ac7defedcf5319bbd04796407d1e9811787
Signed-off-by: benlong.zhou <benlong.zhou@amlogic.com>
diff --git a/common/aml_time_profile.c b/common/aml_time_profile.c
new file mode 100644
index 0000000..5362955
--- /dev/null
+++ b/common/aml_time_profile.c
@@ -0,0 +1,42 @@
+#include <common.h>
+#include <asm/global_data.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_AMLOGIC_TIME_PROFILE
+void record_init_call_time(void *func, unsigned int time)
+{
+ int i;
+
+ for (i = 0; i < INITCALL_CNT; i++) {
+ if (!gd->ict[i].func) {
+ gd->ict[i].func = func;
+ gd->ict[i].time = time;
+ return;
+ }
+ }
+ printf("Lost init call %p, time:%d\n", func, time);
+}
+
+void dump_initcall_time(void)
+{
+ int i;
+ const char *sym;
+ unsigned long base;
+ unsigned long end;
+
+ for (i = 0; i < INITCALL_CNT; i++) {
+ if (gd->ict[i].func && gd->ict[i].time > 1000) {
+ sym = symbol_lookup((unsigned long)gd->ict[i].func,
+ &base, &end);
+ if (sym)
+ printf("init call time:%8d, func:%s\n",
+ gd->ict[i].time, sym);
+ else
+ printf("init call time:%8d, func:%p\n",
+ gd->ict[i].time, gd->ict[i].func);
+ }
+ }
+}
+
+#endif