diff options
author | guoyin.chen <guoyin.chen@freescale.com> | 2013-01-28 12:39:59 +0800 |
---|---|---|
committer | guoyin.chen <guoyin.chen@freescale.com> | 2013-01-28 12:39:59 +0800 |
commit | d23447b13bfeccef0a7ff71cbdffbfb1ed548c2a (patch) | |
tree | 86eb9ffb4d78c22ce9180a9690499f52b4c9cab5 | |
parent | 7aca46617dbf94a1a62220408c629771e0377e9e (diff) |
ENGR00241962 Add another hdmi switch for hdmi driver
android framework need seperated hdmi display and hdmi audio switch
Signed-off-by: guoyin.chen <guoyin.chen@freescale.com>
-rw-r--r-- | drivers/video/mxc_hdmi.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c index c0dff37250c0..b2c5fb71e560 100644 --- a/drivers/video/mxc_hdmi.c +++ b/drivers/video/mxc_hdmi.c @@ -185,9 +185,9 @@ struct mxc_hdmi { struct fb_videomode previous_mode; struct fb_videomode previous_non_vga_mode; bool requesting_vga_for_initialization; - struct switch_dev sdev; - struct hdmi_phy_reg_config phy_config; + struct switch_dev sdev_audio; + struct switch_dev sdev_display; }; struct i2c_client *hdmi_i2c; @@ -1784,12 +1784,14 @@ static void hotplug_worker(struct work_struct *work) #endif hdmi_set_cable_state(1); - switch_set_state(&hdmi->sdev, 1); + switch_set_state(&hdmi->sdev_audio, 1); + switch_set_state(&hdmi->sdev_display, 1); } else if (!(phy_int_pol & HDMI_PHY_HPD)) { /* Plugout event */ dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); - switch_set_state(&hdmi->sdev, 0); + switch_set_state(&hdmi->sdev_audio, 0); + switch_set_state(&hdmi->sdev_display, 0); hdmi_set_cable_state(0); mxc_hdmi_abort_stream(); @@ -2387,8 +2389,10 @@ static int __devinit mxc_hdmi_probe(struct platform_device *pdev) goto edispdrv; } - hdmi->sdev.name = "hdmi_audio"; - switch_dev_register(&hdmi->sdev); + hdmi->sdev_audio.name = "hdmi_audio"; + hdmi->sdev_display.name = "hdmi"; + switch_dev_register(&hdmi->sdev_audio); + switch_dev_register(&hdmi->sdev_display); mxc_dispdrv_setdata(hdmi->disp_mxc_hdmi, hdmi); @@ -2412,7 +2416,8 @@ static int mxc_hdmi_remove(struct platform_device *pdev) fb_unregister_client(&hdmi->nb); - switch_dev_unregister(&hdmi->sdev); + switch_dev_unregister(&hdmi->sdev_audio); + switch_dev_unregister(&hdmi->sdev_display); mxc_dispdrv_puthandle(hdmi->disp_mxc_hdmi); mxc_dispdrv_unregister(hdmi->disp_mxc_hdmi); |