From 43c6bdd0209ca31be84d572278485ed604582730 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Sat, 29 Apr 2017 14:43:36 +0200 Subject: edid: Add HDMI flag to timing info Some DVI monitors don't show anything in HDMI mode since audio stream confuses them. To solve this situation, this commit adds HDMI flag in timing data and sets it accordingly during edid parsing. First existence of extension block is checked. If it exists and it is CEA861 extension, then data blocks are checked for presence of HDMI vendor specific data block. If it is present, HDMI flag is set. Signed-off-by: Jernej Skrabec Reviewed-by: Simon Glass --- include/edid.h | 14 ++++++++++++++ include/fdtdec.h | 1 + 2 files changed, 15 insertions(+) (limited to 'include') diff --git a/include/edid.h b/include/edid.h index 8b022fa98af..a9f2f3d3abf 100644 --- a/include/edid.h +++ b/include/edid.h @@ -19,6 +19,9 @@ #define EDID_SIZE 128 #define EDID_EXT_SIZE 256 +/* OUI of HDMI vendor specific data block */ +#define HDMI_IEEE_OUI 0x000c03 + #define GET_BIT(_x, _pos) \ (((_x) >> (_pos)) & 1) #define GET_BITS(_x, _pos_msb, _pos_lsb) \ @@ -234,6 +237,13 @@ struct edid1_info { unsigned char checksum; } __attribute__ ((__packed__)); +enum edid_cea861_db_types { + EDID_CEA861_DB_AUDIO = 0x01, + EDID_CEA861_DB_VIDEO = 0x02, + EDID_CEA861_DB_VENDOR = 0x03, + EDID_CEA861_DB_SPEAKER = 0x04, +}; + struct edid_cea861_info { unsigned char extension_tag; #define EDID_CEA861_EXTENSION_TAG 0x02 @@ -251,6 +261,10 @@ struct edid_cea861_info { #define EDID_CEA861_DTD_COUNT(_x) \ GET_BITS(((_x).dtd_count), 3, 0) unsigned char data[124]; +#define EDID_CEA861_DB_TYPE(_x, offset) \ + GET_BITS((_x).data[offset], 7, 5) +#define EDID_CEA861_DB_LEN(_x, offset) \ + GET_BITS((_x).data[offset], 4, 0) } __attribute__ ((__packed__)); /** diff --git a/include/fdtdec.h b/include/fdtdec.h index b0e5b2767de..3000ecbb587 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -967,6 +967,7 @@ struct display_timing { struct timing_entry vsync_len; /* ver. sync len */ enum display_flags flags; /* display flags */ + bool hdmi_monitor; /* is hdmi monitor? */ }; /** -- cgit v1.3.1 From 10ba6b333955b7be491f9dd8c1241309dfcb5c8b Mon Sep 17 00:00:00 2001 From: Philipp Tomsich Date: Fri, 5 May 2017 21:48:30 +0200 Subject: video: bmp: rename CONFIG_BMP_24BMP to CONFIG_BMP_24BPP Due to a typo, the 24 bit-per-pixel configuration ends in 24BMP instead of 24BPP. This change renames it throughout the source tree for consistency and to make moving these options into Kconfig easier and less error-prone. Signed-off-by: Philipp Tomsich Reviewed-by: Simon Glass Reviewed-by: Hannes Schmelzer --- common/lcd.c | 4 ++-- drivers/video/video_bmp.c | 4 ++-- include/configs/brxre1.h | 2 +- scripts/config_whitelist.txt | 1 - 4 files changed, 5 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/common/lcd.c b/common/lcd.c index 783626e3d54..2405146cf09 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -704,7 +704,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y) } break; #endif /* CONFIG_BMP_16BPP */ -#if defined(CONFIG_BMP_24BMP) +#if defined(CONFIG_BMP_24BPP) case 24: for (i = 0; i < height; ++i) { for (j = 0; j < width; j++) { @@ -716,7 +716,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y) fb -= lcd_line_length + width * (bpix / 8); } break; -#endif /* CONFIG_BMP_24BMP */ +#endif /* CONFIG_BMP_24BPP */ #if defined(CONFIG_BMP_32BPP) case 32: for (i = 0; i < height; ++i) { diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c index 32a4e7f8a90..f803067da31 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c @@ -316,7 +316,7 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, } break; #endif /* CONFIG_BMP_16BPP */ -#if defined(CONFIG_BMP_24BMP) +#if defined(CONFIG_BMP_24BPP) case 24: for (i = 0; i < height; ++i) { for (j = 0; j < width; j++) { @@ -328,7 +328,7 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, fb -= priv->line_length + width * (bpix / 8); } break; -#endif /* CONFIG_BMP_24BMP */ +#endif /* CONFIG_BMP_24BPP */ #if defined(CONFIG_BMP_32BPP) case 32: for (i = 0; i < height; ++i) { diff --git a/include/configs/brxre1.h b/include/configs/brxre1.h index 49f223a32aa..99846890e0f 100644 --- a/include/configs/brxre1.h +++ b/include/configs/brxre1.h @@ -21,7 +21,7 @@ #define CONFIG_VIDEO_BMP_GZIP #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1366*767*4) -#define CONFIG_BMP_24BMP +#define CONFIG_BMP_24BPP #define CONFIG_BMP_32BPP /* memory */ diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 7646bb68420..f3d9f12304d 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -236,7 +236,6 @@ CONFIG_BL1_SIZE CONFIG_BL2_OFFSET CONFIG_BL2_SIZE CONFIG_BMP_16BPP -CONFIG_BMP_24BMP CONFIG_BMP_24BPP CONFIG_BMP_32BPP CONFIG_BOARDDIR -- cgit v1.3.1