static void _WaitForEngineNotBusy(void) { if (DSI_REG->DSI_MODE_CTRL.MODE) return ; #if ENABLE_DSI_INTERRUPT static const long WAIT_TIMEOUT = 2 * HZ; // 2 sec if (in_interrupt()) { // perform busy waiting if in interrupt context while(_IsEngineBusy()) {} } else { while (_IsEngineBusy()) { long ret = wait_event_interruptible_timeout(_lcd_wait_queue, !_IsEngineBusy(), WAIT_TIMEOUT); if (0 == ret) { printk("[WARNING] Wait for LCD engine not busy timeout!!!\n"); } } } #else while(_IsEngineBusy()) {} #endif }
static void _WaitForEngineNotBusy(void) { int timeOut; #if ENABLE_DSI_INTERRUPT long int time; static const long WAIT_TIMEOUT = 2 * HZ; // 2 sec #endif if (DSI_REG->DSI_MODE_CTRL.MODE) return ; timeOut = 20; #if ENABLE_DSI_INTERRUPT time = get_current_time_us(); if (in_interrupt()) { // perform busy waiting if in interrupt context while(_IsEngineBusy()) { msleep(1); if (--timeOut < 0) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DSI", " Wait for DSI engine not busy timeout!!!(Wait %d us)\n", get_current_time_us() - time); DSI_DumpRegisters(); DSI_Reset(); break; } } } else { while (_IsEngineBusy()) { long ret = wait_event_interruptible_timeout(_dsi_wait_queue, !_IsEngineBusy(), WAIT_TIMEOUT); if (0 == ret) { DISP_LOG_PRINT(ANDROID_LOG_WARN, "DSI", " Wait for DSI engine not busy timeout!!!\n"); } } } #else while(_IsEngineBusy()) { msleep(1); if (--timeOut < 0) { DISP_LOG_PRINT(ANDROID_LOG_ERROR, "DSI", " Wait for DSI engine not busy timeout!!!\n"); DSI_DumpRegisters(); DSI_Reset(); break; } } #endif }