drm: bridge: Pass drm_display_info to drm_bridge_funcs .mode_valid()
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 26 May 2020 01:14:48 +0000 (04:14 +0300)
committerSam Ravnborg <sam@ravnborg.org>
Tue, 23 Jun 2020 17:53:27 +0000 (19:53 +0200)
commit12c683e12cd8e2dcf7b7143bebceae484d17727a
tree0b6e74b4753c70a1245e6d4aa2572b7d8936b800
parent192a3aa0e4e20e1087baa29183c5d64d48716fa9
drm: bridge: Pass drm_display_info to drm_bridge_funcs .mode_valid()

When validating a mode, bridges may need to do so in the context of a
display, as specified by drm_display_info. An example is the meson
dw-hdmi bridge that needs to consider the YUV 4:2:0 output format to
perform clock calculations.

Bridges that need the display info currently retrieve it from the
drm_connector created by the bridge. This gets in the way of moving
connector creation out of bridge drivers. To make this possible, pass
the drm_display_info to drm_bridge_funcs .mode_valid().

Changes to the bridge drivers have been performed with the following
coccinelle semantic patch and have been compile-tested.

@ rule1 @
identifier funcs;
identifier fn;
@@
 struct drm_bridge_funcs funcs = {
  ...,
  .mode_valid = fn
 };

@ depends on rule1 @
identifier rule1.fn;
identifier bridge;
identifier mode;
@@
 enum drm_mode_status fn(
  struct drm_bridge *bridge,
+ const struct drm_display_info *info,
  const struct drm_display_mode *mode
 )
 {
  ...
 }

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Guido Günther <agx@sigxcpu.org> # for the nwl-dsi part:
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200526011505.31884-11-laurent.pinchart+renesas@ideasonboard.com
21 files changed:
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
drivers/gpu/drm/bridge/cdns-dsi.c
drivers/gpu/drm/bridge/chrontel-ch7033.c
drivers/gpu/drm/bridge/nwl-dsi.c
drivers/gpu/drm/bridge/sii9234.c
drivers/gpu/drm/bridge/sil-sii8620.c
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
drivers/gpu/drm/bridge/tc358767.c
drivers/gpu/drm/bridge/tc358768.c
drivers/gpu/drm/bridge/thc63lvd1024.c
drivers/gpu/drm/bridge/ti-tfp410.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_bridge.c
drivers/gpu/drm/drm_probe_helper.c
drivers/gpu/drm/i2c/tda998x_drv.c
drivers/gpu/drm/omapdrm/dss/dpi.c
drivers/gpu/drm/omapdrm/dss/sdi.c
drivers/gpu/drm/omapdrm/dss/venc.c
include/drm/drm_bridge.h