drm: When adding probed modes, preserve duplicate mode types

The code which takes probed modes and adds them to a connector eliminates
duplicate modes by comparing them using drm_mode_equal. That function
doesn't consider the type bits, which means that any modes which differ only
in the type field will be lost.

One of the bits in the mode->type field is the DRM_MODE_TYPE_PREFERRED bit.
If the mode with that bit is lost, then higher level code will not know
which mode to select, causing a random mode to be used instead.

This patch simply merges the two mode type bits together; that seems
reasonable to me, but perhaps only a subset of the bits should be used? None
of these can be user defined as they all come from looking at just the
hardware.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by Keith Packard and committed by Dave Airlie 38d5487d 7b2aa037

+2
+2
drivers/gpu/drm/drm_modes.c
··· 566 566 found_it = 1; 567 567 /* if equal delete the probed mode */ 568 568 mode->status = pmode->status; 569 + /* Merge type bits together */ 570 + mode->type |= pmode->type; 569 571 list_del(&pmode->head); 570 572 drm_mode_destroy(connector->dev, pmode); 571 573 break;