[U-Boot] [PATCH 3/5] fdt: add fdt_add_display_timings(..)

Christian Gmeiner christian.gmeiner at gmail.com
Thu Jan 9 08:12:49 CET 2014


Hi Stefano,
2014/1/8 Stefano Babic <sbabic at denx.de>:
> Hi Christian,
>
> On 08/01/2014 08:24, Christian Gmeiner wrote:
>> This new function is used to set all display-timings
>> properties based on fb_videomode.
>>
>> display-timings {
>>       timing0 {
>>               clock-frequency = <25000000>;
>>               hactive = <640>;
>>               vactive = <480>;
>>               hback-porch = <48>;
>>               hfront-porch = <16>;
>>               vback-porch = <31>;
>>               vfront-porch = <12>;
>>               hsync-len = <96>;
>>               vsync-len = <2>;
>>       };
>> };
>>
>> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
>> ---
>>  common/fdt_support.c  |   23 +++++++++++++++++++++++
>>  include/fdt_support.h |    3 +++
>>  2 files changed, 26 insertions(+)
>>
>> diff --git a/common/fdt_support.c b/common/fdt_support.c
>> index 4e32b02..cf81a4b 100644
>> --- a/common/fdt_support.c
>> +++ b/common/fdt_support.c
>> @@ -11,6 +11,7 @@
>>  #include <stdio_dev.h>
>>  #include <linux/ctype.h>
>>  #include <linux/types.h>
>> +#include <linux/fb.h>
>>  #include <asm/global_data.h>
>>  #include <libfdt.h>
>>  #include <fdt_support.h>
>> @@ -1342,6 +1343,28 @@ err_size:
>>  #endif
>>
>>  /*
>> + * fdt_add_display_timings: add display-timings properties
>> + *
>> + * @fdt: ptr to device tree
>> + * @noff: node to update
>> + * @mode: ptr to b_videomode
>> + */
>> +void fdt_add_display_timings(void *fdt, int noff, struct fb_videomode *mode)
>> +{
>> +     if (noff != -FDT_ERR_NOTFOUND) {
>> +             fdt_setprop_u32(fdt, noff, "clock-frequency", mode->pixclock);
>> +             fdt_setprop_u32(fdt, noff, "hactive", mode->xres);
>> +             fdt_setprop_u32(fdt, noff, "vactive", mode->yres);
>> +             fdt_setprop_u32(fdt, noff, "hback-porch", mode->left_margin);
>> +             fdt_setprop_u32(fdt, noff, "hfront-porch", mode->right_margin);
>> +             fdt_setprop_u32(fdt, noff, "vback-porch", mode->upper_margin);
>> +             fdt_setprop_u32(fdt, noff, "vfront-porch", mode->lower_margin);
>> +             fdt_setprop_u32(fdt, noff, "hsync-len", mode->hsync_len);
>> +             fdt_setprop_u32(fdt, noff, "vsync-len", mode->vsync_len);
>> +     }
>> +}
>> +
>> +/*
>>   * Verify the physical address of device tree node for a given alias
>>   *
>>   * This function locates the device tree node of a given alias, and then
>> diff --git a/include/fdt_support.h b/include/fdt_support.h
>> index 9871e2f..1c54880 100644
>> --- a/include/fdt_support.h
>> +++ b/include/fdt_support.h
>> @@ -82,6 +82,9 @@ int fdt_set_phandle(void *fdt, int nodeoffset, uint32_t phandle);
>>  unsigned int fdt_create_phandle(void *fdt, int nodeoffset);
>>  int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
>>
>> +struct fb_videomode;
>> +void fdt_add_display_timings(void *blob, int noff, struct fb_videomode *mode);
>> +
>>  int fdt_verify_alias_address(void *fdt, int anode, const char *alias,
>>                             u64 addr);
>>  u64 fdt_get_base_address(void *fdt, int node);
>>
>
> Agree that we have to sync u-boot and kernel, and this can be a way in
> the short term.
>
> I am asking if this is in the long term the best way to do it. You are
> converting EDID values to fb_videomode *mode, and then again to the
> device node as required by DT.
> We have already had some talks about moving U-Boot configuration to DT,
> that is U-Boot can be also configured by a DT file (see for example
> support for Nvidia processors, they already support DT in U-Boot).
>

The problem for me here is that DT only does not work in my case. As it is
possible to attach different panels/displays via lvds (different
timings and resolutions)
we have put an at24 on our print, which contains the suitable EDID data.

So I need to readout the at24 every boot and need to manipulate the
loaded (emmc) DT.

> Anatolji, what do you think as best solution we have to follow for
> display setting ?
>

thanks
--
Christian Gmeiner, MSc


More information about the U-Boot mailing list