return 0;
 }
 
-void dss_sdi_init(int datapairs)
+void dss_sdi_init(struct dss_device *dss, int datapairs)
 {
        u32 l;
 
        dss_write_reg(DSS_PLL_CONTROL, l);
 }
 
-int dss_sdi_enable(void)
+int dss_sdi_enable(struct dss_device *dss)
 {
        unsigned long timeout;
 
        return -ETIMEDOUT;
 }
 
-void dss_sdi_disable(void)
+void dss_sdi_disable(struct dss_device *dss)
 {
        dispc_lcd_enable_signal(0);
 
                        dpi_init_port(pdev, port, dss.feat->model);
                        break;
                case OMAP_DISPLAY_TYPE_SDI:
-                       sdi_init_port(pdev, port);
+                       sdi_init_port(&dss, pdev, port);
                        break;
                default:
                        break;
 
 
 void dss_ctrl_pll_enable(struct dss_pll *pll, bool enable);
 
-void dss_sdi_init(int datapairs);
-int dss_sdi_enable(void);
-void dss_sdi_disable(void);
+void dss_sdi_init(struct dss_device *dss, int datapairs);
+int dss_sdi_enable(struct dss_device *dss);
+void dss_sdi_disable(struct dss_device *dss);
 
 void dss_select_dsi_clk_source(int dsi_module,
                enum dss_clk_source clk_src);
 
 /* SDI */
 #ifdef CONFIG_OMAP2_DSS_SDI
-int sdi_init_port(struct platform_device *pdev, struct device_node *port);
+int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
+                 struct device_node *port);
 void sdi_uninit_port(struct device_node *port);
 #else
-static inline int sdi_init_port(struct platform_device *pdev,
-               struct device_node *port)
+static inline int sdi_init_port(struct dss_device *dss,
+                               struct platform_device *pdev,
+                               struct device_node *port)
 {
        return 0;
 }
 
 
 static struct {
        struct platform_device *pdev;
+       struct dss_device *dss;
 
        bool update_enabled;
        struct regulator *vdds_sdi_reg;
         */
        dispc_mgr_set_clock_div(channel, &sdi.mgr_config.clock_info);
 
-       dss_sdi_init(sdi.datapairs);
-       r = dss_sdi_enable();
+       dss_sdi_init(sdi.dss, sdi.datapairs);
+       r = dss_sdi_enable(sdi.dss);
        if (r)
                goto err_sdi_enable;
        mdelay(2);
        return 0;
 
 err_mgr_enable:
-       dss_sdi_disable();
+       dss_sdi_disable(sdi.dss);
 err_sdi_enable:
 err_set_dss_clock_div:
 err_calc_clock_div:
 
        dss_mgr_disable(channel);
 
-       dss_sdi_disable();
+       dss_sdi_disable(sdi.dss);
 
        dispc_runtime_put();
 
        omapdss_unregister_output(out);
 }
 
-int sdi_init_port(struct platform_device *pdev, struct device_node *port)
+int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
+                 struct device_node *port)
 {
        struct device_node *ep;
        u32 datapairs;
        }
 
        sdi.datapairs = datapairs;
+       sdi.dss = dss;
 
        of_node_put(ep);