diff options
author | Hans de Goede <hdegoede@redhat.com> | 2014-11-24 13:47:13 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2015-01-14 14:56:38 +0100 |
commit | e745d064b441dbf48eac4bc2c494263d54262dec (patch) | |
tree | 8a8013e88fa5f3ac9c2143fc1f204c50f837bcc5 | |
parent | b7ce12ddd7a7aba80fc8f10a50bfdec4f3aceb52 (diff) | |
download | u-boot-imx-e745d064b441dbf48eac4bc2c494263d54262dec.zip u-boot-imx-e745d064b441dbf48eac4bc2c494263d54262dec.tar.gz u-boot-imx-e745d064b441dbf48eac4bc2c494263d54262dec.tar.bz2 |
edid: Add an edid_check_checksum() helper function
Add a helper function to check the checksum of an EDID data block.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Anatolij Gustschin <agust@denx.de>
-rw-r--r-- | common/edid.c | 12 | ||||
-rw-r--r-- | include/edid.h | 9 |
2 files changed, 21 insertions, 0 deletions
diff --git a/common/edid.c b/common/edid.c index e66108f..df797fc 100644 --- a/common/edid.c +++ b/common/edid.c @@ -12,6 +12,7 @@ #include <common.h> #include <edid.h> +#include <errno.h> #include <linux/ctype.h> #include <linux/string.h> @@ -29,6 +30,17 @@ int edid_check_info(struct edid1_info *edid_info) return 0; } +int edid_check_checksum(u8 *edid_block) +{ + u8 checksum = 0; + int i; + + for (i = 0; i < 128; i++) + checksum += edid_block[i]; + + return (checksum == 0) ? 0 : -EINVAL; +} + int edid_get_ranges(struct edid1_info *edid, unsigned int *hmin, unsigned int *hmax, unsigned int *vmin, unsigned int *vmax) diff --git a/include/edid.h b/include/edid.h index d3cc523..a69f43a 100644 --- a/include/edid.h +++ b/include/edid.h @@ -246,6 +246,15 @@ void edid_print_info(struct edid1_info *edid_info); int edid_check_info(struct edid1_info *info); /** + * Check checksum of a 128 bytes EDID data block + * + * @param edid_block EDID block data + * + * @return 0 on success, or a negative errno on error + */ +int edid_check_checksum(u8 *edid_block); + +/** * Get the horizontal and vertical rate ranges of the monitor. * * @param edid The EDID info |