Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: bridge: dw-hdmi: Pass drm_display_info to .mode_valid()

Replace the drm_connector pointer passed to the .mode_valid() function
with a const drm_display_info pointer, as that's all the function should
need. Use the display info passed to the bridge .mode_valid() operation
instead of retrieving it from the connector, to prepare for make
connector creation optional.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200526011505.31884-16-laurent.pinchart+renesas@ideasonboard.com

authored by

Laurent Pinchart and committed by
Sam Ravnborg
af05bba0 9bc78d6d

+21 -22
+2 -3
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
··· 2769 2769 { 2770 2770 struct dw_hdmi *hdmi = bridge->driver_private; 2771 2771 const struct dw_hdmi_plat_data *pdata = hdmi->plat_data; 2772 - struct drm_connector *connector = &hdmi->connector; 2773 2772 enum drm_mode_status mode_status = MODE_OK; 2774 2773 2775 2774 /* We don't support double-clocked modes */ ··· 2776 2777 return MODE_BAD; 2777 2778 2778 2779 if (pdata->mode_valid) 2779 - mode_status = pdata->mode_valid(hdmi, pdata->priv_data, 2780 - connector, mode); 2780 + mode_status = pdata->mode_valid(hdmi, pdata->priv_data, info, 2781 + mode); 2781 2782 2782 2783 return mode_status; 2783 2784 }
+2 -2
drivers/gpu/drm/imx/dw_hdmi-imx.c
··· 146 146 147 147 static enum drm_mode_status 148 148 imx6q_hdmi_mode_valid(struct dw_hdmi *hdmi, void *data, 149 - struct drm_connector *con, 149 + const struct drm_display_info *info, 150 150 const struct drm_display_mode *mode) 151 151 { 152 152 if (mode->clock < 13500) ··· 160 160 161 161 static enum drm_mode_status 162 162 imx6dl_hdmi_mode_valid(struct dw_hdmi *hdmi, void *data, 163 - struct drm_connector *con, 163 + const struct drm_display_info *info, 164 164 const struct drm_display_mode *mode) 165 165 { 166 166 if (mode->clock < 13500)
+10 -10
drivers/gpu/drm/meson/meson_dw_hdmi.c
··· 631 631 632 632 static enum drm_mode_status 633 633 dw_hdmi_mode_valid(struct dw_hdmi *hdmi, void *data, 634 - struct drm_connector *connector, 634 + const struct drm_display_info *display_info, 635 635 const struct drm_display_mode *mode) 636 636 { 637 637 struct meson_dw_hdmi *dw_hdmi = data; 638 638 struct meson_drm *priv = dw_hdmi->priv; 639 - bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported; 639 + bool is_hdmi2_sink = display_info->hdmi.scdc.supported; 640 640 unsigned int phy_freq; 641 641 unsigned int vclk_freq; 642 642 unsigned int venc_freq; ··· 647 647 DRM_DEBUG_DRIVER("Modeline " DRM_MODE_FMT "\n", DRM_MODE_ARG(mode)); 648 648 649 649 /* If sink does not support 540MHz, reject the non-420 HDMI2 modes */ 650 - if (connector->display_info.max_tmds_clock && 651 - mode->clock > connector->display_info.max_tmds_clock && 652 - !drm_mode_is_420_only(&connector->display_info, mode) && 653 - !drm_mode_is_420_also(&connector->display_info, mode)) 650 + if (display_info->max_tmds_clock && 651 + mode->clock > display_info->max_tmds_clock && 652 + !drm_mode_is_420_only(display_info, mode) && 653 + !drm_mode_is_420_also(display_info, mode)) 654 654 return MODE_BAD; 655 655 656 656 /* Check against non-VIC supported modes */ ··· 667 667 vclk_freq = mode->clock; 668 668 669 669 /* For 420, pixel clock is half unlike venc clock */ 670 - if (drm_mode_is_420_only(&connector->display_info, mode) || 670 + if (drm_mode_is_420_only(display_info, mode) || 671 671 (!is_hdmi2_sink && 672 - drm_mode_is_420_also(&connector->display_info, mode))) 672 + drm_mode_is_420_also(display_info, mode))) 673 673 vclk_freq /= 2; 674 674 675 675 /* TMDS clock is pixel_clock * 10 */ ··· 684 684 685 685 /* VENC double pixels for 1080i, 720p and YUV420 modes */ 686 686 if (meson_venc_hdmi_venc_repeat(vic) || 687 - drm_mode_is_420_only(&connector->display_info, mode) || 687 + drm_mode_is_420_only(display_info, mode) || 688 688 (!is_hdmi2_sink && 689 - drm_mode_is_420_also(&connector->display_info, mode))) 689 + drm_mode_is_420_also(display_info, mode))) 690 690 venc_freq *= 2; 691 691 692 692 vclk_freq = max(venc_freq, hdmi_freq);
+1 -1
drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c
··· 39 39 40 40 static enum drm_mode_status 41 41 rcar_hdmi_mode_valid(struct dw_hdmi *hdmi, void *data, 42 - struct drm_connector *connector, 42 + const struct drm_display_info *info, 43 43 const struct drm_display_mode *mode) 44 44 { 45 45 /*
+1 -1
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
··· 221 221 222 222 static enum drm_mode_status 223 223 dw_hdmi_rockchip_mode_valid(struct dw_hdmi *hdmi, void *data, 224 - struct drm_connector *connector, 224 + const struct drm_display_info *info, 225 225 const struct drm_display_mode *mode) 226 226 { 227 227 const struct dw_hdmi_mpll_config *mpll_cfg = rockchip_mpll_cfg;
+2 -2
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
··· 32 32 33 33 static enum drm_mode_status 34 34 sun8i_dw_hdmi_mode_valid_a83t(struct dw_hdmi *hdmi, void *data, 35 - struct drm_connector *connector, 35 + const struct drm_display_info *info, 36 36 const struct drm_display_mode *mode) 37 37 { 38 38 if (mode->clock > 297000) ··· 43 43 44 44 static enum drm_mode_status 45 45 sun8i_dw_hdmi_mode_valid_h6(struct dw_hdmi *hdmi, void *data, 46 - struct drm_connector *connector, 46 + const struct drm_display_info *info, 47 47 const struct drm_display_mode *mode) 48 48 { 49 49 /*
+1 -1
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h
··· 177 177 178 178 struct sun8i_dw_hdmi_quirks { 179 179 enum drm_mode_status (*mode_valid)(struct dw_hdmi *hdmi, void *data, 180 - struct drm_connector *connector, 180 + const struct drm_display_info *info, 181 181 const struct drm_display_mode *mode); 182 182 unsigned int set_rate : 1; 183 183 unsigned int use_drm_infoframe : 1;
+2 -2
include/drm/bridge/dw_hdmi.h
··· 8 8 9 9 #include <sound/hdmi-codec.h> 10 10 11 - struct drm_connector; 11 + struct drm_display_info; 12 12 struct drm_display_mode; 13 13 struct drm_encoder; 14 14 struct dw_hdmi; ··· 137 137 138 138 /* Platform-specific mode validation (optional). */ 139 139 enum drm_mode_status (*mode_valid)(struct dw_hdmi *hdmi, void *data, 140 - struct drm_connector *connector, 140 + const struct drm_display_info *info, 141 141 const struct drm_display_mode *mode); 142 142 143 143 /* Vendor PHY support */