[U-Boot] [PATCH 1/5] edid: add function to convert edid to fb_videomode
Christian Gmeiner
christian.gmeiner at gmail.com
Tue Jan 14 08:56:27 CET 2014
2014/1/12 Anatolij Gustschin <agust at denx.de>:
> On Wed, 8 Jan 2014 08:24:21 +0100
> Christian Gmeiner <christian.gmeiner at gmail.com> wrote:
>
>> 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.
>>
>> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
>> ---
>> common/edid.c | 29 +++++++++++++++++++++++++++++
>> include/edid.h | 3 +++
>> 2 files changed, 32 insertions(+)
>
> Please check your patches with tools/checkpatch.pl and fix the
> reported errors/warnings. Thanks!
>
>> diff --git a/common/edid.c b/common/edid.c
>> index e66108f..8841c25 100644
>> --- a/common/edid.c
>> +++ b/common/edid.c
>> @@ -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;
>
> as Eric already noticed, please use
>
> mode->pixclock = KHZ2PICOS(pixclock/1000);
>
> The unit for fb_videomode.pixclock is picoseconds, the EDID macro
> returned the value in Hz. And when converting to device tree timing
> node in patch 3/5 please use PICOS2KHZ(mode->pixclock) * 1000 when
> setting the clock-frequency property.
>
Fine... will fix this in the next version of the patch set.
thanks
--
Christian Gmeiner, MSc
More information about the U-Boot
mailing list