Since EDID only indicates supported standard timings, a large table with
detailed timing information is necessary, consuming significant space. To
mitigate this, the table is made configurable via kconfig, allowing it to
be excluded when not needed.

Signed-off-by: Svyatoslav Ryhel <clamo...@gmail.com>
---
 common/edid.c         | 6 ++++++
 drivers/video/Kconfig | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/common/edid.c b/common/edid.c
index e2ac7100a88..e5aa4ca494f 100644
--- a/common/edid.c
+++ b/common/edid.c
@@ -16,6 +16,7 @@
 #include <linux/ctype.h>
 #include <linux/string.h>
 
+#if CONFIG_IS_ENABLED(I2C_EDID_STANDARD)
 #define TIMING(c, ha, hfp, hbp, hsl, va, vfp, vbp, vsl, f)     \
        .pixelclock = { (c), (c), (c) },                        \
        .hactive = { (ha), (ha), (ha) },                        \
@@ -206,6 +207,7 @@ static const struct display_timing dmt_timings[] = {
        { TIMING(556188000, 4096, 8, 32, 40, 2160, 48, 8, 6,
                 DISPLAY_FLAGS_HSYNC_HIGH | DISPLAY_FLAGS_VSYNC_LOW) },
 };
+#endif
 
 int edid_check_info(struct edid1_info *edid_info)
 {
@@ -417,6 +419,7 @@ static bool edid_get_standard_timing(struct edid1_info 
*edid, int i, unsigned in
        return false;
 }
 
+#if CONFIG_IS_ENABLED(I2C_EDID_STANDARD)
 static bool edid_find_valid_standard_timing(struct edid1_info *buf,
                                            struct display_timing *timing,
                                            bool (*mode_valid)(void *priv,
@@ -446,6 +449,7 @@ static bool edid_find_valid_standard_timing(struct 
edid1_info *buf,
 
        return found;
 }
+#endif
 
 int edid_get_timing_validate(u8 *buf, int buf_size,
                             struct display_timing *timing,
@@ -493,10 +497,12 @@ int edid_get_timing_validate(u8 *buf, int buf_size,
                }
        }
 
+#if CONFIG_IS_ENABLED(I2C_EDID_STANDARD)
        /* Look for timing in Standard Timings */
        if (!found)
                found = edid_find_valid_standard_timing(edid, timing, 
mode_valid,
                                                        mode_valid_priv);
+#endif
 
        if (!found)
                return -EINVAL;
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index b1ef73f3e5c..11d17076a96 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -721,6 +721,12 @@ config I2C_EDID
        help
           This enables library for accessing EDID data from an LCD panel.
 
+config I2C_EDID_STANDARD
+       bool "Enable standard timings EDID library expansion"
+       depends on I2C_EDID
+       help
+          This enables standard timings expansion for EDID data from an LCD 
panel.
+
 config DISPLAY
        bool "Enable Display support"
        depends on DM
-- 
2.43.0

Reply via email to