[PATCH 41/48] drm: omapdrm: dss: Pass omap_dss_device pointer to dss_mgr_*() functions
Sebastian Reichel
sre at kernel.org
Tue Oct 17 20:31:05 UTC 2017
Hi,
On Fri, Oct 13, 2017 at 05:59:37PM +0300, Laurent Pinchart wrote:
> 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 at ideasonboard.com>
> ---
Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.co.uk>
-- Sebastian
> drivers/gpu/drm/omapdrm/dss/dpi.c | 32 ++++++++++----------------
> drivers/gpu/drm/omapdrm/dss/dsi.c | 30 +++++++++++--------------
> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 20 +++++++----------
> drivers/gpu/drm/omapdrm/dss/hdmi5.c | 20 +++++++----------
> drivers/gpu/drm/omapdrm/dss/omapdss.h | 22 +++++++++---------
> drivers/gpu/drm/omapdrm/dss/output.c | 42 ++++++++++++++++++-----------------
> drivers/gpu/drm/omapdrm/dss/sdi.c | 27 +++++++++-------------
> drivers/gpu/drm/omapdrm/dss/venc.c | 18 ++++++---------
> 8 files changed, 92 insertions(+), 119 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/dpi.c b/drivers/gpu/drm/omapdrm/dss/dpi.c
> index b0f890a3c8db..3894e53ff58d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dpi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dpi.c
> @@ -344,8 +344,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;
> @@ -353,8 +351,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);
> @@ -370,16 +368,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;
> @@ -389,14 +384,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);
> @@ -417,7 +411,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;
>
> @@ -435,7 +429,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;
>
> @@ -462,14 +456,14 @@ static int dpi_display_enable(struct omap_dss_device *dssdev)
> 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);
> }
>
> @@ -659,7 +653,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);
> @@ -668,7 +661,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;
>
> @@ -676,7 +669,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;
> }
>
> @@ -687,7 +680,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);
>
> @@ -696,7 +688,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 = {
> diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
> index d1cc036ed280..512625ed03e2 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dsi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
> @@ -3833,7 +3833,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;
> @@ -3883,7 +3882,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;
>
> @@ -3903,7 +3902,6 @@ static int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel)
> 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);
> @@ -3916,14 +3914,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;
> @@ -3985,9 +3982,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
> @@ -4114,7 +4111,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");
> @@ -4144,7 +4141,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)
> @@ -4155,12 +4152,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);
> @@ -4172,7 +4169,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);
> @@ -4967,14 +4964,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;
>
> @@ -4982,7 +4978,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;
> }
>
> @@ -4992,7 +4988,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);
>
> @@ -5001,7 +4997,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 = {
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> index f0a30b248a7d..56de3c75b0a0 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> @@ -174,7 +174,6 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> {
> int r;
> struct videomode *vm;
> - enum omap_channel channel = hdmi->output.dispc_channel;
> struct hdmi_wp_data *wp = &hdmi->wp;
> struct dss_pll_clock_info hdmi_cinfo = { 0 };
> unsigned int pc;
> @@ -228,9 +227,9 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> 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;
>
> @@ -244,7 +243,7 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> 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:
> @@ -258,13 +257,11 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
>
> static void hdmi_power_off_full(struct omap_hdmi *hdmi)
> {
> - enum omap_channel channel = hdmi->output.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);
>
> @@ -459,14 +456,13 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
> struct omap_dss_device *dst)
> {
> struct omap_hdmi *hdmi = dssdev_to_hdmi(dssdev);
> - enum omap_channel channel = dssdev->dispc_channel;
> int r;
>
> r = hdmi_init_regulator(hdmi);
> if (r)
> return r;
>
> - r = dss_mgr_connect(channel, dssdev);
> + r = dss_mgr_connect(&hdmi->output, dssdev);
> if (r)
> return r;
>
> @@ -474,7 +470,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;
> }
>
> @@ -484,7 +480,7 @@ 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;
> + struct omap_hdmi *hdmi = dssdev_to_hdmi(dssdev);
>
> WARN_ON(dst != dssdev->dst);
>
> @@ -493,7 +489,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,
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> index ed8a2bd2a035..1e839af800e7 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> @@ -172,7 +172,6 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> {
> int r;
> struct videomode *vm;
> - enum omap_channel channel = hdmi->output.dispc_channel;
> struct dss_pll_clock_info hdmi_cinfo = { 0 };
> unsigned int pc;
>
> @@ -226,9 +225,9 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> 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;
>
> @@ -242,7 +241,7 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
> 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:
> @@ -256,13 +255,11 @@ static int hdmi_power_on_full(struct omap_hdmi *hdmi)
>
> static void hdmi_power_off_full(struct omap_hdmi *hdmi)
> {
> - enum omap_channel channel = hdmi->output.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);
>
> @@ -463,14 +460,13 @@ static int hdmi_connect(struct omap_dss_device *dssdev,
> struct omap_dss_device *dst)
> {
> struct omap_hdmi *hdmi = dssdev_to_hdmi(dssdev);
> - enum omap_channel channel = dssdev->dispc_channel;
> int r;
>
> r = hdmi_init_regulator(hdmi);
> if (r)
> return r;
>
> - r = dss_mgr_connect(channel, dssdev);
> + r = dss_mgr_connect(&hdmi->output, dssdev);
> if (r)
> return r;
>
> @@ -478,7 +474,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;
> }
>
> @@ -488,7 +484,7 @@ 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;
> + struct omap_hdmi *hdmi = dssdev_to_hdmi(dssdev);
>
> WARN_ON(dst != dssdev->dst);
>
> @@ -497,7 +493,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,
> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> index 6f9b9b2d8af2..8024680e8d57 100644
> --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> @@ -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 */
> diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c
> index a84ab0337a91..0573b5099f8f 100644
> --- a/drivers/gpu/drm/omapdrm/dss/output.c
> +++ b/drivers/gpu/drm/omapdrm/dss/output.c
> @@ -184,52 +184,54 @@ 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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
>
> -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);
> }
> diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/dss/sdi.c
> index a35dc51c5a6a..681a3653dd8c 100644
> --- a/drivers/gpu/drm/omapdrm/dss/sdi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/sdi.c
> @@ -115,8 +115,6 @@ static int sdi_calc_clock_div(struct sdi_device *sdi, unsigned long pclk,
>
> static void sdi_config_lcd_manager(struct sdi_device *sdi)
> {
> - enum omap_channel channel = sdi->output.dispc_channel;
> -
> sdi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS;
>
> sdi->mgr_config.stallmode = false;
> @@ -125,21 +123,19 @@ static void sdi_config_lcd_manager(struct sdi_device *sdi)
> 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 sdi_device *sdi = dssdev_to_sdi(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;
> }
> @@ -171,7 +167,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)
> @@ -190,7 +186,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);
> @@ -198,7 +195,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;
>
> @@ -219,9 +216,8 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
> static void sdi_display_disable(struct omap_dss_device *dssdev)
> {
> struct sdi_device *sdi = dssdev_to_sdi(dssdev);
> - enum omap_channel channel = dssdev->dispc_channel;
>
> - dss_mgr_disable(channel);
> + dss_mgr_disable(&sdi->output);
>
> dss_sdi_disable(sdi->dss);
>
> @@ -283,14 +279,13 @@ static int sdi_connect(struct omap_dss_device *dssdev,
> struct omap_dss_device *dst)
> {
> struct sdi_device *sdi = dssdev_to_sdi(dssdev);
> - enum omap_channel channel = dssdev->dispc_channel;
> int r;
>
> r = sdi_init_regulator(sdi);
> if (r)
> return r;
>
> - r = dss_mgr_connect(channel, dssdev);
> + r = dss_mgr_connect(&sdi->output, dssdev);
> if (r)
> return r;
>
> @@ -298,7 +293,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;
> }
>
> @@ -308,7 +303,7 @@ 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;
> + struct sdi_device *sdi = dssdev_to_sdi(dssdev);
>
> WARN_ON(dst != dssdev->dst);
>
> @@ -317,7 +312,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 = {
> diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
> index 7acdbfefe397..d82645e84db7 100644
> --- a/drivers/gpu/drm/omapdrm/dss/venc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/venc.c
> @@ -468,7 +468,6 @@ static const struct venc_config *venc_timings_to_config(struct videomode *vm)
>
> static int venc_power_on(struct venc_device *venc)
> {
> - enum omap_channel channel = venc->output.dispc_channel;
> u32 l;
> int r;
>
> @@ -494,13 +493,13 @@ static int venc_power_on(struct venc_device *venc)
>
> venc_write_reg(venc, 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;
>
> @@ -519,12 +518,10 @@ static int venc_power_on(struct venc_device *venc)
>
> static void venc_power_off(struct venc_device *venc)
> {
> - enum omap_channel channel = venc->output.dispc_channel;
> -
> venc_write_reg(venc, 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);
>
> @@ -768,14 +765,13 @@ static int venc_connect(struct omap_dss_device *dssdev,
> struct omap_dss_device *dst)
> {
> struct venc_device *venc = dssdev_to_venc(dssdev);
> - enum omap_channel channel = dssdev->dispc_channel;
> int r;
>
> r = venc_init_regulator(venc);
> if (r)
> return r;
>
> - r = dss_mgr_connect(channel, dssdev);
> + r = dss_mgr_connect(&venc->output, dssdev);
> if (r)
> return r;
>
> @@ -783,7 +779,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;
> }
>
> @@ -793,7 +789,7 @@ 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;
> + struct venc_device *venc = dssdev_to_venc(dssdev);
>
> WARN_ON(dst != dssdev->dst);
>
> @@ -802,7 +798,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 = {
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20171017/ba7d7a04/attachment-0001.sig>
More information about the dri-devel
mailing list