static int hdmi_set_mode(struct rk_display_device *device, struct fb_videomode *mode) { struct hdmi *hdmi = device->priv_data; int vic = hdmi_videomode_to_vic(mode); hdmi->autoset = 0; if(vic && hdmi->vic != vic) { hdmi->vic = vic; if(hdmi->hotplug == HDMI_HPD_ACTIVED) hdmi_submit_work(hdmi, HDMI_SET_VIDEO, 0, NULL); } return 0; }
static int hdmi_set_mode(struct rk_display_device *device, struct fb_videomode *mode) { struct hdmi *hdmi = device->priv_data; int vic = hdmi_videomode_to_vic(mode); if(!hdmi->hotplug) return -1; hdmi->autoconfig = HDMI_DISABLE; if(vic && hdmi->vic != vic) { hdmi->vic = vic; hdmi->command = HDMI_CONFIG_VIDEO; init_completion(&hdmi->complete); hdmi->wait = 1; queue_delayed_work(hdmi->workqueue, &hdmi->delay_work, 0); wait_for_completion_interruptible_timeout(&hdmi->complete, msecs_to_jiffies(10000)); } return 0; }