struct list_head list;
        struct device_node *node;
        bool dss_core_component;
+       const char *compat;
 };
 
 static bool omapdss_list_contains(const struct device_node *node)
 static void omapdss_walk_device(struct device *dev, struct device_node *node,
                                bool dss_core)
 {
+       struct omapdss_comp_node *comp;
        struct device_node *n;
-       struct omapdss_comp_node *comp = devm_kzalloc(dev, sizeof(*comp),
-                                                     GFP_KERNEL);
+       const char *compat;
+       int ret;
+
+       ret = of_property_read_string(node, "compatible", &compat);
+       if (ret < 0)
+               return;
 
+       comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
        if (comp) {
                comp->node = node;
                comp->dss_core_component = dss_core;
+               comp->compat = compat;
                list_add(&comp->list, &omapdss_comp_list);
        }
 
 
        omapdss_walk_device(dev, dev->of_node, true);
 
-       for_each_available_child_of_node(dev->of_node, child) {
-               if (!of_find_property(child, "compatible", NULL))
-                       continue;
-
+       for_each_available_child_of_node(dev->of_node, child)
                omapdss_walk_device(dev, child, true);
-       }
 }
 EXPORT_SYMBOL(omapdss_gather_components);
 
 {
        if (comp->dss_core_component)
                return true;
+       if (!strstarts(comp->compat, "omapdss,"))
+               return true;
        if (omapdss_device_is_registered(comp->node))
                return true;
 
 
        {},
 };
 
+static const struct of_device_id omapdss_of_fixups_whitelist[] __initconst = {
+       { .compatible = "composite-video-connector" },
+       { .compatible = "dvi-connector" },
+       { .compatible = "hdmi-connector" },
+       { .compatible = "lgphilips,lb035q02" },
+       { .compatible = "nec,nl8048hl11" },
+       { .compatible = "panel-dpi" },
+       { .compatible = "panel-dsi-cm" },
+       { .compatible = "sharp,ls037v7dw01" },
+       { .compatible = "sony,acx565akm" },
+       { .compatible = "svideo-connector" },
+       { .compatible = "ti,opa362" },
+       { .compatible = "ti,tfp410" },
+       { .compatible = "ti,tpd12s015" },
+       { .compatible = "toppoly,td028ttec1" },
+       { .compatible = "tpo,td028ttec1" },
+       { .compatible = "tpo,td043mtea1" },
+};
+
 static int __init omapdss_boot_init(void)
 {
        struct device_node *dss, *child;
                n = list_first_entry(&dss_conv_list, struct dss_conv_node,
                        list);
 
-               if (!n->root)
+               if (of_match_node(omapdss_of_fixups_whitelist, n->node))
                        omapdss_omapify_node(n->node);
 
                list_del(&n->list);