Skip to contentSkip to conversation

edid: add function to convert edid to fb_videomode

PATCH New Christian Gmeiner 3 participants 4 messages Jan 4, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 edid: add function to convert edid to fb_videomode

There may be some custom boards in the field which have an seperate eeprom chip to store edid informations in it. To make use of those edid information in the board code this patch add a function to convert edid to fb_videomode.

---
 common/edid.c  |   29 +++++++++++++++++++++++++++++
 include/edid.h |    3 +++
 2 files changed, 32 insertions(+)
common/edid.c +29 -0
index e66108f..8841c25 100644
@@ -12,6 +12,7 @@
 
 #include <common.h>
 #include <edid.h>
+#include <linux/fb.h>
 #include <linux/ctype.h>
 #include <linux/string.h>
 
@@ -288,3 +289,31 @@ void edid_print_info(struct edid1_info *edid_info)
 	if (!have_timing)
 		printf("\tNone\n");
 }
+
+void edid_to_fb_videomode(struct edid1_info *edid, struct fb_videomode *mode)
+{
+        struct edid_monitor_descriptor *monitor = &edid->monitor_details.descriptor[0];
+        unsigned char *bytes = (unsigned char *)monitor;
+        struct edid_detailed_timing *timing = (struct edid_detailed_timing *)monitor;
+
+        uint32_t pixclock = EDID_DETAILED_TIMING_PIXEL_CLOCK(*timing);
+        uint32_t h_blanking = EDID_DETAILED_TIMING_HORIZONTAL_BLANKING(*timing);
+        uint32_t h_active = EDID_DETAILED_TIMING_HORIZONTAL_ACTIVE(*timing);
+        uint32_t h_sync_offset = EDID_DETAILED_TIMING_HSYNC_OFFSET(*timing);
+        uint32_t h_sync_width = EDID_DETAILED_TIMING_HSYNC_PULSE_WIDTH(*timing);
+        uint32_t v_blanking = EDID_DETAILED_TIMING_VERTICAL_BLANKING(*timing);
+        uint32_t v_active = EDID_DETAILED_TIMING_VERTICAL_ACTIVE(*timing);
+        uint32_t v_sync_offset = EDID_DETAILED_TIMING_VSYNC_OFFSET(*timing);
+        uint32_t v_sync_width = EDID_DETAILED_TIMING_VSYNC_PULSE_WIDTH(*timing);
+
+        mode->name = "EDID";
+        mode->pixclock = pixclock;
+        mode->yres = v_active;
+        mode->xres = h_active;
+        mode->left_margin = h_blanking - h_sync_offset - h_sync_width;
+        mode->right_margin = h_sync_offset;
+        mode->upper_margin = v_blanking - v_sync_offset - v_sync_width;
+        mode->lower_margin = v_sync_offset;
+        mode->hsync_len = h_sync_width;
+        mode->vsync_len = v_sync_width;
+}
include/edid.h +3 -0
index 480a773..4423062 100644
@@ -233,6 +233,9 @@ struct edid1_info {
  */
 void edid_print_info(struct edid1_info *edid_info);
 
+struct fb_videomode;
+void edid_to_fb_videomode(struct edid1_info *edid, struct fb_videomode *mode);
+
 /**
  * Check the EDID info.
  *
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 edid: add function to convert edid to fb_videomode

Dear Christian Gmeiner,

Quoted 2 lines · In message <[email protected]> you wrote:

There may be some custom boards in the field which have an seperate eeprom chip to store edid informations in it.

Also some boards may pass EDIT information in the device tree.

Quoted 2 lines

To make use of those edid information in the board code this patch add a function to convert edid to fb_videomode.

Allthough this function may be useful, there is no user for this new function in current mainline code, and we do not like adding dead code like this.

Please resubmit as part of a patch series that actually uses this code.

Thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You've no idea of what a poor opinion  I  have  of  myself,  and  how
little I deserve it.                                  - W. S. Gilbert
#2 lore raw

PATCH 1/1 edid: add function to convert edid to fb_videomode

2014/1/4 Wolfgang Denk <[email protected]>:

Quoted 8 lines

Dear Christian Gmeiner,

Quoted 2 lines · In message <[email protected]> you wrote:

There may be some custom boards in the field which have an seperate eeprom chip to store edid informations in it.

Also some boards may pass EDIT information in the device tree.

The linux imx-drm driver does needs a display-timing node.

Quoted 10 lines
Quoted 2 lines

To make use of those edid information in the board code this patch add a function to convert edid to fb_videomode.

Allthough this function may be useful, there is no user for this new function in current mainline code, and we do not like adding dead code like this.

Please resubmit as part of a patch series that actually uses this code.

It is really time to submit the whole board support code our imx6 based board series. I am preparing it and will send it out in the next days.

greets
--
Christian Gmeiner, MSc

#3 lore raw

PATCH 1/1 edid: add function to convert edid to fb_videomode

In reply to Christian Gmeiner
Quoted 2 lines · Christian Gmeiner

[ ... ]

Please check you system's clock, it appears to be off. Your message had this timestamp:

Date: Thu, 1 Jan 1970 11:01:19 +0000

Can't tell what git would make of it when applying the patch.

virtually yours
Gerhard Sittig

Signature · 3 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr. 5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de