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@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> -- 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel