summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguoyin.chen <guoyin.chen@freescale.com>2013-01-28 12:39:59 +0800
committerguoyin.chen <guoyin.chen@freescale.com>2013-01-28 12:39:59 +0800
commitd23447b13bfeccef0a7ff71cbdffbfb1ed548c2a (patch)
tree86eb9ffb4d78c22ce9180a9690499f52b4c9cab5
parent7aca46617dbf94a1a62220408c629771e0377e9e (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.c19
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);