[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