During display init, it is necessary to add a timer to wait for dpms initialization.
Also, that work should be handled in the display.c
Thus, this function is added below display.c
void display_add_timer_for_wating_dpms_init(void);
-> This replaces add_timer_for_dpms_init()
Change-Id: Icfcc248b54899608a6a0c483df0ae572e0112798
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
return done;
}
-static gboolean delayed_dpms_init_done(gpointer data)
-{
- int timeout;
-
- if (!display_panel_init_dpms())
- return G_SOURCE_CONTINUE;
-
- switch (get_pm_cur_state()) {
- case S_NORMAL:
- case S_LCDDIM:
- display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
- if (display_conf.timeout_enable) {
- timeout = states[S_NORMAL].timeout;
- /* check minimun lcd on time */
- if (timeout < SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT))
- timeout = SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT);
- display_state_transition_reset_state_transition_timeout(timeout);
- }
- break;
- case S_LCDOFF:
- display_panel_lcd_off_procedure(LCD_OFF_BY_EVENT);
- timeout = display_conf.lcdoff_timeout;
- display_state_transition_reset_state_transition_timeout(timeout);
- break;
- default:
- break;
- }
-
- return G_SOURCE_REMOVE;
-}
-
-static void add_timer_for_dpms_init(void)
-{
- guint id = g_timeout_add(500/* milliseconds */, delayed_dpms_init_done, NULL);
- if (id == 0)
- _E("Failed to add display_panel_init_dpms timeout.");
-}
-
static void init_display_states(void *data)
{
struct display_plugin *dp = (struct display_plugin *) data;
else
display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
} else {
- add_timer_for_dpms_init();
+ display_add_timer_for_waiting_dpms_init();
}
if (display_conf.lcd_always_on) {
return done;
}
-static gboolean delayed_dpms_init_done(gpointer data)
-{
- int timeout;
-
- if (!display_panel_init_dpms())
- return G_SOURCE_CONTINUE;
-
- switch (get_pm_cur_state()) {
- case S_NORMAL:
- case S_LCDDIM:
- display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
- if (display_conf.timeout_enable) {
- timeout = states[S_NORMAL].timeout;
- /* check minimun lcd on time */
- if (timeout < SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT))
- timeout = SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT);
- display_state_transition_reset_state_transition_timeout(timeout);
- }
- break;
- case S_LCDOFF:
- display_panel_lcd_off_procedure(LCD_OFF_BY_EVENT);
- timeout = display_conf.lcdoff_timeout;
- display_state_transition_reset_state_transition_timeout(timeout);
- break;
- default:
- break;
- }
-
- return G_SOURCE_REMOVE;
-}
-
-static void add_timer_for_dpms_init(void)
-{
- guint id = g_timeout_add(500/* milliseconds */, delayed_dpms_init_done, NULL);
- if (id == 0)
- _E("Failed to add display_panel_init_dpms timeout.");
-}
-
static void init_display_states(void *data)
{
struct display_plugin *dp = (struct display_plugin *) data;
else
display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
} else {
- add_timer_for_dpms_init();
+ display_add_timer_for_waiting_dpms_init();
}
if (display_conf.lcd_always_on) {
return done;
}
-static gboolean delayed_dpms_init_done(gpointer data)
-{
- int timeout;
-
- if (!display_panel_init_dpms())
- return G_SOURCE_CONTINUE;
-
- switch (get_pm_cur_state()) {
- case S_NORMAL:
- case S_LCDDIM:
- display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
- if (display_conf.timeout_enable) {
- timeout = states[S_NORMAL].timeout;
- /* check minimun lcd on time */
- if (timeout < SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT))
- timeout = SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT);
- display_state_transition_reset_state_transition_timeout(timeout);
- }
- break;
- case S_LCDOFF:
- display_panel_lcd_off_procedure(LCD_OFF_BY_EVENT);
- timeout = display_conf.lcdoff_timeout;
- display_state_transition_reset_state_transition_timeout(timeout);
- break;
- default:
- break;
- }
-
- return G_SOURCE_REMOVE;
-}
-
-static void add_timer_for_dpms_init(void)
-{
- guint id = g_timeout_add(500/* milliseconds */, delayed_dpms_init_done, NULL);
- if (id == 0)
- _E("Failed to add display_panel_init_dpms timeout.");
-}
-
static void init_display_states(void *data)
{
struct display_plugin *dp = (struct display_plugin *) data;
else
display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
} else {
- add_timer_for_dpms_init();
+ display_add_timer_for_waiting_dpms_init();
}
if (display_conf.lcd_always_on) {
return done;
}
-static gboolean delayed_dpms_init_done(gpointer data)
-{
- int timeout;
-
- if (!display_panel_init_dpms())
- return G_SOURCE_CONTINUE;
-
- switch (get_pm_cur_state()) {
- case S_NORMAL:
- case S_LCDDIM:
- lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
- if (display_conf.timeout_enable) {
- timeout = states[S_NORMAL].timeout;
- /* check minimun lcd on time */
- if (timeout < SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT))
- timeout = SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT);
- display_state_transition_reset_state_transition_timeout(timeout);
- }
- break;
- case S_LCDOFF:
- lcd_off_procedure(LCD_OFF_BY_EVENT);
- timeout = display_conf.lcdoff_timeout;
- display_state_transition_reset_state_transition_timeout(timeout);
- break;
- default:
- break;
- }
-
- return G_SOURCE_REMOVE;
-}
-
-static void add_timer_for_dpms_init(void)
-{
- guint id = g_timeout_add(500/* milliseconds */, delayed_dpms_init_done, NULL);
- if (id == 0)
- _E("Failed to add display_panel_init_dpms timeout.");
-}
-
static void init_display_states(void *data)
{
struct display_plugin *dp = (struct display_plugin *) data;
else
lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
} else {
- add_timer_for_dpms_init();
+ display_add_timer_for_waiting_dpms_init();
}
if (display_conf.lcd_always_on) {
return 0;
}
+static gboolean delayed_dpms_init_done(gpointer data)
+{
+ int timeout = 0;
+ bool timeout_enable = false;
+ int lcdoff_timeout = 0;
+
+ if (!display_panel_init_dpms())
+ return G_SOURCE_CONTINUE;
+
+ switch (get_pm_cur_state()) {
+ case S_NORMAL:
+ case S_LCDDIM:
+ display_panel_lcd_on_procedure(LCD_NORMAL, LCD_ON_BY_EVENT);
+ display_plugin_config_get_timeout_enable(&timeout_enable);
+ if (timeout_enable) {
+ display_plugin_state_get_timeout(S_NORMAL, &timeout);
+ /* check minimun lcd on time */
+ if (timeout < SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT))
+ timeout = SEC_TO_MSEC(DEFAULT_NORMAL_TIMEOUT);
+ display_state_transition_reset_state_transition_timeout(timeout);
+ }
+ break;
+ case S_LCDOFF:
+ display_panel_lcd_off_procedure(LCD_OFF_BY_EVENT);
+ display_plugin_config_get_lcdoff_timeout(&lcdoff_timeout);
+ display_state_transition_reset_state_transition_timeout(lcdoff_timeout);
+ break;
+ default:
+ break;
+ }
+
+ return G_SOURCE_REMOVE;
+}
+
+void display_add_timer_for_waiting_dpms_init(void)
+{
+ guint id = g_timeout_add(500/* milliseconds */, delayed_dpms_init_done, NULL);
+ if (id == 0)
+ _E("Failed to add display_panel_init_dpms timeout.");
+}
+
static int display_probe(void *data)
{
display_plugin_device_ops = find_device("display-plugin");
void display_set_display_ops_status(enum device_ops_status dev_ops_status);
int display_get_display_ops_status(enum device_ops_status *dev_ops_status);
void display_set_power_save_mode_flag(int onoff);
+void display_add_timer_for_waiting_dpms_init(void);
#endif //__DISPLAY_H__