projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
89a2c8a
)
mfd:rk616 hdmi: use vif rebuild signal for hdmi 1080p
author
yzq
<yzq@rock-chips.com>
Tue, 7 May 2013 09:35:41 +0000
(17:35 +0800)
committer
yzq
<yzq@rock-chips.com>
Tue, 7 May 2013 09:37:00 +0000
(17:37 +0800)
drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c
patch
|
blob
|
history
drivers/video/rockchip/hdmi/rk_hdmi.h
patch
|
blob
|
history
drivers/video/rockchip/hdmi/rk_hdmi_lcdc.c
patch
|
blob
|
history
drivers/video/rockchip/hdmi/rk_hdmi_task.c
patch
|
blob
|
history
diff --git
a/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c
b/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c
index 5398cb856ed0167b5e85b05de77d3c7990fbe63d..eeb22c0569b4a7ccac0343e312ec3c32bd39d756 100755
(executable)
--- a/
drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c
+++ b/
drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c
@@
-5,7
+5,6
@@
#include "rk616_hdmi_hw.h"
static char edid_result = 0;
#include "rk616_hdmi_hw.h"
static char edid_result = 0;
-static bool analog_sync = 0;
static int rk616_hdmi_init_pol_set(struct mfd_rk616 * rk616,int pol)
static int rk616_hdmi_init_pol_set(struct mfd_rk616 * rk616,int pol)
@@
-49,7
+48,7
@@
static void rk616_hdmi_set_pwr_mode(int mode)
hdmi_dbg(hdmi->dev,"%s change pwr_mode %d --> %d\n",__FUNCTION__,hdmi->pwr_mode,mode);
switch(mode){
case NORMAL:
hdmi_dbg(hdmi->dev,"%s change pwr_mode %d --> %d\n",__FUNCTION__,hdmi->pwr_mode,mode);
switch(mode){
case NORMAL:
-
hdmi_dbg(hdmi->dev,"%s change pwr_mode NORMAL\n",__FUNCTION__,hdmi->pwr_mode,mode);
+ hdmi_dbg(hdmi->dev,"%s change pwr_mode NORMAL\n",__FUNCTION__,hdmi->pwr_mode,mode);
rk616_hdmi_sys_power_down();
HDMIWrReg(PHY_DRIVER,0xaa);
HDMIWrReg(PHY_PRE_EMPHASIS,0x0f);
rk616_hdmi_sys_power_down();
HDMIWrReg(PHY_DRIVER,0xaa);
HDMIWrReg(PHY_PRE_EMPHASIS,0x0f);
@@
-62,7
+61,6
@@
static void rk616_hdmi_set_pwr_mode(int mode)
HDMIWrReg(0xce, 0x01);
rk616_hdmi_av_mute(1);
rk616_hdmi_sys_power_up();
HDMIWrReg(0xce, 0x01);
rk616_hdmi_av_mute(1);
rk616_hdmi_sys_power_up();
- analog_sync = 1;
break;
case LOWER_PWR:
hdmi_dbg(hdmi->dev,"%s change pwr_mode LOWER_PWR\n",__FUNCTION__,hdmi->pwr_mode,mode);
break;
case LOWER_PWR:
hdmi_dbg(hdmi->dev,"%s change pwr_mode LOWER_PWR\n",__FUNCTION__,hdmi->pwr_mode,mode);
@@
-388,16
+386,13
@@
void rk616_hdmi_control_output(int enable)
HDMIRdReg(AV_MUTE,&mutestatus);
if(mutestatus && (m_AUDIO_MUTE | m_VIDEO_BLACK)) {
HDMIWrReg(AV_MUTE, v_AUDIO_MUTE(0) | v_VIDEO_MUTE(0));
HDMIRdReg(AV_MUTE,&mutestatus);
if(mutestatus && (m_AUDIO_MUTE | m_VIDEO_BLACK)) {
HDMIWrReg(AV_MUTE, v_AUDIO_MUTE(0) | v_VIDEO_MUTE(0));
- rk616_hdmi_sys_power_up();
- rk616_hdmi_sys_power_down();
- rk616_hdmi_sys_power_up();
- if(analog_sync){
- HDMIWrReg(0xce, 0x00);
- delay100us();
- HDMIWrReg(0xce, 0x01);
- analog_sync = 0;
- }
}
}
+ rk616_hdmi_sys_power_up();
+ rk616_hdmi_sys_power_down();
+ rk616_hdmi_sys_power_up();
+ HDMIWrReg(0xce, 0x00);
+ delay100us();
+ HDMIWrReg(0xce, 0x01);
}
else {
HDMIWrReg(AV_MUTE, v_AUDIO_MUTE(1) | v_VIDEO_MUTE(1));
}
else {
HDMIWrReg(AV_MUTE, v_AUDIO_MUTE(1) | v_VIDEO_MUTE(1));
@@
-467,6
+462,7
@@
int rk616_hdmi_initial(void)
hdmi->config_audio = rk616_hdmi_config_audio;
hdmi->detect_hotplug = rk616_hdmi_detect_hotplug;
hdmi->read_edid = rk616_hdmi_read_edid;
hdmi->config_audio = rk616_hdmi_config_audio;
hdmi->detect_hotplug = rk616_hdmi_detect_hotplug;
hdmi->read_edid = rk616_hdmi_read_edid;
+ hdmi->set_vif = rk616_set_vif;
rk616_hdmi_reset();
rk616_hdmi_reset();
diff --git
a/drivers/video/rockchip/hdmi/rk_hdmi.h
b/drivers/video/rockchip/hdmi/rk_hdmi.h
index 5c4cf8ad48038d3a6fd48c5cadf9e0c0ab3b5016..09dd016bc9b1e4c9f640321e79a6c7f4279004e0 100755
(executable)
--- a/
drivers/video/rockchip/hdmi/rk_hdmi.h
+++ b/
drivers/video/rockchip/hdmi/rk_hdmi.h
@@
-301,6
+301,7
@@
struct hdmi {
int (*detect_hotplug)(void);
// call back for edid
int (*read_edid)(int block, unsigned char *buff);
int (*detect_hotplug)(void);
// call back for edid
int (*read_edid)(int block, unsigned char *buff);
+ int (*set_vif)(rk_screen * screen,bool connect);
// call back for hdcp operatoion
void (*hdcp_cb)(void);
// call back for hdcp operatoion
void (*hdcp_cb)(void);
diff --git
a/drivers/video/rockchip/hdmi/rk_hdmi_lcdc.c
b/drivers/video/rockchip/hdmi/rk_hdmi_lcdc.c
index eda672f06ca51772c6fe2c591b533e43359054ad..22f38f356ea77b38bcd91c85d4ddfc86c9477739 100755
(executable)
--- a/
drivers/video/rockchip/hdmi/rk_hdmi_lcdc.c
+++ b/
drivers/video/rockchip/hdmi/rk_hdmi_lcdc.c
@@
-509,6
+509,8
@@
int hdmi_switch_fb(struct hdmi *hdmi, int vic)
rc = hdmi_set_info(screen, hdmi->vic);
if(rc == 0) {
rc = hdmi_set_info(screen, hdmi->vic);
if(rc == 0) {
+ if(hdmi->set_vif)
+ hdmi->set_vif(screen,1);
rk_fb_switch_screen(screen, 1, hdmi->lcdc->id);
rk_fb_disp_scale(hdmi->xscale, hdmi->yscale, hdmi->lcdc->id);
}
rk_fb_switch_screen(screen, 1, hdmi->lcdc->id);
rk_fb_disp_scale(hdmi->xscale, hdmi->yscale, hdmi->lcdc->id);
}
diff --git
a/drivers/video/rockchip/hdmi/rk_hdmi_task.c
b/drivers/video/rockchip/hdmi/rk_hdmi_task.c
index 82be97724ff2ef19c1e00654210b1128ba380e59..057e32d60554f65a31403113c104e682d3e22e20 100755
(executable)
--- a/
drivers/video/rockchip/hdmi/rk_hdmi_task.c
+++ b/
drivers/video/rockchip/hdmi/rk_hdmi_task.c
@@
-80,6
+80,8
@@
void hdmi_sys_remove(void)
memset(&hdmi->edid, 0, sizeof(struct hdmi_edid));
INIT_LIST_HEAD(&hdmi->edid.modelist);
hdmi->display = HDMI_DISABLE;
memset(&hdmi->edid, 0, sizeof(struct hdmi_edid));
INIT_LIST_HEAD(&hdmi->edid.modelist);
hdmi->display = HDMI_DISABLE;
+ 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
rk_fb_switch_screen(hdmi->lcdc->screen1, 0, hdmi->lcdc->id);
kobject_uevent_env(&hdmi->dev->kobj, KOBJ_REMOVE, envp);
#ifdef CONFIG_SWITCH