edid: Allow filtering out clocks in EDID; do it for rk3288 HDMI

Right now our EDID logic isn't very smart.  It always just picks the
first detailed mode and ignores the rest.  It's possible that this
detailed mode might be too fast for us, so let's allow some filtering.
We'll use this filtering to filter out modes > 165 MHz on the rk3288
HDMI port.

We choose 165 MHz for HDMI because this is the fasest you can go over
single link DVI.  We could try to be smart and allow faster speeds if we
detect that we're on HDMI, but this is unlikely to work anyway because >
165 MHz we start getting really jittery without a lot more work on HDMI
clocks.

This happens to make the HP ZR30w show the BIOS dev screen now.

BRANCH=none
BUG=chrome-os-partner:47008
TEST=HP ZR30w works

Change-Id: I1d20090b8ad84717ecc56a27ffe4ab0ee312628a
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/309568
Reviewed-by: David Hendricks <dhendrix@chromium.org>
This commit is contained in:
Douglas Anderson 2015-10-28 13:02:43 -07:00 committed by ChromeOS bot
commit 89b81d47f1
8 changed files with 17 additions and 8 deletions

View file

@ -95,7 +95,7 @@ struct edid {
};
/* Defined in src/lib/edid.c */
int decode_edid(unsigned char *edid, int size, struct edid *out);
int decode_edid(unsigned char *edid, int size, struct edid *out, int max_khz);
void set_vbe_mode_info_valid(struct edid *edid, uintptr_t fb_addr);
int set_display_mode(struct edid *edid, enum edid_modes mode);