Index: titan/titan/mipselport.h
===================================================================
--- titan/titan/mipselport.h	(revision 43017)
+++ titan/titan/mipselport.h	(revision 43018)
@@ -254,4 +254,8 @@
 		if(status.bcm == 1 && status.usedirectfb == 0)
 			bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0);
+#ifdef HAVE_HISILICON_ACCEL
+		else if(status.usedirectfb == 0)
+			dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0, 0);
+#endif
 		blit();
 		
@@ -260,4 +264,7 @@
 		{
 			bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0);
+#ifdef HAVE_HISILICON_ACCEL
+			dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0, 0);
+#endif
 			blit();
 		}
@@ -380,4 +387,8 @@
 				if(status.screenanim < 10)
 					bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, dst_left, dst_top, dst_width, dst_height, 0, 0);
+#ifdef HAVE_HISILICON_ACCEL
+				if(status.screenanim < 10)
+					dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, dst_left, dst_top, dst_width, dst_height, 0, 0, 0);
+#endif
 				else
 				{
@@ -391,4 +402,7 @@
 						dsleft = 0;
 					bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, dsleft, dstop, dswidth, dsheight, dst_left, dst_top, dst_width, dst_height, 0, 0);
+#ifdef HAVE_HISILICON_ACCEL
+					dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, dsleft, dstop, dswidth, dsheight, dst_left, dst_top, dst_width, dst_height, 0, 0, 0);
+#endif
 				}	
 			}	
@@ -405,5 +419,11 @@
 		}
 		if(status.bcm == 1 && status.usedirectfb == 0)
+		{
 			bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0);
+		}
+#ifdef HAVE_HISILICON_ACCEL
+		else if(status.usedirectfb == 0)
+			dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0, 0);
+#endif
 		else
 		{
@@ -419,4 +439,8 @@
 		if(status.bcm == 1 && status.usedirectfb == 0)
 			bcm_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0);
+#ifdef HAVE_HISILICON_ACCEL
+		else if(status.usedirectfb == 0)
+			dinobot_accel_blit(skinfb->data_phys, skinfb->width, skinfb->height, skinfb->pitch, 0, fb->data_phys, fb->width, fb->height, fb->pitch, 0, 0, skinfb->width, skinfb->height, posx, posy, width, height, 0, 0, 0);
+#endif
 	}
 	if(doblit == 1)
@@ -746,9 +770,16 @@
 	if(mode == 0 || mode == 2)
 	{
-		
+//#ifdef BCM_ACCEL	
 		if(status.bcm == 1 && tmpfb->data_phys != 0)
 		{
 			bcm_accel_fill(tmpfb->data_phys, tmpfb->width, tmpfb->height, tmpfb->pitch, posx, posy, width, height, tmpcol);
 		}
+//#endif
+#ifdef HAVE_HISILICON_ACCEL
+		else if(tmpfb->data_phys != 0)
+		{
+			dinobot_accel_fill(tmpfb->data_phys, tmpfb->width, tmpfb->height, tmpfb->pitch, posx, posy, width, height, tmpcol);
+		}
+#endif
 		else
 		{
@@ -974,4 +1005,11 @@
 		flag = 1;
 	}
+#ifdef HAVE_HISILICON_ACCEL
+	else if(source_phys > 0 && target_phys >0)
+	{
+		dinobot_accel_blit(source_phys, qwidth, qheight, qpitch, 0, target_phys, zwidth, zheight, zpitch, 0, 0, width, height, posx, posy, scalewidth, scaleheight, 0, 0, 0);
+		flag = 1;
+	}
+#endif
 	else
 	{
Index: titan/titan/titan.c
===================================================================
--- titan/titan/titan.c	(revision 43017)
+++ titan/titan/titan.c	(revision 43018)
@@ -253,6 +253,7 @@
 #endif
 
-#define TIMECODE "1472042241"
-
+#define TIMECODE "1542558853"
+
+#if !defined(HAVE_HISILICON_ACCEL)
 // mipsel start
 /* Apparently, surfaces must be 64-byte aligned */
@@ -264,4 +265,21 @@
 //gAccel *gAccel::instance;
 #define BCM_ACCEL
+#endif
+
+#ifdef HAVE_HISILICON_ACCEL 
+extern int  dinobot_accel_init(void);
+extern void dinobot_accel_close(void);
+extern void dinobot_accel_blit(
+		int src_addr, int src_width, int src_height, int src_stride, int src_format,
+		int dst_addr, int dst_width, int dst_height, int dst_stride,
+		int src_x, int src_y, int width, int height,
+		int dst_x, int dst_y, int dwidth, int dheight,
+		int pal_addr,int pal_size, int flags);
+extern void dinobot_accel_fill(
+		int dst_addr, int dst_width, int dst_height, int dst_stride,
+		int x, int y, int width, int height,
+		unsigned long color);
+extern bool dinobot_accel_has_alphablending();
+#endif
 
 #ifdef BCM_ACCEL
@@ -803,7 +821,12 @@
 	initlocale(getconfig("localepath", NULL));
 
-#ifdef MIPSEL
+//#ifdef MIPSEL
+#ifdef BCM_ACCEL
 	bcm_accel_init();
 #endif
+#ifdef HAVE_HISILICON_ACCEL
+	dinobot_accel_init();
+#endif
+//#endif
 
 	fb = openfb(getconfig("fbdev", NULL), 0);
@@ -1027,4 +1050,12 @@
 	if(checkbox("ATEMIO510") == 0)
 		addtimer(&updatevfd, START, 1000, -1, NULL, NULL, NULL);
+
+printf("00000000\n");
+
+			setvideomode("720", 0);
+			changefbresolution("720", 0);
+			autoresolution();
+printf("00001111\n");
+
 
 	if(getconfigint("firststart", NULL) == 1)
@@ -1082,10 +1113,6 @@
 		addconfig("autoscan", "0");
 	}
-
-	// oe-alliance needs this
-	setvideomode("720", 0);
-	changefbresolution("720", 0);
-	autoresolution();
-
+printf("111111111\n");
+	
 	//first wizzard
 	if(getconfigint("nofirstwizzard", NULL) < 2)
@@ -1129,4 +1156,5 @@
 		textbox(_("Info"), _(msg), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1100, 680, 30, 0);
 		free(msg); msg = NULL;
+printf("2222222222\n");
 		
 		writevfd("");
@@ -1134,4 +1162,6 @@
 		drawscreen(skin, 0, 0);
 		addconfig("nofirstwizzard", "2");
+printf("3333333333\n");
+
 	}
 	else
@@ -1144,4 +1174,5 @@
 			servicecheckret(serviceret, 0);
 	}
+printf("4444444444\n");
 
 // fixt manual start 
@@ -1162,4 +1193,5 @@
 	ret = settint(getconfigint("vs_tint", NULL));
 	videoApplySettings();
+printf("555555555\n");
 	
 #ifndef SIMULATE
@@ -1200,4 +1232,5 @@
 	//start newsletter
 	startnewsletter(1);
+printf("6666666666\n");
 
 	//thumb create thread
@@ -1220,5 +1253,5 @@
 	// work
 	resettvpic();
-	
+
 	char* cmd = NULL;
 #ifdef SH4
@@ -1229,4 +1262,5 @@
 	cmd = ostrcat("/media/hdd/movie/titankey.mipsel", NULL, 0, 0);
 #endif
+printf("777777777\n");
 
 	//for atemio to unlock box with stick
@@ -1262,4 +1296,5 @@
 	}
 	free(cmd); cmd = NULL;
+printf("88888888888\n");
 
 	//must called direct befor screeninfobar
@@ -1318,9 +1353,14 @@
 		}
 	}
+printf("9999999999\n");
 
 	addtimer(&guestthread, START, 1000, 1, NULL, NULL, NULL);
+printf("9999999999111\n");
+
 	startinternreader(1);
+printf("9999999999222\n");
  	
 	screeninfobar();
+printf("9999999999333\n");
 
 	//for testign screens
