[PATCH v2 00/20] drm/atomic: Provide default ->best_encoder() behavior

Daniel Vetter
Fri, 10 Jun 2016 15:25:58 -0000

On Tue, Jun 07, 2016 at 01:47:55PM +0200, Boris Brezillon
wrote:
> Hello,
>
> This patch series aims at replacing all dummy ->best_encoder()
> implementations where we have a 1:1 relationship between encoders
> and connectors.
> The core already provides the drm_atomic_helper_best_encoder()
> function which is taking the first encoder attached to the
> connector (after making sure only one encoder was attached to the
> connector), but it's not automatically used, and drivers wanting
> to rely on this default behavior have to explicitly assign their
> ->best_encoder() hook to drm_atomic_helper_best_encoder().
>
> The first patch fixes remaining places where
> drm_atomic_helper_best_encoder() should be called when ->best_encoder()
> is NULL, so that drivers using the atomic helpers can get rid of the
> explicit ->best_encoder assignment if they need to rely on the default
> drm_atomic_helper_best_encoder() implementation.
>
> The following patches are killing all open coded ->best_encoder()
> implementations that could be replaced by
> drm_atomic_helper_best_encoder().
>
> All modifications have been compile tested except for the changed on
> the intel driver.
> I've also tested on an atmel board, but I recommend waiting for DRM
> driver maintainers feedback before applying the associated changes.
>
> Note that once patch 1 is applied, the other patches can be applied
> independently.

One comment on the i915 patch, all others should now be in drm-misc.
Thanks a lot for doing this.
-Daniel

>
> Best Regards,
>
> Boris
>
> Changes since v1:
> - remove useless ->encoder backpointers in some implementations
> - documented the default behavior in the vtable doc
> - added R-b/A-b tags
>
> Boris Brezillon (20):
>   drm/atomic: Fix remaining places where !funcs->best_encoder is valid
>   drm: arc: Rely on the default ->best_encoder() behavior
>   drm: atmel-hlcdc: Rely on the default ->best_encoder() behavior
>   drm: exynos: Rely on the default ->best_encoder() behavior
>   drm: fsl-dcu: Rely on the default ->best_encoder() behavior
>   drm: i915: Rely on the default ->best_encoder() behavior where
>     appropriate
>   drm: mediatek: Rely on the default ->best_encoder() behavior
>   drm: msm: Rely on the default ->best_encoder() behavior where
>     appropriate
>   drm: rcar-du: Rely on the default ->best_encoder() behavior
>   drm: rockchip: Rely on the default ->best_encoder() behavior
>   drm: sti: Rely on the default ->best_encoder() behavior
>   drm: sun4i: Rely on the default ->best_encoder() behavior
>   drm: tegra: Rely on the default ->best_encoder() behavior
>   drm: vc4: Rely on the default ->best_encoder() behavior
>   drm: virtgpu: Rely on the default ->best_encoder() behavior
>   drm: omap: Rely on the default ->best_encoder() behavior
>   drm/bridge: anx78xx: Rely on the default ->best_encoder() behavior
>   drm/bridge: ptn3460: Rely on the default ->best_encoder() behavior
>   drm/bridge: ps8622: Rely on the default ->best_encoder() behavior
>   drm/bridge: dw-hdmi: Use drm_atomic_helper_best_encoder()
>
>  drivers/gpu/drm/arc/arcpgu_hdmi.c                  | 18 ------------------
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c   | 12 ------------
>  drivers/gpu/drm/bridge/analogix-anx78xx.c          |  8 --------
>  drivers/gpu/drm/bridge/dw-hdmi.c                   | 11 +----------
>  drivers/gpu/drm/bridge/nxp-ptn3460.c               |  8 --------
>  drivers/gpu/drm/bridge/parade-ps8622.c             | 10 ----------
>  drivers/gpu/drm/drm_atomic_helper.c                |  4 +++-
>  drivers/gpu/drm/drm_fb_helper.c                    | 13 ++++++++++++-
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c            |  9 ---------
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c            |  9 ---------
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c           |  8 --------
>  drivers/gpu/drm/exynos/exynos_hdmi.c               |  8 --------
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c          |  9 ---------
>  drivers/gpu/drm/i915/intel_crt.c                   |  1 -
>  drivers/gpu/drm/i915/intel_display.c               |  8 --------
>  drivers/gpu/drm/i915/intel_dp.c                    |  1 -
>  drivers/gpu/drm/i915/intel_drv.h                   |  1 -
>  drivers/gpu/drm/i915/intel_dsi.c                   |  1 -
>  drivers/gpu/drm/i915/intel_dvo.c                   |  1 -
>  drivers/gpu/drm/i915/intel_hdmi.c                  |  1 -
>  drivers/gpu/drm/i915/intel_lvds.c                  |  1 -
>  drivers/gpu/drm/i915/intel_sdvo.c                  |  1 -
>  drivers/gpu/drm/i915/intel_tv.c                    |  1 -
>  drivers/gpu/drm/mediatek/mtk_dsi.c                 |  9 ---------
>  drivers/gpu/drm/msm/edp/edp_connector.c            | 10 ----------
>  drivers/gpu/drm/msm/hdmi/hdmi_connector.c          |  8 --------
>  drivers/gpu/drm/msm/mdp/mdp4/mdp4_lvds_connector.c |  9 ---------
>  drivers/gpu/drm/omapdrm/omap_connector.c           | 10 ----------
>  drivers/gpu/drm/rcar-du/rcar_du_encoder.c          | 12 ------------
>  drivers/gpu/drm/rcar-du/rcar_du_encoder.h          |  3 ---
>  drivers/gpu/drm/rcar-du/rcar_du_hdmicon.c          |  1 -
>  drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c          |  1 -
>  drivers/gpu/drm/rcar-du/rcar_du_vgacon.c           |  3 ---
>  drivers/gpu/drm/rockchip/dw-mipi-dsi.c             |  9 ---------
>  drivers/gpu/drm/rockchip/inno_hdmi.c               |  9 ---------
>  drivers/gpu/drm/sti/sti_dvo.c                      | 10 ----------
>  drivers/gpu/drm/sti/sti_hda.c                      | 10 ----------
>  drivers/gpu/drm/sti/sti_hdmi.c                     | 10 ----------
>  drivers/gpu/drm/sun4i/sun4i_rgb.c                  | 10 ----------
>  drivers/gpu/drm/sun4i/sun4i_tv.c                   |  9 ---------
>  drivers/gpu/drm/tegra/drm.h                        |  2 --
>  drivers/gpu/drm/tegra/dsi.c                        |  1 -
>  drivers/gpu/drm/tegra/hdmi.c                       |  1 -
>  drivers/gpu/drm/tegra/output.c                     |  8 --------
>  drivers/gpu/drm/tegra/rgb.c                        |  1 -
>  drivers/gpu/drm/tegra/sor.c                        |  1 -
>  drivers/gpu/drm/vc4/vc4_dpi.c                      |  9 ---------
>  drivers/gpu/drm/vc4/vc4_hdmi.c                     |  9 ---------
>  drivers/gpu/drm/virtio/virtgpu_display.c           | 10 ----------
>  include/drm/drm_modeset_helper_vtables.h           | 10 ++++++++--
>  50 files changed, 24 insertions(+), 305 deletions(-)
>
> --
> 2.7.4
>

--
Daniel Vetter
Software Engineer, Intel Corporation