struct rk_hdmi_device *hdmi_dev = container_of(hdmi_drv,
struct rk_hdmi_device,
driver);
+ if (hdmi_drv->uboot_logo) {
+ hdmi_drv->uboot_logo = 0;
+ return;
+ }
if (enable) {
if (hdmi_drv->pwr_mode == LOWER_PWR)
switch(cmd) {
case 0:
printk("%s[%d]:cmd=%d\n",__func__,__LINE__,cmd);
+ rk3036_hdmi_irq(hdmi_drv);
break;
case 1:
printk("%s[%d]:cmd=%d\n",__func__,__LINE__,cmd);
hdmi_drv->insert = rk3036_hdmi_insert;
hdmi_drv->ops = &hdmi_drv_ops;
- rk3036_hdmi_reset_pclk();
- rk3036_hdmi_reset(hdmi_drv);
-
+ if (!hdmi_drv->uboot_logo) {
+ rk3036_hdmi_reset_pclk();
+ rk3036_hdmi_reset(hdmi_drv);
+ }
if (hdmi_drv->hdcp_power_on_cb)
rc = hdmi_drv->hdcp_power_on_cb();
#define HDMI_MAX_ID 1
static char *envp[] = { "INTERFACE=HDMI", NULL };
-
+static int uboot_vic;
static void hdmi_sys_show_state(struct hdmi *hdmi)
{
switch (hdmi->state) {
int hdmi_sys_init(struct hdmi *hdmi)
{
- hdmi->hotplug = HDMI_HPD_REMOVED;
- hdmi->state = HDMI_SLEEP;
- hdmi->enable = HDMI_ENABLE;
+ hdmi->uboot_logo = support_uboot_display();
+ printk("%s,uboot-logo=%d,uboot_vic=%d\n",__func__,hdmi->uboot_logo,uboot_vic);
+ if (hdmi->uboot_logo) {
+ hdmi->hotplug = HDMI_HPD_ACTIVED;
+ hdmi->state = PLAY_BACK;
+ hdmi->enable = HDMI_ENABLE;
+ hdmi->display = HDMI_DISABLE;
+ hdmi->vic = uboot_vic;
+ } else {
+ hdmi->hotplug = HDMI_HPD_REMOVED;
+ hdmi->state = HDMI_SLEEP;
+ hdmi->enable = HDMI_ENABLE;
+ hdmi->display = HDMI_DISABLE;
+ hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
+ }
hdmi->autoconfig = HDMI_AUTO_CONFIGURE;
- hdmi->display = HDMI_DISABLE;
-
- hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
hdmi->audio.channel = HDMI_AUDIO_DEFAULT_CHANNEL;
hdmi->audio.rate = HDMI_AUDIO_DEFAULT_RATE;
hdmi->audio.word_length = HDMI_AUDIO_DEFAULT_WORD_LENGTH;
hdmi->hotplug = hotplug;
} else if (hotplug == HDMI_HPD_REMOVED) {
hdmi_sys_sleep(hdmi);
+ } else if (hotplug == HDMI_HPD_ACTIVED) {
+ if (hdmi->insert)
+ hdmi->insert(hdmi);
+ hdmi->state = READ_PARSE_EDID;
}
do {
hdmi_sys_show_state(hdmi);
#endif
rockchip_set_system_status(SYS_STATUS_HDMI);
}
+ if (hdmi->uboot_logo) {
+ hdmi->state = CONFIG_AUDIO;
+ }
break;
case SYSTEM_CONFIG:
if (hdmi->remove)
} while ((hdmi->state != state_last ||
(rc != HDMI_ERROR_SUCESS)) &&
trytimes < HDMI_MAX_TRY_TIMES);
-
hdmi_dbg(hdmi->dev, "[%s] done\n", __func__);
mutex_unlock(&work_mutex);
}
+
+static int __init bootloader_setup(char *str)
+{
+ if(str) {
+ printk("hdmi init vic is %s\n", str);
+ sscanf(str, "%d", &uboot_vic);
+ }
+ /*uboot_vic = 16;*/
+ return 0;
+}
+early_param("hdmi.vic", bootloader_setup);