\******************************************************************************/
static gceSTATUS _lastError = gcvSTATUS_OK;
-static gctUINT32 _debugLevel = gcvLEVEL_NONE;
+static gctUINT32 _debugLevel = gcvLEVEL_ERROR;
static gctUINT32 _debugZones = gcvZONE_NONE;
static gctINT _indent = 0;
static spinlock_t _lock = SPIN_LOCK_UNLOCKED;
#include "./display/screen/screen.h"
+#define ANDROID_USE_THREE_BUFS 0 //android use three buffers to accelerate UI display in rgb plane
+
#if 0
#define fbprintk(msg...) printk(msg);
#else
static DECLARE_WAIT_QUEUE_HEAD(wq);
static int wq_condition = 0;
+#if ANDROID_USE_THREE_BUFS
+static int new_frame_seted = 1;
+#endif
+
void set_lcd_pin(struct platform_device *pdev, int enable)
{
struct rk29fb_info *mach_info = pdev->dev.platform_data;
addr = fix->smem_start + offset;
+#if ANDROID_USE_THREE_BUFS
+ if(0==new_frame_seted) {
+ wq_condition = 0;
+ wait_event_interruptible_timeout(wq, wq_condition, HZ/20);
+ }
+ new_frame_seted = 0;
+#endif
+
LcdMskReg(inf, SYS_CONFIG, m_W1_ENABLE|m_W1_FORMAT, v_W1_ENABLE(1)|v_W1_FORMAT(format));
xpos += (screen->left_margin + screen->hsync_len);
mcu_refresh(inf);
+#if !ANDROID_USE_THREE_BUFS
// flush end when wq_condition=1 in mcu panel, but not in rgb panel
if(SCREEN_MCU == inf->cur_screen->type) {
wait_event_interruptible_timeout(wq, wq_condition, HZ/20);
wq_condition = 0;
wait_event_interruptible_timeout(wq, wq_condition, HZ/20);
}
+#endif
#if 0
for(i=0;i<=(0xc0/4);i+=4)
}
}
+#if ANDROID_USE_THREE_BUFS
+ new_frame_seted = 1;
+#endif
+
wq_condition = 1;
wake_up_interruptible(&wq);