struct clk *isfr_clk;
        struct clk *iahb_clk;
 
-       enum drm_connector_status connector_status;
-
        struct hdmi_data_info hdmi_data;
        int vic;
 
 {
        struct imx_hdmi *hdmi = container_of(connector, struct imx_hdmi,
                                             connector);
-       return hdmi->connector_status;
+
+       return hdmi_readb(hdmi, HDMI_PHY_STAT0) & HDMI_PHY_HPD ?
+               connector_status_connected : connector_status_disconnected;
 }
 
 static int imx_hdmi_connector_get_modes(struct drm_connector *connector)
 
                        hdmi_modb(hdmi, 0, HDMI_PHY_HPD, HDMI_PHY_POL0);
 
-                       hdmi->connector_status = connector_status_connected;
                        imx_hdmi_poweron(hdmi);
                } else {
                        dev_dbg(hdmi->dev, "EVENT=plugout\n");
                        hdmi_modb(hdmi, HDMI_PHY_HPD, HDMI_PHY_HPD,
                                HDMI_PHY_POL0);
 
-                       hdmi->connector_status = connector_status_disconnected;
                        imx_hdmi_poweroff(hdmi);
                }
                drm_helper_hpd_irq_event(hdmi->connector.dev);
                return -ENOMEM;
 
        hdmi->dev = dev;
-       hdmi->connector_status = connector_status_disconnected;
        hdmi->sample_rate = 48000;
        hdmi->ratio = 100;