On 07/25/2013 09:32 PM, Rob Clark wrote:
On Thu, Jul 25, 2013 at 2:32 PM, Darren Etheridge detheridge@ti.com wrote:
Russell King and Sebastian Hasselbarth had proposed some very good changes for the tda998x HDMI encoder driver. But when those changes were tested on BeagleBone Black against the tilcdc driver many modes would no longer display correctly. After analyzing the sync signals from the TI lcd contoller to the nxp it is apparent that the hsync/vsync's are not rising at the same time as per the VESA spec and this is causing the HDMI encoder to get messed up and failing to lock correctly.
This series of patches should be applied on top of:
Russell King's rmk's Dove DRM/TDA19988 Cubox driver series
Sebastian Hasselbarth's drm/i2c: tda998x: fix sync generation and calculation
I have done as much of the change as I can in the tilcdc driver but there is a small unavoidable change in the tda998x driver. However I have been careful not to break anything from the Dove drivers perspective. It would be great if somebody can test on Cubox and confirm that.
This patch set inverts the hsync signal coming from the tilcdc so the NXP is kept happy and then shifts the output to the right to compensate for the sync timing issues. Display modes from the NXP have been verified using a HDMI analyzer and are reporting correct timings at the output stage.
Hopefully this will allow the dove/tda driver changes to progress now that were blocked as per this discussion: http://lists.freedesktop.org/archives/dri-devel/2013-July/040900.html
Good find Darren! The patches look good to me from a quick review. It would be good to get a tested-by from someone on cubox, but it is good that we finally found the issue so that we can unblock further tda998x development.
Thanks to Darren, I can now test tda998x sync changes on both Cubox and Beaglebone Black. I don't think the changes will affect Armada DRM in any way, as it is not setting adjusted_mode.
I will put a scope on AM335x/TDA998x sync signals to fully understand the issues tilcdc has, but I can think of a flag for TDA998x to always accept falling input hsync/vsync and tilcdc to supply that sync. That will maybe allow us to get rid of hskew workaround.
As far as I understand the issue, tilcdc always aligns VS with the rising HS edge? If so, enforcing positive HS/VS on tilcdc and telling TDA998x that it is always positive, may be a cleaner workaround. TDA998x can invert input and output sync independently.
In any way, it will take some time to get a working setup. If you are happy with the patches, I can still send some follow-up patches later.
Sebastian