OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
[linux-2.6-block.git] / drivers / video / fbdev / omap2 / dss / dss.c
index 6daeb7ed44c685cd09d2831664c37b2f4071d29f..391a6da55e8df4207d14e6b62e0f1a7e32b2077f 100644 (file)
@@ -820,10 +820,20 @@ static int __init dss_init_ports(struct platform_device *pdev)
        return 0;
 }
 
-static void __exit dss_uninit_ports(void)
+static void __exit dss_uninit_ports(struct platform_device *pdev)
 {
+       struct device_node *parent = pdev->dev.of_node;
+       struct device_node *port;
+
+       if (parent == NULL)
+               return;
+
+       port = omapdss_of_get_next_port(parent, NULL);
+       if (!port)
+               return;
+
 #ifdef CONFIG_OMAP2_DSS_DPI
-       dpi_uninit_port();
+       dpi_uninit_port(port);
 #endif
 
 #ifdef CONFIG_OMAP2_DSS_SDI
@@ -910,7 +920,7 @@ err_setup_clocks:
 
 static int __exit omap_dsshw_remove(struct platform_device *pdev)
 {
-       dss_uninit_ports();
+       dss_uninit_ports(pdev);
 
        pm_runtime_disable(&pdev->dev);
 
@@ -966,6 +976,7 @@ static struct platform_driver omap_dsshw_driver = {
                .owner  = THIS_MODULE,
                .pm     = &dss_pm_ops,
                .of_match_table = dss_of_match,
+               .suppress_bind_attrs = true,
        },
 };