2014-01-16 12:44 GMT+01:00 Christian Gmeiner <christian.gmei...@gmail.com>: > Hi all > > 2014/1/14 Christian Gmeiner <christian.gmei...@gmail.com>: >> 2014/1/12 Anatolij Gustschin <ag...@denx.de>: >>> Hi Stefano, >>> >>> On Wed, 08 Jan 2014 11:53:39 +0100 >>> Stefano Babic <sba...@denx.de> wrote: >>> ... >>>> 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). >>>> >>>> Anatolji, what do you think as best solution we have to follow for >>>> display setting ? >>> >>> many drivers use struct fb_videomode internally and this display-timings >>> binding already exists in linux, so I think a function for converting >>> from fb_videomode to DT is useful. However we should probably extend >>> this current implementation of the function, e.g. rename it to >>> fdt_update_display_timings() and pass more arguments: node compatible >>> and the name of the parent node containing the display-timings node. >>> The code for searching the display-timings node is also needed for >>> other boards, so if it is in the function itself, it will simplify >>> the usage. >>> >>> This function could look for display-timings node and create it if >>> it doesn't exist. Or update the existing node with new info. >>> >> >> Thanks for your comments... will come up with something in the next version >> of the patch series. >> > > I have some time to work on this patch. > > Anatolij are you happy witht the following functions? > > int fdt_find_display_timings(void *fdt, const char *compat, const char > *parent) > { > int coff = fdt_node_offset_by_compatible(fdt, -1, compat); > int poff = fdt_subnode_offset(fdt, coff, parent); > int timings = fdt_subnode_offset(fdt, poff, "display-timings"); > > return timings; > } > > int fdt_update_display_timings(void *fdt, const char *compat, const > char *parent, struct fb_videomode *mode) > { > int timings = fdt_find_display_timings(fdt, compat, parent); > > /* check if display-timings subnode does exist */ > if (timings == -FDT_ERR_NOTFOUND) { > return timings; > } > > /* set all needed properties */ > if (timings != -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); > } > > return 0; > } > > This would allow us to update an existing display-timings node via > > fdt_update_display_timings(blob, "fsl,imx6q-ldb", "lvds-channel", mode); > > > Note: not even compile tested :) >
I got no feedback over some months - bad. But okay I really want to get all the bits of our imx6 based board upstream as soon as possible. So has something changed in that area? In the end I want to read EDID stored in an eeprom and put it into the device tree (patching or creating new node). greets -- Christian Gmeiner, MSc https://soundcloud.com/christian-gmeiner _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot