projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-fsl-qoriq
[oweals/u-boot.git]
/
common
/
edid.c
diff --git
a/common/edid.c
b/common/edid.c
index 854d40c8f8b46817efdb251e026a3eaf1462749e..f99f42dc406743495b2317b270f05f7623a2f26b 100644
(file)
--- a/
common/edid.c
+++ b/
common/edid.c
@@
-1,11
+1,10
@@
+// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2012 The Chromium OS Authors.
*
* (C) Copyright 2010
* Petr Stetiar <ynezz@true.cz>
*
/*
* Copyright (c) 2012 The Chromium OS Authors.
*
* (C) Copyright 2010
* Petr Stetiar <ynezz@true.cz>
*
- * SPDX-License-Identifier: GPL-2.0+
- *
* Contains stolen code from ddcprobe project which is:
* Copyright (C) Nalin Dahyabhai <bigfun@pobox.com>
*/
* Contains stolen code from ddcprobe project which is:
* Copyright (C) Nalin Dahyabhai <bigfun@pobox.com>
*/
@@
-148,8
+147,8
@@
static bool cea_is_hdmi_vsdb_present(struct edid_cea861_info *info)
/* check for end of data block */
end = info->dtd_offset;
if (end == 0)
/* check for end of data block */
end = info->dtd_offset;
if (end == 0)
- end =
127
;
- if (end < 4 || end >
127
)
+ end =
sizeof(info->data)
;
+ if (end < 4 || end >
sizeof(info->data)
)
return false;
end -= 4;
return false;
end -= 4;
@@
-169,8
+168,12
@@
static bool cea_is_hdmi_vsdb_present(struct edid_cea861_info *info)
return false;
}
return false;
}
-int edid_get_timing(u8 *buf, int buf_size, struct display_timing *timing,
- int *panel_bits_per_colourp)
+int edid_get_timing_validate(u8 *buf, int buf_size,
+ struct display_timing *timing,
+ int *panel_bits_per_colourp,
+ bool (*mode_valid)(void *priv,
+ const struct display_timing *timing),
+ void *mode_valid_priv)
{
struct edid1_info *edid = (struct edid1_info *)buf;
bool timing_done;
{
struct edid1_info *edid = (struct edid1_info *)buf;
bool timing_done;
@@
-194,8
+197,14
@@
int edid_get_timing(u8 *buf, int buf_size, struct display_timing *timing,
desc = &edid->monitor_details.descriptor[i];
if (desc->zero_flag_1 != 0) {
decode_timing((u8 *)desc, timing);
desc = &edid->monitor_details.descriptor[i];
if (desc->zero_flag_1 != 0) {
decode_timing((u8 *)desc, timing);
- timing_done = true;
- break;
+ if (mode_valid)
+ timing_done = mode_valid(mode_valid_priv,
+ timing);
+ else
+ timing_done = true;
+
+ if (timing_done)
+ break;
}
}
if (!timing_done)
}
}
if (!timing_done)
@@
-226,6
+235,14
@@
int edid_get_timing(u8 *buf, int buf_size, struct display_timing *timing,
return 0;
}
return 0;
}
+int edid_get_timing(u8 *buf, int buf_size, struct display_timing *timing,
+ int *panel_bits_per_colourp)
+{
+ return edid_get_timing_validate(buf, buf_size, timing,
+ panel_bits_per_colourp, NULL, NULL);
+}
+
+
/**
* Snip the tailing whitespace/return of a string.
*
/**
* Snip the tailing whitespace/return of a string.
*