.unbind = hdmi_unbind,
 };
 
+static struct device_node *hdmi_legacy_ddc_dt_binding(struct device *dev)
+{
+       const char *compatible_str = "samsung,exynos4210-hdmiddc";
+       struct device_node *np;
+
+       np = of_find_compatible_node(NULL, NULL, compatible_str);
+       if (np)
+               return of_get_next_parent(np);
+
+       return NULL;
+}
+
+static struct device_node *hdmi_legacy_phy_dt_binding(struct device *dev)
+{
+       const char *compatible_str = "samsung,exynos4212-hdmiphy";
+
+       return of_find_compatible_node(NULL, NULL, compatible_str);
+}
+
 static int hdmi_probe(struct platform_device *pdev)
 {
        struct device_node *ddc_node, *phy_node;
                return ret;
        }
 
+       ddc_node = hdmi_legacy_ddc_dt_binding(dev);
+       if (ddc_node)
+               goto out_get_ddc_adpt;
+
        /* DDC i2c driver */
        ddc_node = of_parse_phandle(dev->of_node, "ddc", 0);
        if (!ddc_node) {
                DRM_ERROR("Failed to find ddc node in device tree\n");
                return -ENODEV;
        }
+
+out_get_ddc_adpt:
        hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node);
        if (!hdata->ddc_adpt) {
                DRM_ERROR("Failed to get ddc i2c adapter by node\n");
                return -ENODEV;
        }
 
+       phy_node = hdmi_legacy_phy_dt_binding(dev);
+       if (phy_node)
+               goto out_get_phy_port;
+
        /* hdmiphy i2c driver */
        phy_node = of_parse_phandle(dev->of_node, "phy", 0);
        if (!phy_node) {
                goto err_ddc;
        }
 
+out_get_phy_port:
        if (drv_data->is_apb_phy) {
                hdata->regs_hdmiphy = of_iomap(phy_node, 0);
                if (!hdata->regs_hdmiphy) {