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: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Dave Airlie <airlied@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
c858cfcae6
commit
1deee8d767
1 changed files with 21 additions and 15 deletions
|
@ -2634,6 +2634,26 @@ static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector)
|
||||||
return modes;
|
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
|
* do_hdmi_vsdb_modes - Parse the HDMI Vendor Specific data block
|
||||||
* @connector: connector corresponding to the HDMI sink
|
* @connector: connector corresponding to the HDMI sink
|
||||||
|
@ -2646,7 +2666,6 @@ static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector)
|
||||||
static int
|
static int
|
||||||
do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len)
|
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;
|
int modes = 0, offset = 0, i;
|
||||||
u8 vic_len;
|
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;
|
vic_len = db[8 + offset] >> 5;
|
||||||
|
|
||||||
for (i = 0; i < vic_len && len >= (9 + offset + i); i++) {
|
for (i = 0; i < vic_len && len >= (9 + offset + i); i++) {
|
||||||
struct drm_display_mode *newmode;
|
|
||||||
u8 vic;
|
u8 vic;
|
||||||
|
|
||||||
vic = db[9 + offset + i];
|
vic = db[9 + offset + i];
|
||||||
|
modes += add_hdmi_mode(connector, vic);
|
||||||
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++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
Loading…
Add table
Reference in a new issue