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

drm: Move drm_set_preferred_mode() helper from drm_edid to drm_modes

The helper is generic, it doesn't use the opaque EDID type struct drm_edid
and is also used by drivers that only support non-probeable displays such
as fixed panels.

These drivers add a list of modes using drm_mode_probed_add() and then set
a preferred mode using the drm_set_preferred_mode() helper.

It seems more logical to have the helper definition in drm_modes.o instead
of drm_edid.o, since the former contains modes helper while the latter has
helpers to manage the EDID information.

Since both drm_edid.o and drm_modes.o object files are built-in the drm.o
object, there are no functional changes. But besides being a more logical
place for this helper, it could also allow to eventually make drm_edid.o
optional and not included in drm.o if only fixed panels must be supported
in a given system.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240102122208.3103597-1-javierm@redhat.com

+24 -24
-22
drivers/gpu/drm/drm_edid.c
··· 6989 6989 } 6990 6990 EXPORT_SYMBOL(drm_add_modes_noedid); 6991 6991 6992 - /** 6993 - * drm_set_preferred_mode - Sets the preferred mode of a connector 6994 - * @connector: connector whose mode list should be processed 6995 - * @hpref: horizontal resolution of preferred mode 6996 - * @vpref: vertical resolution of preferred mode 6997 - * 6998 - * Marks a mode as preferred if it matches the resolution specified by @hpref 6999 - * and @vpref. 7000 - */ 7001 - void drm_set_preferred_mode(struct drm_connector *connector, 7002 - int hpref, int vpref) 7003 - { 7004 - struct drm_display_mode *mode; 7005 - 7006 - list_for_each_entry(mode, &connector->probed_modes, head) { 7007 - if (mode->hdisplay == hpref && 7008 - mode->vdisplay == vpref) 7009 - mode->type |= DRM_MODE_TYPE_PREFERRED; 7010 - } 7011 - } 7012 - EXPORT_SYMBOL(drm_set_preferred_mode); 7013 - 7014 6992 static bool is_hdmi2_sink(const struct drm_connector *connector) 7015 6993 { 7016 6994 /*
+22
drivers/gpu/drm/drm_modes.c
··· 2754 2754 drm_mode_is_420_also(display, mode); 2755 2755 } 2756 2756 EXPORT_SYMBOL(drm_mode_is_420); 2757 + 2758 + /** 2759 + * drm_set_preferred_mode - Sets the preferred mode of a connector 2760 + * @connector: connector whose mode list should be processed 2761 + * @hpref: horizontal resolution of preferred mode 2762 + * @vpref: vertical resolution of preferred mode 2763 + * 2764 + * Marks a mode as preferred if it matches the resolution specified by @hpref 2765 + * and @vpref. 2766 + */ 2767 + void drm_set_preferred_mode(struct drm_connector *connector, 2768 + int hpref, int vpref) 2769 + { 2770 + struct drm_display_mode *mode; 2771 + 2772 + list_for_each_entry(mode, &connector->probed_modes, head) { 2773 + if (mode->hdisplay == hpref && 2774 + mode->vdisplay == vpref) 2775 + mode->type |= DRM_MODE_TYPE_PREFERRED; 2776 + } 2777 + } 2778 + EXPORT_SYMBOL(drm_set_preferred_mode);
-2
include/drm/drm_edid.h
··· 424 424 drm_default_rgb_quant_range(const struct drm_display_mode *mode); 425 425 int drm_add_modes_noedid(struct drm_connector *connector, 426 426 int hdisplay, int vdisplay); 427 - void drm_set_preferred_mode(struct drm_connector *connector, 428 - int hpref, int vpref); 429 427 430 428 int drm_edid_header_is_valid(const void *edid); 431 429 bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid,
+2
include/drm/drm_modes.h
··· 467 467 const struct drm_display_mode *mode); 468 468 bool drm_mode_is_420(const struct drm_display_info *display, 469 469 const struct drm_display_mode *mode); 470 + void drm_set_preferred_mode(struct drm_connector *connector, 471 + int hpref, int vpref); 470 472 471 473 struct drm_display_mode *drm_analog_tv_mode(struct drm_device *dev, 472 474 enum drm_connector_tv_mode mode,