Skip to content

Commit 12c683e

Browse files
Laurent Pinchartsravnborg
authored andcommitted
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 <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> Reviewed-by: Guido Günther <[email protected]> # for the nwl-dsi part: Signed-off-by: Sam Ravnborg <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/20200526011505.31884-11-laurent.pinchart+renesas@ideasonboard.com
1 parent 192a3aa commit 12c683e

21 files changed

+28
-3
lines changed

drivers/gpu/drm/bridge/analogix/analogix-anx6345.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,7 @@ static int anx6345_bridge_attach(struct drm_bridge *bridge,
585585

586586
static enum drm_mode_status
587587
anx6345_bridge_mode_valid(struct drm_bridge *bridge,
588+
const struct drm_display_info *info,
588589
const struct drm_display_mode *mode)
589590
{
590591
if (mode->flags & DRM_MODE_FLAG_INTERLACE)

drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,7 @@ static int anx78xx_bridge_attach(struct drm_bridge *bridge,
944944

945945
static enum drm_mode_status
946946
anx78xx_bridge_mode_valid(struct drm_bridge *bridge,
947+
const struct drm_display_info *info,
947948
const struct drm_display_mode *mode)
948949
{
949950
if (mode->flags & DRM_MODE_FLAG_INTERLACE)

drivers/gpu/drm/bridge/cdns-dsi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ static int cdns_dsi_bridge_attach(struct drm_bridge *bridge,
663663

664664
static enum drm_mode_status
665665
cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge,
666+
const struct drm_display_info *info,
666667
const struct drm_display_mode *mode)
667668
{
668669
struct cdns_dsi_input *input = bridge_to_cdns_dsi_input(bridge);

drivers/gpu/drm/bridge/chrontel-ch7033.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ static void ch7033_bridge_detach(struct drm_bridge *bridge)
317317
}
318318

319319
static enum drm_mode_status ch7033_bridge_mode_valid(struct drm_bridge *bridge,
320+
const struct drm_display_info *info,
320321
const struct drm_display_mode *mode)
321322
{
322323
if (mode->clock > 165000)

drivers/gpu/drm/bridge/nwl-dsi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,7 @@ static bool nwl_dsi_bridge_mode_fixup(struct drm_bridge *bridge,
818818

819819
static enum drm_mode_status
820820
nwl_dsi_bridge_mode_valid(struct drm_bridge *bridge,
821+
const struct drm_display_info *info,
821822
const struct drm_display_mode *mode)
822823
{
823824
struct nwl_dsi *dsi = bridge_to_dsi(bridge);

drivers/gpu/drm/bridge/sii9234.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,7 @@ static inline struct sii9234 *bridge_to_sii9234(struct drm_bridge *bridge)
873873
}
874874

875875
static enum drm_mode_status sii9234_mode_valid(struct drm_bridge *bridge,
876+
const struct drm_display_info *info,
876877
const struct drm_display_mode *mode)
877878
{
878879
if (mode->clock > MHL1_MAX_CLK)

drivers/gpu/drm/bridge/sil-sii8620.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2244,6 +2244,7 @@ static int sii8620_is_packing_required(struct sii8620 *ctx,
22442244
}
22452245

22462246
static enum drm_mode_status sii8620_mode_valid(struct drm_bridge *bridge,
2247+
const struct drm_display_info *info,
22472248
const struct drm_display_mode *mode)
22482249
{
22492250
struct sii8620 *ctx = bridge_to_sii8620(bridge);

drivers/gpu/drm/bridge/synopsys/dw-hdmi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2767,6 +2767,7 @@ static void dw_hdmi_bridge_detach(struct drm_bridge *bridge)
27672767

27682768
static enum drm_mode_status
27692769
dw_hdmi_bridge_mode_valid(struct drm_bridge *bridge,
2770+
const struct drm_display_info *info,
27702771
const struct drm_display_mode *mode)
27712772
{
27722773
struct dw_hdmi *hdmi = bridge->driver_private;

drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ static void dw_mipi_dsi_bridge_enable(struct drm_bridge *bridge)
924924

925925
static enum drm_mode_status
926926
dw_mipi_dsi_bridge_mode_valid(struct drm_bridge *bridge,
927+
const struct drm_display_info *info,
927928
const struct drm_display_mode *mode)
928929
{
929930
struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);

drivers/gpu/drm/bridge/tc358767.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,7 @@ static bool tc_bridge_mode_fixup(struct drm_bridge *bridge,
13061306
}
13071307

13081308
static enum drm_mode_status tc_mode_valid(struct drm_bridge *bridge,
1309+
const struct drm_display_info *info,
13091310
const struct drm_display_mode *mode)
13101311
{
13111312
struct tc_data *tc = bridge_to_tc(bridge);

0 commit comments

Comments
 (0)