-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EDID: v_sync offset/width are 6-bit values #482
Conversation
Fix assumption that both h_sync and v_sync offset/width are 10-bit values, which resulted in the v_sync offset being sent as if it were 0; h_sync offset/width are 10-bit values, but v_sync offset/width are 6-bit values. For a summary of the timing section of EDID bit packing see: https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Detailed_Timing_Descriptor
Just FYI - this change will have no effect on the signals that board generates. This will only effect the information seen by the laptops connected to the board. |
Thanks for the confirmation. That was my guess too, but we weren't sure if the HDMI out on the Opsis was regenerated sync, or if it was passing through bit-for-bit the received signal when, eg, Ewen |
There is no connection between the input and outputs. Inputs write to memory, outputs read from memory. To get an input on an output you use the correct memory address. Also why the output continues when there is no input. |
FYI - This is the reason the Opsis can accept either 720p60 and 720p50 when the output is set to 720p60 or 720p50. |
Thanks, that's useful to know -- ie, that there's a frame buffer and sync-(re)generation on output in between. (CC @futaris FYI) Ewen |
FYI - The output is always going when configured. |
The output mode is configured here -> HDMI2USB-litex-firmware/firmware/processor.c Line 526 in 5f50647
|
It /could/ be worth connecting an oscilloscope to the sync pin and looking at the stability. It should be rock solid. |
Based on that, it looks like the modeline timing change in (Definitely agree that scoping the output to look at the sync would be useful; unfortunately no one at the "Hackfest" had a scope with them, so arranging to do that would take some more organisation....) Ewen
|
FTR, Opsis flashed with firmware built with this patch returns EDID:
which seems correct to me: 720/725/730/750 vertical sync values seem like what we were aiming for in #478 (comment). So I think this patch helps the EDID sent to the presenter laptop. Ewen PS: I've also verified I'm getting output to a 720p display from the Opsis with this build, so I don't think it's broken the output side changing the output sync timing either. |
FTR, Carl reports that the JPEG encoder happens to work in my build with this fix (see #465 for background), and obviously this newer build has a bunch of the features he's been trying to add this year, so he's suggested running the Opsis (which are only doing camera capture this year, because reasons) on this bleeding edge build including this fix (from my laptop, given Travis is failing for what looks like unrelated issues). Being tested today at the TechSpace staging area, and if it works it'll probably be in production on Monday. (It'd be good to get Travis's git checkout issues so that there's a pre-built version as a result, which we can actually use in future.) Anyway this is further evidence that the JPEG encoder issue is, eg, gateware synthesis layout randomisation related, as I didn't change anything related to that. Ewen |
FWIW, the builds seem to be failing for an unrelated reason (git submodule version issue), eg, https://travis-ci.com/timvideos/HDMI2USB-litex-firmware/jobs/274128704#L1034-L1051 which seems to be
And IIRC i had similar problems at one point when trying to update/fetch either (All the ones I looked at in Travis failed for that same reason.) Ewen
|
Ah, there's a trailing
Ewen
|
Digging further the root cause seems to be that Travis noticed I have a fork of litex, so it's trying to use that: https://travis-ci.com/timvideos/HDMI2USB-litex-firmware/jobs/274128652#L583-L620 but unfortunately that's an ancient fork of litex, which doesn't have the right commits in it (and it's not what I'm using). I'm going to try updating my fork of litex to the upstream master and see if that makes things happier :-) Ewen
|
@mithro Could you force Travis to retry that build? I don't want to change that commit, as the commit hash is in the LCA2020 AV Team notes. And creating a trivial second commit to force a rebuilt seems likely just to create extra noise.... Apparently there's an option if you're signed in to Travis: https://stackoverflow.com/questions/17606874/trigger-a-travis-ci-rebuild-without-pushing-a-commit Ewen
|
Forced travis to rerun. |
Fix assumption that both h_sync and v_sync offset/width are 10-bit values, which resulted in the v_sync offset being sent as if it were 0; h_sync offset/width are 10-bit values, but v_sync offset/width
are 6-bit values.
t->v_sync_offset_width_l
part of the change tested withread-edid
in #478;t->hv_sync_offset_width_h
part of the change only compiled. (HackFest building logistics mean I can't test it with read-edid now, but by inspection the 4-bit/2-bit split seems more correct than the 8-bit shifts that were there before.)v_sync_offset
of 720p set back to recommended 5 lines value (from #478) now that it's actually being sent properly rather than as zero.For a summary of the packing of the timing section of EDID bit see:
https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Detailed_Timing_Descriptor
Note that this did not make the Decimator accept the HDMI2USB output yet; so it's clearly not the only thing the Decimator didn't like :-(