Re: [PATCH v1 00/35] drm: Analog TV Improvements
From: Noralf Trønnes <hidden>
Date: 2022-08-08 13:03:53
Also in:
dri-devel, linux-amlogic, linux-sunxi, lkml
Den 29.07.2022 18.34, skrev Maxime Ripard:
Hi,
Here's a series aiming at improving the command line named modes support,
and more importantly how we deal with all the analog TV variants.
The named modes support were initially introduced to allow to specify the
analog TV mode to be used.
However, this was causing multiple issues:
* The mode name parsed on the command line was passed directly to the
driver, which had to figure out which mode it was suppose to match;
* Figuring that out wasn't really easy, since the video= argument or what
the userspace might not even have a name in the first place, but
instead could have passed a mode with the same timings;
* The fallback to matching on the timings was mostly working as long as
we were supporting one 525 lines (most likely NSTC) and one 625 lines
(PAL), but couldn't differentiate between two modes with the same
timings (NTSC vs PAL-M vs NSTC-J for example);
* There was also some overlap with the tv mode property registered by
drm_mode_create_tv_properties(), but named modes weren't interacting
with that property at all.
* Even though that property was generic, its possible values were
specific to each drivers, which made some generic support difficult.
Thus, I chose to tackle in multiple steps:
* A new TV norm property was introduced, with generic values, each driver
reporting through a bitmask what standard it supports to the userspace;
* This option was added to the command line parsing code to be able to
specify it on the kernel command line, and new atomic_check and reset
helpers were created to integrate properly into atomic KMS;
* The named mode parsing code is now creating a proper display mode for
the given named mode, and the TV standard will thus be part of the
connector state;
* Two drivers were converted and tested for now (vc4 and sun4i), with
some backward compatibility code to translate the old TV mode to the
new TV mode;
Unit tests were created along the way. Nouveau, ch7006 and gud are
currently broken for now since I expect that work to be reworked fairly
significantly. I'm also not entirely sure about how to migrate GUD to the
new property.I have looked at gud and I think the future proof solution is to add a new TV_NORM property to the GUD protocol and add backwards compatibility for the GUD_TV_MODE property (just for the modes that Raspberry Pi supports since the gadget driver is out of tree). I don't bother supporting the tv.mode property in userspace (I haven't seen anything that uses the property). I have written up most of the host driver changes but I have to do the gadget side as well to make sure it works. I'll post some patches when I'm done. In hindsight I should have used a bitmask for the TV standards in the first place ;) Noralf. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel