HDMI: rockchip-hdmiv2:
authorZheng Yang <zhengyang@rock-chips.com>
Thu, 26 Mar 2015 08:18:38 +0000 (16:18 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Thu, 26 Mar 2015 08:32:46 +0000 (16:32 +0800)
Set i2c5_hdmi to gpio mode when suspend and reset
it to hdmi ddc mode when system resume.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2.c

index 87d8158f67538a472489197d84df4cc82f3c1f7e..eaa91be7097e6bee91886f4bfba223f94d2c205f 100644 (file)
@@ -249,6 +249,7 @@ static int rockchip_hdmiv2_fb_event_notify(struct notifier_block *self,
        int blank_mode = *((int *)event->data);
        struct hdmi *hdmi = hdmi_dev->hdmi;
        struct delayed_work *delay_work;
+       struct pinctrl_state *gpio_state;
 
        if (action == FB_EARLY_EVENT_BLANK) {
                switch (blank_mode) {
@@ -264,6 +265,8 @@ static int rockchip_hdmiv2_fb_event_notify(struct notifier_block *self,
                                if (delay_work)
                                        flush_delayed_work(delay_work);
                                rockchip_hdmiv2_clk_disable(hdmi_dev);
+                               gpio_state = pinctrl_lookup_state(hdmi_dev->dev->pins->p, "gpio");
+                               pinctrl_select_state(hdmi_dev->dev->pins->p, gpio_state);
                        }
                        break;
                }
@@ -272,6 +275,8 @@ static int rockchip_hdmiv2_fb_event_notify(struct notifier_block *self,
                case FB_BLANK_UNBLANK:
                        HDMIDBG("resume hdmi\n");
                        if (hdmi->sleep) {
+                               pinctrl_select_state(hdmi_dev->dev->pins->p,
+                                                    hdmi_dev->dev->pins->default_state);
                                rockchip_hdmiv2_clk_enable(hdmi_dev);
                                rockchip_hdmiv2_dev_initial(hdmi_dev);
                                if (hdmi->ops->hdcp_power_on_cb)