On 04/06/2024 18:57, Sebastian Wick wrote: > On Wed, May 29, 2024 at 4:16 PM Hans Verkuil <hverkuil-cisco@xxxxxxxxx> wrote: >> >> Hi Sebastian, >> >> On 29/05/2024 12:02, Sebastian Wick wrote: >>> When `Max Stream Count` is zero, the sink does not support multistream >>> and thus cannot support NonMixed MS. >>> >>> An EDID with Max Stream Count = 0 and Non Mixed MS = 1 can be found in >>> linuxhw/EDID ./Digital/TCL/TCL5655/1723FF2DC6D1 at commit cff7fe4d44. >>> >>> Signed-off-by: Sebastian Wick <sebastian.wick@xxxxxxxxxx> >>> --- >>> parse-cta-block.cpp | 7 ++++--- >>> 1 file changed, 4 insertions(+), 3 deletions(-) >>> >>> diff --git ./parse-cta-block.cpp ../parse-cta-block.cpp >>> index 4d2afc6..7cd7a3a 100644 >>> --- ./parse-cta-block.cpp >>> +++ ../parse-cta-block.cpp >>> @@ -2498,10 +2498,11 @@ static void cta_hdmi_audio_block(const unsigned char *x, unsigned length) >>> fail("Empty Data Block with length %u.\n", length); >>> return; >>> } >>> - if (x[0] & 3) >>> + if (x[0] & 3) { >>> printf(" Max Stream Count: %u\n", (x[0] & 3) + 1); >>> - if (x[0] & 4) >>> - printf(" Supports MS NonMixed\n"); >>> + if (x[0] & 4) >>> + printf(" Supports MS NonMixed\n"); >>> + } >> >> I would actually leave this as-is, but instead add a fail() message >> if MS NonMixed is set, but Max Stream Count == 0. >> >> It's really an EDID conformity failure, and it should be reported as such. > > I'm all for adding a fail() message but I'm afraid our implementation > which tries to be compatible with the output here won't have access to > the MS NonMixed bit when Max Stream Count == 0. > > Would this work for you? > > if (x[0] & 3) { > printf(" Max Stream Count: %u\n", (x[0] & 3) + 1); > if (x[0] & 4) > printf(" Supports MS NonMixed\n"); > else > fail("NonMixed MS support indicated but MS is unsupported\n"); > } Correcting the logic that would be this: if (x[0] & 3) { printf(" Max Stream Count: %u\n", (x[0] & 3) + 1); if (x[0] & 4) printf(" Supports MS NonMixed\n"); } else if (x[0] & 4) { fail("MS NonMixed support indicated but Max Stream Count == 0.\n"); } And that works for me. Regards, Hans > >> >> Regards, >> >> Hans >> >>> >>> num_descs = x[1] & 7; >>> if (num_descs == 0) >> >