#include <linux/delay.h>
#include "rk_hdmi.h"
-#ifdef CONFIG_HDMI_RK30_CTL_CODEC
+#ifdef CONFIG_RK_HDMI_CTL_CODEC
extern void codec_set_spk(bool on);
#endif
switch(state)
{
case HDMI_SLEEP:
- dev_printk(KERN_INFO, hdmi->dev, "HDMI_SLEEP\n");
+ hdmi_dbg(hdmi->dev, "HDMI_SLEEP\n");
break;
case HDMI_INITIAL:
- dev_printk(KERN_INFO, hdmi->dev, "HDMI_INITIAL\n");
+ hdmi_dbg(hdmi->dev, "HDMI_INITIAL\n");
break;
case WAIT_HOTPLUG:
- dev_printk(KERN_INFO, hdmi->dev, "WAIT_HOTPLUG\n");
+ hdmi_dbg(hdmi->dev, "WAIT_HOTPLUG\n");
break;
case READ_PARSE_EDID:
- dev_printk(KERN_INFO, hdmi->dev, "READ_PARSE_EDID\n");
+ hdmi_dbg(hdmi->dev, "READ_PARSE_EDID\n");
break;
case WAIT_HDMI_ENABLE:
- dev_printk(KERN_INFO, hdmi->dev, "WAIT_HDMI_ENABLE\n");
+ hdmi_dbg(hdmi->dev, "WAIT_HDMI_ENABLE\n");
break;
case SYSTEM_CONFIG:
- dev_printk(KERN_INFO, hdmi->dev, "SYSTEM_CONFIG\n");
+ hdmi_dbg(hdmi->dev, "SYSTEM_CONFIG\n");
break;
case CONFIG_VIDEO:
- dev_printk(KERN_INFO, hdmi->dev, "CONFIG_VIDEO\n");
+ hdmi_dbg(hdmi->dev, "CONFIG_VIDEO\n");
break;
case CONFIG_AUDIO:
- dev_printk(KERN_INFO, hdmi->dev, "CONFIG_AUDIO\n");
+ hdmi_dbg(hdmi->dev, "CONFIG_AUDIO\n");
break;
case PLAY_BACK:
- dev_printk(KERN_INFO, hdmi->dev, "PLAY_BACK\n");
+ hdmi_dbg(hdmi->dev, "PLAY_BACK\n");
break;
default:
- dev_printk(KERN_INFO, hdmi->dev, "Unkown State %d\n", state);
+ hdmi_dbg(hdmi->dev, "Unkown State %d\n", state);
break;
}
}
memset(&hdmi->edid, 0, sizeof(struct hdmi_edid));
INIT_LIST_HEAD(&hdmi->edid.modelist);
hdmi->display = HDMI_DISABLE;
- rk_fb_switch_screen(hdmi->lcdc->screen, 0, HDMI_SOURCE_DEFAULT);
+ if(hdmi->set_vif)
+ hdmi->set_vif(hdmi->lcdc->screen1,0);
+ rk_fb_switch_screen(hdmi->lcdc->screen1, 0, hdmi->lcdc->id);
kobject_uevent_env(&hdmi->dev->kobj, KOBJ_REMOVE, envp);
#ifdef CONFIG_SWITCH
switch_set_state(&(hdmi->switch_hdmi), 0);
#endif
- #ifdef CONFIG_HDMI_RK30_CTL_CODEC
+ #ifdef CONFIG_RK_HDMI_CTL_CODEC
codec_set_spk(1);
#endif
}
static void hdmi_sys_sleep(void)
{
mutex_lock(&hdmi->enable_mutex);
- if(hdmi->enable)
+ if(hdmi->enable && hdmi->irq)
disable_irq(hdmi->irq);
hdmi->state = HDMI_SLEEP;
- hdmi->hdmi_removed();
- if(hdmi->enable)
+ hdmi->remove();
+ if(hdmi->enable && hdmi->irq)
enable_irq(hdmi->irq);
mutex_unlock(&hdmi->enable_mutex);
}
hdmi_sys_remove();
hdmi->state = HDMI_SLEEP;
hdmi->hotplug = HDMI_HPD_REMOVED;
- hdmi->hdmi_removed();
+ hdmi->remove();
state = HDMI_SLEEP;
}
mutex_unlock(&hdmi->enable_mutex);
if(hotplug != hdmi->hotplug)
{
if(hotplug == HDMI_HPD_ACTIVED){
+ if(hdmi->insert)
+ hdmi->insert();
hdmi->state = READ_PARSE_EDID;
}
else if(hdmi->hotplug == HDMI_HPD_ACTIVED) {
hdmi_sys_sleep();
else {
hdmi->state = WAIT_HOTPLUG;
- hdmi->hdmi_removed();
+ hdmi->remove();
}
if(hdmi->wait == 1) {
complete(&hdmi->complete);
}
else if(hotplug == HDMI_HPD_REMOVED) {
hdmi->state = HDMI_SLEEP;
- hdmi->hdmi_removed();
+ hdmi->remove();
}
hdmi->hotplug = hotplug;
}
#ifdef CONFIG_SWITCH
switch_set_state(&(hdmi->switch_hdmi), 1);
#endif
- #ifdef CONFIG_HDMI_RK30_CTL_CODEC
+ #ifdef CONFIG_RK_HDMI_CTL_CODEC
codec_set_spk(0);
#endif
}
break;
case SYSTEM_CONFIG:
+ hdmi->remove();
if(hdmi->autoconfig)
hdmi->vic = hdmi_find_best_mode(hdmi, 0);
else
}while((hdmi->state != state_last || (rc != HDMI_ERROR_SUCESS) ) && trytimes < HDMI_MAX_TRY_TIMES);
-// if(trytimes == HDMI_MAX_TRY_TIMES)
-// {
-// if(hdmi->hotplug) {
-// hdmi_sys_remove();
-// hdmi->hotplug = HDMI_HPD_REMOVED;
-// hdmi_sys_sleep();
-//
-// }
-// }
hdmi_dbg(hdmi->dev, "[%s] done\n", __FUNCTION__);
mutex_unlock(&work_mutex);
}