drm: omapdrm: dss: Pass omap_dss_device pointer to dss_mgr_*() functions
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 13 Feb 2018 12:00:38 +0000 (14:00 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 1 Mar 2018 07:18:18 +0000 (09:18 +0200)
The dss_mgr_*() functions take a channel argument to identify the
channel they operate on. This prevents the functions from accessing
driver data structures without resorting to global variables. In an
effort to remove global variables, pass the omap_dss_device pointer
associated with the channel instead. This will be used to look up the
omap_drm_private data structure to pass to the dss_mgr_ops.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/gpu/drm/omapdrm/dss/dpi.c
drivers/gpu/drm/omapdrm/dss/dsi.c
drivers/gpu/drm/omapdrm/dss/hdmi4.c
drivers/gpu/drm/omapdrm/dss/hdmi5.c
drivers/gpu/drm/omapdrm/dss/omapdss.h
drivers/gpu/drm/omapdrm/dss/output.c
drivers/gpu/drm/omapdrm/dss/sdi.c
drivers/gpu/drm/omapdrm/dss/venc.c

index 338ceb1ba61bc72d9a3dd6d1c70919d3b49d2fb6..e818e7836cbba1e288b4845a7e762e538f000cf9 100644 (file)
@@ -343,8 +343,6 @@ static int dpi_set_dispc_clk(struct dpi_data *dpi, unsigned long pck_req,
 
 static int dpi_set_mode(struct dpi_data *dpi)
 {
-       struct omap_dss_device *out = &dpi->output;
-       enum omap_channel channel = out->dispc_channel;
        struct videomode *vm = &dpi->vm;
        int lck_div = 0, pck_div = 0;
        unsigned long fck = 0;
@@ -352,8 +350,8 @@ static int dpi_set_mode(struct dpi_data *dpi)
        int r = 0;
 
        if (dpi->pll)
-               r = dpi_set_pll_clk(dpi, channel, vm->pixelclock, &fck,
-                               &lck_div, &pck_div);
+               r = dpi_set_pll_clk(dpi, dpi->output.dispc_channel,
+                                   vm->pixelclock, &fck, &lck_div, &pck_div);
        else
                r = dpi_set_dispc_clk(dpi, vm->pixelclock, &fck,
                                &lck_div, &pck_div);
@@ -369,16 +367,13 @@ static int dpi_set_mode(struct dpi_data *dpi)
                vm->pixelclock = pck;
        }
 
-       dss_mgr_set_timings(channel, vm);
+       dss_mgr_set_timings(&dpi->output, vm);
 
        return 0;
 }
 
 static void dpi_config_lcd_manager(struct dpi_data *dpi)
 {
-       struct omap_dss_device *out = &dpi->output;
-       enum omap_channel channel = out->dispc_channel;
-
        dpi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS;
 
        dpi->mgr_config.stallmode = false;
@@ -388,14 +383,13 @@ static void dpi_config_lcd_manager(struct dpi_data *dpi)
 
        dpi->mgr_config.lcden_sig_polarity = 0;
 
-       dss_mgr_set_lcd_config(channel, &dpi->mgr_config);
+       dss_mgr_set_lcd_config(&dpi->output, &dpi->mgr_config);
 }
 
 static int dpi_display_enable(struct omap_dss_device *dssdev)
 {
        struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
        struct omap_dss_device *out = &dpi->output;
-       enum omap_channel channel = out->dispc_channel;
        int r;
 
        mutex_lock(&dpi->lock);
@@ -416,7 +410,7 @@ static int dpi_display_enable(struct omap_dss_device *dssdev)
        if (r)
                goto err_get_dispc;
 
-       r = dss_dpi_select_source(dpi->dss, out->port_num, channel);
+       r = dss_dpi_select_source(dpi->dss, out->port_num, out->dispc_channel);
        if (r)
                goto err_src_sel;
 
@@ -434,7 +428,7 @@ static int dpi_display_enable(struct omap_dss_device *dssdev)
 
        mdelay(2);
 
-       r = dss_mgr_enable(channel);
+       r = dss_mgr_enable(&dpi->output);
        if (r)
                goto err_mgr_enable;
 
@@ -461,14 +455,14 @@ err_no_out_mgr:
 static void dpi_display_disable(struct omap_dss_device *dssdev)
 {
        struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
-       enum omap_channel channel = dpi->output.dispc_channel;
 
        mutex_lock(&dpi->lock);
 
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&dpi->output);
 
        if (dpi->pll) {
-               dss_select_lcd_clk_source(dpi->dss, channel, DSS_CLK_SRC_FCK);
+               dss_select_lcd_clk_source(dpi->dss, dpi->output.dispc_channel,
+                                         DSS_CLK_SRC_FCK);
                dss_pll_disable(dpi->pll);
        }
 
@@ -658,7 +652,6 @@ static int dpi_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
        struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
-       enum omap_channel channel = dpi->output.dispc_channel;
        int r;
 
        r = dpi_init_regulator(dpi);
@@ -667,7 +660,7 @@ static int dpi_connect(struct omap_dss_device *dssdev,
 
        dpi_init_pll(dpi);
 
-       r = dss_mgr_connect(channel, dssdev);
+       r = dss_mgr_connect(&dpi->output, dssdev);
        if (r)
                return r;
 
@@ -675,7 +668,7 @@ static int dpi_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dst->name);
-               dss_mgr_disconnect(channel, dssdev);
+               dss_mgr_disconnect(&dpi->output, dssdev);
                return r;
        }
 
@@ -686,7 +679,6 @@ static void dpi_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
        struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
-       enum omap_channel channel = dpi->output.dispc_channel;
 
        WARN_ON(dst != dssdev->dst);
 
@@ -695,7 +687,7 @@ static void dpi_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(channel, dssdev);
+       dss_mgr_disconnect(&dpi->output, dssdev);
 }
 
 static const struct omapdss_dpi_ops dpi_ops = {
index 0c4668e722b9cea6626ae32aafc0fd757454738b..66c4d973e7eb3c9b111dcc78327272c1fe7ff52b 100644 (file)
@@ -3831,7 +3831,6 @@ static int dsi_configure_pins(struct omap_dss_device *dssdev,
 static int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel)
 {
        struct dsi_data *dsi = to_dsi_data(dssdev);
-       enum omap_channel dispc_channel = dssdev->dispc_channel;
        int bpp = dsi_get_pixel_size(dsi->pix_fmt);
        struct omap_dss_device *out = &dsi->output;
        u8 data_type;
@@ -3881,7 +3880,7 @@ static int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel)
                dsi_if_enable(dsi, true);
        }
 
-       r = dss_mgr_enable(dispc_channel);
+       r = dss_mgr_enable(&dsi->output);
        if (r)
                goto err_mgr_enable;
 
@@ -3901,7 +3900,6 @@ err_init_dispc:
 static void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel)
 {
        struct dsi_data *dsi = to_dsi_data(dssdev);
-       enum omap_channel dispc_channel = dssdev->dispc_channel;
 
        if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) {
                dsi_if_enable(dsi, false);
@@ -3914,14 +3912,13 @@ static void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel
                dsi_if_enable(dsi, true);
        }
 
-       dss_mgr_disable(dispc_channel);
+       dss_mgr_disable(&dsi->output);
 
        dsi_display_uninit_dispc(dsi);
 }
 
 static void dsi_update_screen_dispc(struct dsi_data *dsi)
 {
-       enum omap_channel dispc_channel = dsi->output.dispc_channel;
        unsigned int bytespp;
        unsigned int bytespl;
        unsigned int bytespf;
@@ -3983,9 +3980,9 @@ static void dsi_update_screen_dispc(struct dsi_data *dsi)
                msecs_to_jiffies(250));
        BUG_ON(r == 0);
 
-       dss_mgr_set_timings(dispc_channel, &dsi->vm);
+       dss_mgr_set_timings(&dsi->output, &dsi->vm);
 
-       dss_mgr_start_update(dispc_channel);
+       dss_mgr_start_update(&dsi->output);
 
        if (dsi->te_enabled) {
                /* disable LP_RX_TO, so that we can receive TE.  Time to wait
@@ -4112,7 +4109,7 @@ static int dsi_display_init_dispc(struct dsi_data *dsi)
                        DSS_CLK_SRC_PLL2_1);
 
        if (dsi->mode == OMAP_DSS_DSI_CMD_MODE) {
-               r = dss_mgr_register_framedone_handler(channel,
+               r = dss_mgr_register_framedone_handler(&dsi->output,
                                dsi_framedone_irq_callback, dsi);
                if (r) {
                        DSSERR("can't register FRAMEDONE handler\n");
@@ -4142,7 +4139,7 @@ static int dsi_display_init_dispc(struct dsi_data *dsi)
        dsi->vm.flags &= ~DISPLAY_FLAGS_SYNC_POSEDGE;
        dsi->vm.flags |= DISPLAY_FLAGS_SYNC_NEGEDGE;
 
-       dss_mgr_set_timings(channel, &dsi->vm);
+       dss_mgr_set_timings(&dsi->output, &dsi->vm);
 
        r = dsi_configure_dispc_clocks(dsi);
        if (r)
@@ -4153,12 +4150,12 @@ static int dsi_display_init_dispc(struct dsi_data *dsi)
                        dsi_get_pixel_size(dsi->pix_fmt);
        dsi->mgr_config.lcden_sig_polarity = 0;
 
-       dss_mgr_set_lcd_config(channel, &dsi->mgr_config);
+       dss_mgr_set_lcd_config(&dsi->output, &dsi->mgr_config);
 
        return 0;
 err1:
        if (dsi->mode == OMAP_DSS_DSI_CMD_MODE)
-               dss_mgr_unregister_framedone_handler(channel,
+               dss_mgr_unregister_framedone_handler(&dsi->output,
                                dsi_framedone_irq_callback, dsi);
 err:
        dss_select_lcd_clk_source(dsi->dss, channel, DSS_CLK_SRC_FCK);
@@ -4170,7 +4167,7 @@ static void dsi_display_uninit_dispc(struct dsi_data *dsi)
        enum omap_channel channel = dsi->output.dispc_channel;
 
        if (dsi->mode == OMAP_DSS_DSI_CMD_MODE)
-               dss_mgr_unregister_framedone_handler(channel,
+               dss_mgr_unregister_framedone_handler(&dsi->output,
                                dsi_framedone_irq_callback, dsi);
 
        dss_select_lcd_clk_source(dsi->dss, channel, DSS_CLK_SRC_FCK);
@@ -4965,14 +4962,13 @@ static int dsi_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
        struct dsi_data *dsi = to_dsi_data(dssdev);
-       enum omap_channel dispc_channel = dssdev->dispc_channel;
        int r;
 
        r = dsi_regulator_init(dsi);
        if (r)
                return r;
 
-       r = dss_mgr_connect(dispc_channel, dssdev);
+       r = dss_mgr_connect(&dsi->output, dssdev);
        if (r)
                return r;
 
@@ -4980,7 +4976,7 @@ static int dsi_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dssdev->name);
-               dss_mgr_disconnect(dispc_channel, dssdev);
+               dss_mgr_disconnect(&dsi->output, dssdev);
                return r;
        }
 
@@ -4990,7 +4986,7 @@ static int dsi_connect(struct omap_dss_device *dssdev,
 static void dsi_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel dispc_channel = dssdev->dispc_channel;
+       struct dsi_data *dsi = to_dsi_data(dssdev);
 
        WARN_ON(dst != dssdev->dst);
 
@@ -4999,7 +4995,7 @@ static void dsi_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(dispc_channel, dssdev);
+       dss_mgr_disconnect(&dsi->output, dssdev);
 }
 
 static const struct omapdss_dsi_ops dsi_ops = {
index 48608ebfeb0c4f0e048252032fc06bb8ba0092d5..096542fb75d2bad091d7fd326dd3384a43c7d318 100644 (file)
@@ -177,7 +177,6 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
 {
        int r;
        struct videomode *vm;
-       enum omap_channel channel = dssdev->dispc_channel;
        struct hdmi_wp_data *wp = &hdmi.wp;
        struct dss_pll_clock_info hdmi_cinfo = { 0 };
        unsigned int pc;
@@ -231,9 +230,9 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
        hdmi4_configure(&hdmi.core, &hdmi.wp, &hdmi.cfg);
 
        /* tv size */
-       dss_mgr_set_timings(channel, vm);
+       dss_mgr_set_timings(&hdmi.output, vm);
 
-       r = dss_mgr_enable(channel);
+       r = dss_mgr_enable(&hdmi.output);
        if (r)
                goto err_mgr_enable;
 
@@ -247,7 +246,7 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
        return 0;
 
 err_vid_enable:
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&hdmi.output);
 err_mgr_enable:
        hdmi_wp_set_phy_pwr(&hdmi.wp, HDMI_PHYPWRCMD_OFF);
 err_phy_pwr:
@@ -261,13 +260,11 @@ err_pll_enable:
 
 static void hdmi_power_off_full(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        hdmi_wp_clear_irqenable(&hdmi.wp, ~HDMI_IRQ_CORE);
 
        hdmi_wp_video_stop(&hdmi.wp);
 
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&hdmi.output);
 
        hdmi_wp_set_phy_pwr(&hdmi.wp, HDMI_PHYPWRCMD_OFF);
 
@@ -451,14 +448,13 @@ void hdmi4_core_disable(struct omap_dss_device *dssdev)
 static int hdmi_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
        int r;
 
        r = hdmi_init_regulator();
        if (r)
                return r;
 
-       r = dss_mgr_connect(channel, dssdev);
+       r = dss_mgr_connect(&hdmi.output, dssdev);
        if (r)
                return r;
 
@@ -466,7 +462,7 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dst->name);
-               dss_mgr_disconnect(channel, dssdev);
+               dss_mgr_disconnect(&hdmi.output, dssdev);
                return r;
        }
 
@@ -476,8 +472,6 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
 static void hdmi_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        WARN_ON(dst != dssdev->dst);
 
        if (dst != dssdev->dst)
@@ -485,7 +479,7 @@ static void hdmi_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(channel, dssdev);
+       dss_mgr_disconnect(&hdmi.output, dssdev);
 }
 
 static int hdmi_read_edid(struct omap_dss_device *dssdev,
index 8ede19c3d8e7a6e62a7e5b21ad262487440918c6..597baebd959c6d9f4ec7ebbb01a38194c08d424c 100644 (file)
@@ -173,7 +173,6 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
 {
        int r;
        struct videomode *vm;
-       enum omap_channel channel = dssdev->dispc_channel;
        struct dss_pll_clock_info hdmi_cinfo = { 0 };
        unsigned int pc;
 
@@ -227,9 +226,9 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
        hdmi5_configure(&hdmi.core, &hdmi.wp, &hdmi.cfg);
 
        /* tv size */
-       dss_mgr_set_timings(channel, vm);
+       dss_mgr_set_timings(&hdmi.output, vm);
 
-       r = dss_mgr_enable(channel);
+       r = dss_mgr_enable(&hdmi.output);
        if (r)
                goto err_mgr_enable;
 
@@ -243,7 +242,7 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
        return 0;
 
 err_vid_enable:
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&hdmi.output);
 err_mgr_enable:
        hdmi_wp_set_phy_pwr(&hdmi.wp, HDMI_PHYPWRCMD_OFF);
 err_phy_pwr:
@@ -257,13 +256,11 @@ err_pll_enable:
 
 static void hdmi_power_off_full(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        hdmi_wp_clear_irqenable(&hdmi.wp, 0xffffffff);
 
        hdmi_wp_video_stop(&hdmi.wp);
 
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&hdmi.output);
 
        hdmi_wp_set_phy_pwr(&hdmi.wp, HDMI_PHYPWRCMD_OFF);
 
@@ -456,14 +453,13 @@ static void hdmi_core_disable(struct omap_dss_device *dssdev)
 static int hdmi_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
        int r;
 
        r = hdmi_init_regulator();
        if (r)
                return r;
 
-       r = dss_mgr_connect(channel, dssdev);
+       r = dss_mgr_connect(&hdmi.output, dssdev);
        if (r)
                return r;
 
@@ -471,7 +467,7 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dst->name);
-               dss_mgr_disconnect(channel, dssdev);
+               dss_mgr_disconnect(&hdmi.output, dssdev);
                return r;
        }
 
@@ -481,8 +477,6 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
 static void hdmi_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        WARN_ON(dst != dssdev->dst);
 
        if (dst != dssdev->dst)
@@ -490,7 +484,7 @@ static void hdmi_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(channel, dssdev);
+       dss_mgr_disconnect(&hdmi.output, dssdev);
 }
 
 static int hdmi_read_edid(struct omap_dss_device *dssdev,
index 4222661d4c8843928893c62fe31a346a004ad87e..aeaa337b29c79147f3b2bfe21b003a5a3675759f 100644 (file)
@@ -656,20 +656,20 @@ struct dss_mgr_ops {
 int dss_install_mgr_ops(const struct dss_mgr_ops *mgr_ops);
 void dss_uninstall_mgr_ops(void);
 
-int dss_mgr_connect(enum omap_channel channel,
-               struct omap_dss_device *dst);
-void dss_mgr_disconnect(enum omap_channel channel,
-               struct omap_dss_device *dst);
-void dss_mgr_set_timings(enum omap_channel channel,
+int dss_mgr_connect(struct omap_dss_device *dssdev,
+                   struct omap_dss_device *dst);
+void dss_mgr_disconnect(struct omap_dss_device *dssdev,
+                       struct omap_dss_device *dst);
+void dss_mgr_set_timings(struct omap_dss_device *dssdev,
                const struct videomode *vm);
-void dss_mgr_set_lcd_config(enum omap_channel channel,
+void dss_mgr_set_lcd_config(struct omap_dss_device *dssdev,
                const struct dss_lcd_mgr_config *config);
-int dss_mgr_enable(enum omap_channel channel);
-void dss_mgr_disable(enum omap_channel channel);
-void dss_mgr_start_update(enum omap_channel channel);
-int dss_mgr_register_framedone_handler(enum omap_channel channel,
+int dss_mgr_enable(struct omap_dss_device *dssdev);
+void dss_mgr_disable(struct omap_dss_device *dssdev);
+void dss_mgr_start_update(struct omap_dss_device *dssdev);
+int dss_mgr_register_framedone_handler(struct omap_dss_device *dssdev,
                void (*handler)(void *), void *data);
-void dss_mgr_unregister_framedone_handler(enum omap_channel channel,
+void dss_mgr_unregister_framedone_handler(struct omap_dss_device *dssdev,
                void (*handler)(void *), void *data);
 
 /* dispc ops */
index a28e00c94c053befd36f6b7b4da7e0263e9c45c2..9ff29dea28ce8355d76d07c63d7abaf50c6e3754 100644 (file)
@@ -188,61 +188,63 @@ void dss_uninstall_mgr_ops(void)
 }
 EXPORT_SYMBOL(dss_uninstall_mgr_ops);
 
-int dss_mgr_connect(enum omap_channel channel,
-               struct omap_dss_device *dst)
+int dss_mgr_connect(struct omap_dss_device *dssdev, struct omap_dss_device *dst)
 {
-       return dss_mgr_ops->connect(channel, dst);
+       return dss_mgr_ops->connect(dssdev->dispc_channel, dst);
 }
 EXPORT_SYMBOL(dss_mgr_connect);
 
-void dss_mgr_disconnect(enum omap_channel channel,
-               struct omap_dss_device *dst)
+void dss_mgr_disconnect(struct omap_dss_device *dssdev,
+                       struct omap_dss_device *dst)
 {
-       dss_mgr_ops->disconnect(channel, dst);
+       dss_mgr_ops->disconnect(dssdev->dispc_channel, dst);
 }
 EXPORT_SYMBOL(dss_mgr_disconnect);
 
-void dss_mgr_set_timings(enum omap_channel channel, const struct videomode *vm)
+void dss_mgr_set_timings(struct omap_dss_device *dssdev,
+                        const struct videomode *vm)
 {
-       dss_mgr_ops->set_timings(channel, vm);
+       dss_mgr_ops->set_timings(dssdev->dispc_channel, vm);
 }
 EXPORT_SYMBOL(dss_mgr_set_timings);
 
-void dss_mgr_set_lcd_config(enum omap_channel channel,
+void dss_mgr_set_lcd_config(struct omap_dss_device *dssdev,
                const struct dss_lcd_mgr_config *config)
 {
-       dss_mgr_ops->set_lcd_config(channel, config);
+       dss_mgr_ops->set_lcd_config(dssdev->dispc_channel, config);
 }
 EXPORT_SYMBOL(dss_mgr_set_lcd_config);
 
-int dss_mgr_enable(enum omap_channel channel)
+int dss_mgr_enable(struct omap_dss_device *dssdev)
 {
-       return dss_mgr_ops->enable(channel);
+       return dss_mgr_ops->enable(dssdev->dispc_channel);
 }
 EXPORT_SYMBOL(dss_mgr_enable);
 
-void dss_mgr_disable(enum omap_channel channel)
+void dss_mgr_disable(struct omap_dss_device *dssdev)
 {
-       dss_mgr_ops->disable(channel);
+       dss_mgr_ops->disable(dssdev->dispc_channel);
 }
 EXPORT_SYMBOL(dss_mgr_disable);
 
-void dss_mgr_start_update(enum omap_channel channel)
+void dss_mgr_start_update(struct omap_dss_device *dssdev)
 {
-       dss_mgr_ops->start_update(channel);
+       dss_mgr_ops->start_update(dssdev->dispc_channel);
 }
 EXPORT_SYMBOL(dss_mgr_start_update);
 
-int dss_mgr_register_framedone_handler(enum omap_channel channel,
+int dss_mgr_register_framedone_handler(struct omap_dss_device *dssdev,
                void (*handler)(void *), void *data)
 {
-       return dss_mgr_ops->register_framedone_handler(channel, handler, data);
+       return dss_mgr_ops->register_framedone_handler(dssdev->dispc_channel,
+                                                      handler, data);
 }
 EXPORT_SYMBOL(dss_mgr_register_framedone_handler);
 
-void dss_mgr_unregister_framedone_handler(enum omap_channel channel,
+void dss_mgr_unregister_framedone_handler(struct omap_dss_device *dssdev,
                void (*handler)(void *), void *data)
 {
-       dss_mgr_ops->unregister_framedone_handler(channel, handler, data);
+       dss_mgr_ops->unregister_framedone_handler(dssdev->dispc_channel,
+                                                 handler, data);
 }
 EXPORT_SYMBOL(dss_mgr_unregister_framedone_handler);
index 6f39e0ff305527ba5fbfd6251337aacc371bdf76..bf225ae69b065ea3ce6088de011b2a2f73c7e632 100644 (file)
@@ -113,8 +113,6 @@ static int sdi_calc_clock_div(unsigned long pclk,
 
 static void sdi_config_lcd_manager(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        sdi.mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS;
 
        sdi.mgr_config.stallmode = false;
@@ -123,20 +121,18 @@ static void sdi_config_lcd_manager(struct omap_dss_device *dssdev)
        sdi.mgr_config.video_port_width = 24;
        sdi.mgr_config.lcden_sig_polarity = 1;
 
-       dss_mgr_set_lcd_config(channel, &sdi.mgr_config);
+       dss_mgr_set_lcd_config(&sdi.output, &sdi.mgr_config);
 }
 
 static int sdi_display_enable(struct omap_dss_device *dssdev)
 {
-       struct omap_dss_device *out = &sdi.output;
-       enum omap_channel channel = dssdev->dispc_channel;
        struct videomode *vm = &sdi.vm;
        unsigned long fck;
        struct dispc_clock_info dispc_cinfo;
        unsigned long pck;
        int r;
 
-       if (!out->dispc_channel_connected) {
+       if (!sdi.output.dispc_channel_connected) {
                DSSERR("failed to enable display: no output/manager\n");
                return -ENODEV;
        }
@@ -168,7 +164,7 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
        }
 
 
-       dss_mgr_set_timings(channel, vm);
+       dss_mgr_set_timings(&sdi.output, vm);
 
        r = dss_set_fck_rate(sdi.dss, fck);
        if (r)
@@ -187,7 +183,8 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
         * need to care about the shadow register mechanism for pck-free. The
         * exact reason for this is unknown.
         */
-       dispc_mgr_set_clock_div(channel, &sdi.mgr_config.clock_info);
+       dispc_mgr_set_clock_div(sdi.output.dispc_channel,
+                               &sdi.mgr_config.clock_info);
 
        dss_sdi_init(sdi.dss, sdi.datapairs);
        r = dss_sdi_enable(sdi.dss);
@@ -195,7 +192,7 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
                goto err_sdi_enable;
        mdelay(2);
 
-       r = dss_mgr_enable(channel);
+       r = dss_mgr_enable(&sdi.output);
        if (r)
                goto err_mgr_enable;
 
@@ -215,9 +212,7 @@ err_reg_enable:
 
 static void sdi_display_disable(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&sdi.output);
 
        dss_sdi_disable(sdi.dss);
 
@@ -274,14 +269,13 @@ static int sdi_init_regulator(void)
 static int sdi_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
        int r;
 
        r = sdi_init_regulator();
        if (r)
                return r;
 
-       r = dss_mgr_connect(channel, dssdev);
+       r = dss_mgr_connect(&sdi.output, dssdev);
        if (r)
                return r;
 
@@ -289,7 +283,7 @@ static int sdi_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dst->name);
-               dss_mgr_disconnect(channel, dssdev);
+               dss_mgr_disconnect(&sdi.output, dssdev);
                return r;
        }
 
@@ -299,8 +293,6 @@ static int sdi_connect(struct omap_dss_device *dssdev,
 static void sdi_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        WARN_ON(dst != dssdev->dst);
 
        if (dst != dssdev->dst)
@@ -308,7 +300,7 @@ static void sdi_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(channel, dssdev);
+       dss_mgr_disconnect(&sdi.output, dssdev);
 }
 
 static const struct omapdss_sdi_ops sdi_ops = {
index ed756d4c7210b2fd72eafa565b4c814de1aac687..bed3b54b70b2e6d5c0b909bc581a623760c37e34 100644 (file)
@@ -460,7 +460,6 @@ static const struct venc_config *venc_timings_to_config(struct videomode *vm)
 
 static int venc_power_on(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
        u32 l;
        int r;
 
@@ -486,13 +485,13 @@ static int venc_power_on(struct omap_dss_device *dssdev)
 
        venc_write_reg(VENC_OUTPUT_CONTROL, l);
 
-       dss_mgr_set_timings(channel, &venc.vm);
+       dss_mgr_set_timings(&venc.output, &venc.vm);
 
        r = regulator_enable(venc.vdda_dac_reg);
        if (r)
                goto err1;
 
-       r = dss_mgr_enable(channel);
+       r = dss_mgr_enable(&venc.output);
        if (r)
                goto err2;
 
@@ -511,12 +510,10 @@ err0:
 
 static void venc_power_off(struct omap_dss_device *dssdev)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        venc_write_reg(VENC_OUTPUT_CONTROL, 0);
        dss_set_dac_pwrdn_bgz(venc.dss, 0);
 
-       dss_mgr_disable(channel);
+       dss_mgr_disable(&venc.output);
 
        regulator_disable(venc.vdda_dac_reg);
 
@@ -749,14 +746,13 @@ static int venc_get_clocks(struct platform_device *pdev)
 static int venc_connect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
        int r;
 
        r = venc_init_regulator();
        if (r)
                return r;
 
-       r = dss_mgr_connect(channel, dssdev);
+       r = dss_mgr_connect(&venc.output, dssdev);
        if (r)
                return r;
 
@@ -764,7 +760,7 @@ static int venc_connect(struct omap_dss_device *dssdev,
        if (r) {
                DSSERR("failed to connect output to new device: %s\n",
                                dst->name);
-               dss_mgr_disconnect(channel, dssdev);
+               dss_mgr_disconnect(&venc.output, dssdev);
                return r;
        }
 
@@ -774,8 +770,6 @@ static int venc_connect(struct omap_dss_device *dssdev,
 static void venc_disconnect(struct omap_dss_device *dssdev,
                struct omap_dss_device *dst)
 {
-       enum omap_channel channel = dssdev->dispc_channel;
-
        WARN_ON(dst != dssdev->dst);
 
        if (dst != dssdev->dst)
@@ -783,7 +777,7 @@ static void venc_disconnect(struct omap_dss_device *dssdev,
 
        omapdss_output_unset_device(dssdev);
 
-       dss_mgr_disconnect(channel, dssdev);
+       dss_mgr_disconnect(&venc.output, dssdev);
 }
 
 static const struct omapdss_atv_ops venc_ops = {