Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1deee8d7 authored by Damien Lespiau's avatar Damien Lespiau Committed by Daniel Vetter
Browse files

drm: Extract add_hdmi_mode() out of do_hdmi_vsdb_modes()



So we respect a nice design of having similar functions at the same
level, in this case:

do_hdmi_vsdb_modes()
  - add_hdmi_mandatory_stereo_modes()
  - add_hdmi_mode()

Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarDamien Lespiau <damien.lespiau@intel.com>
Acked-by: default avatarDave Airlie <airlied@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent c858cfca
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -2634,6 +2634,26 @@ static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector)
	return modes;
}

static int add_hdmi_mode(struct drm_connector *connector, u8 vic)
{
	struct drm_device *dev = connector->dev;
	struct drm_display_mode *newmode;

	vic--; /* VICs start at 1 */
	if (vic >= ARRAY_SIZE(edid_4k_modes)) {
		DRM_ERROR("Unknown HDMI VIC: %d\n", vic);
		return 0;
	}

	newmode = drm_mode_duplicate(dev, &edid_4k_modes[vic]);
	if (!newmode)
		return 0;

	drm_mode_probed_add(connector, newmode);

	return 1;
}

/*
 * do_hdmi_vsdb_modes - Parse the HDMI Vendor Specific data block
 * @connector: connector corresponding to the HDMI sink
@@ -2646,7 +2666,6 @@ static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector)
static int
do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len)
{
	struct drm_device *dev = connector->dev;
	int modes = 0, offset = 0, i;
	u8 vic_len;

@@ -2679,23 +2698,10 @@ do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len)
	vic_len = db[8 + offset] >> 5;

	for (i = 0; i < vic_len && len >= (9 + offset + i); i++) {
		struct drm_display_mode *newmode;
		u8 vic;

		vic = db[9 + offset + i];

		vic--; /* VICs start at 1 */
		if (vic >= ARRAY_SIZE(edid_4k_modes)) {
			DRM_ERROR("Unknown HDMI VIC: %d\n", vic);
			continue;
		}

		newmode = drm_mode_duplicate(dev, &edid_4k_modes[vic]);
		if (!newmode)
			continue;

		drm_mode_probed_add(connector, newmode);
		modes++;
		modes += add_hdmi_mode(connector, vic);
	}

out: