From 218be25fc55292113fc79e385f1418d1e3058aab Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Fri, 7 Nov 2014 18:01:48 +0800 Subject: [PATCH] hdmi & fb: For box, we need to set hdmi switch state when insert/remove, regardless of whether the device supports audio. So add function rk_fb_get_display_policy() to get display policy. --- drivers/video/rockchip/hdmi/rk_hdmi_task.c | 9 ++++++--- drivers/video/rockchip/rk_fb.c | 12 ++++++++++++ include/linux/rk_fb.h | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/hdmi/rk_hdmi_task.c b/drivers/video/rockchip/hdmi/rk_hdmi_task.c index b7d96ffd3373..eb3c7db97adf 100755 --- a/drivers/video/rockchip/hdmi/rk_hdmi_task.c +++ b/drivers/video/rockchip/hdmi/rk_hdmi_task.c @@ -97,7 +97,8 @@ void hdmi_sys_remove(struct hdmi *hdmi) kobject_uevent_env(&hdmi->ddev->dev->kobj, KOBJ_REMOVE, envp); #ifdef CONFIG_SWITCH - if (audio_need) + if (audio_need || + rk_fb_get_display_policy() == DISPLAY_POLICY_BOX) switch_set_state(&(hdmi->switch_hdmi), 0); #endif rockchip_clear_system_status(SYS_STATUS_HDMI); @@ -249,8 +250,10 @@ void hdmi_work(struct work_struct *work) hdmi->edid.base_audio_support, hdmi->edid.sink_hdmi); #ifdef CONFIG_SWITCH - if (hdmi->edid.base_audio_support == 1 && - hdmi->edid.sink_hdmi == 1) + if ((hdmi->edid.base_audio_support == 1 && + hdmi->edid.sink_hdmi == 1) || + (rk_fb_get_display_policy() == + DISPLAY_POLICY_BOX)) switch_set_state(&(hdmi->switch_hdmi), 1); #endif diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 6cdd2cee107d..b8ec0f5ae070 100755 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -77,6 +77,18 @@ int support_uboot_display(void) return uboot_logo_on; } +int rk_fb_get_display_policy(void) +{ + struct rk_fb *rk_fb; + + if (fb_pdev) { + rk_fb = platform_get_drvdata(fb_pdev); + return rk_fb->disp_policy; + } else { + return DISPLAY_POLICY_SDK; + } +} + int rk_fb_trsm_ops_register(struct rk_fb_trsm_ops *ops, int type) { switch (type) { diff --git a/include/linux/rk_fb.h b/include/linux/rk_fb.h index e34158bcf540..1c4ec6d791e6 100755 --- a/include/linux/rk_fb.h +++ b/include/linux/rk_fb.h @@ -666,4 +666,5 @@ extern int rk_get_real_fps(int time); extern struct device *rk_fb_get_sysmmu_device_by_compatible(const char *compt); extern void rk_fb_platform_set_sysmmu(struct device *sysmmu, struct device *dev); +int rk_fb_get_display_policy(void); #endif -- 2.34.1