From: Mateusz Kwiatkowski <kfyatek@gmail.com>
To: Maxime Ripard <maxime@cerno.tech>
Cc: "Karol Herbst" <kherbst@redhat.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Tvrtko Ursulin" <tvrtko.ursulin@linux.intel.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"David Airlie" <airlied@linux.ie>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Lyude Paul" <lyude@redhat.com>, "Emma Anholt" <emma@anholt.net>,
"Chen-Yu Tsai" <wens@csie.org>,
"Samuel Holland" <samuel@sholland.org>,
"Ben Skeggs" <bskeggs@redhat.com>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"Dom Cobley" <dom@raspberrypi.com>,
linux-sunxi@lists.linux.dev,
"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
"Noralf Trønnes" <noralf@tronnes.org>,
intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org,
nouveau@lists.freedesktop.org,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
linux-arm-kernel@lists.infradead.org,
dri-devel@lists.freedesktop.org,
"Hans de Goede" <hdegoede@redhat.com>,
"Phil Elwell" <phil@raspberrypi.com>
Subject: Re: [PATCH] drm/vc4: vec: Add support for PAL-60
Date: Tue, 18 Oct 2022 22:57:04 +0200 [thread overview]
Message-ID: <0afdeda7-558e-647f-ef28-1fcd80807c1b@gmail.com> (raw)
In-Reply-To: <20221018083153.okkqpd5ccfrnwdj3@houat>
Hi Maxime,
W dniu 18.10.2022 o 10:31, Maxime Ripard pisze:
> Hi,
>
> On Sun, Oct 16, 2022 at 09:46:49PM +0200, Mateusz Kwiatkowski wrote:
>> @@ -308,14 +324,15 @@ static const struct vc4_vec_tv_mode vc4_vec_tv_modes[] = {
>> };
>>
>> static inline const struct vc4_vec_tv_mode *
>> -vc4_vec_tv_mode_lookup(unsigned int mode)
>> +vc4_vec_tv_mode_lookup(unsigned int mode, u16 htotal)
>> {
>> unsigned int i;
>>
>> for (i = 0; i < ARRAY_SIZE(vc4_vec_tv_modes); i++) {
>> const struct vc4_vec_tv_mode *tv_mode = &vc4_vec_tv_modes[i];
>>
>> - if (tv_mode->mode == mode)
>> + if (tv_mode->mode == mode &&
>> + tv_mode->expected_htotal == htotal)
>> return tv_mode;
>
> Is there any reason we're not using the refresh rate to filter this? It
> seems more natural to me.
Let me give you an example first.
There are actually two ways to configure PAL-60-ish mode on VC4/VEC:
a) Modeline 13.5 720 734 798 858 480 487 493 525 Interlace, standard registers
set to VEC_CONFIG0_PAL_M_STD, custom frequency enabled and set to 0x2a098acb;
Setting the standard registers to "PAL-M" puts the VEC in true 59.94 Hz mode,
so the video timings are identical as for NTSC (or PAL-M), and the custom
frequency makes the color subcarrier compatible with regular PAL receivers.
This is the "true" PAL-60, thanks to the true System M timings.
a) Modeline 13.5 720 740 804 864 480 486 492 525 Interlace, standards registers
set to VEC_CONFIG0_PAL with standard frequency; This is a "fake" PAL-60 mode,
the refresh rate is actually ~59.524 Hz. Most "NTSC" sets will be able to
sync with this mode no problem, but the VEC is actually operating in its
50 Hz mode - it's just the "premature" vertical sync signal causes it to
output something that is similar to the 525-line system, however strictly
speaking non-standard due to lower horizontal sync frequency.
This comes down to the fact that:
- When VEC's standard registers are set to VEC_CONFIG0_NTSC_STD or
VEC_CONFIG0_PAL_M_STD, it operates in the "CCIR System M" mode, expects htotal
to be exactly 858 pixels (and it will generate horizontal sync pulse every 858
pixels on its own regardless of what comes out of the PV - so there will be
garbage on screen if you set it to anything else), and vtotal to be 525 lines.
It will not accept vtotal that's any higher (it will generate its own vertical
sync as demanded by System M if not triggered by the PV), but it can be lower
- resulting in modes that are non-standard, but otherwise valid.
- Likewise, when the registers are set to VEC_CONFIG0_PAL_BDGHI_STD,
VEC_CONFIG0_PAL_N_STD or VEC_CONFIG0_SECAM_STD (SECAM is a bit special, but
that's irrelevant here), it operates in the "CCIR System B/D/G/H/I/N" mode,
and likewise, expects htotal to be exactly 864 pixels (garbage on screen
otherwise), vtotal limit is 625 lines, etc.
Checking for the refresh rate would only work for standard-compliant modes and
have the potential of completely breaking on any custom modes. Conversely,
checking for htotal aligns perfectly with the limitations of the hardware, and
allows the user to set any modeline that the hardware is able to output with
any level of sanity.
Footnote: all this information on VEC's behavior comes from my own
experimentation, messing around with its registers and seeing what happens
(both on screen and on an oscilloscope). I've never seen any Broadcom docs on
this chip, so it's by no means official.
Best regards,
Mateusz Kwiatkowski
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-10-18 20:58 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-13 13:18 [PATCH v5 00/22] drm: Analog TV Improvements Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 01/22] drm/tests: Add Kunit Helpers Maxime Ripard
2022-10-15 15:06 ` Noralf Trønnes
2022-10-13 13:18 ` [PATCH v5 02/22] drm/connector: Rename legacy TV property Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 03/22] drm/connector: Only register TV mode property if present Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 04/22] drm/connector: Rename drm_mode_create_tv_properties Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 05/22] drm/connector: Add TV standard property Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 06/22] drm/modes: Add a function to generate analog display modes Maxime Ripard
2022-10-16 17:34 ` Mateusz Kwiatkowski
2022-10-18 8:08 ` Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 07/22] drm/client: Add some tests for drm_connector_pick_cmdline_mode() Maxime Ripard
2022-10-15 16:58 ` Noralf Trønnes
2022-10-20 7:55 ` Michał Winiarski
2022-10-13 13:18 ` [PATCH v5 08/22] drm/modes: Move named modes parsing to a separate function Maxime Ripard
2022-10-16 16:11 ` Noralf Trønnes
2022-10-18 7:57 ` Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 09/22] drm/modes: Switch to named mode descriptors Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 10/22] drm/modes: Fill drm_cmdline mode from named modes Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 11/22] drm/connector: Add pixel clock to cmdline mode Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 12/22] drm/connector: Add a function to lookup a TV mode by its name Maxime Ripard
2022-10-17 10:44 ` Noralf Trønnes
2022-10-18 9:33 ` Maxime Ripard
2022-10-18 12:29 ` Noralf Trønnes
2022-10-19 8:48 ` Maxime Ripard
2022-10-19 10:43 ` Noralf Trønnes
2022-10-20 11:29 ` maxime
2022-10-13 13:18 ` [PATCH v5 13/22] drm/modes: Introduce the tv_mode property as a command-line option Maxime Ripard
2022-10-16 17:51 ` Mateusz Kwiatkowski
2022-10-17 10:21 ` Noralf Trønnes
2022-10-13 13:18 ` [PATCH v5 14/22] drm/modes: Properly generate a drm_display_mode from a named mode Maxime Ripard
2022-10-13 13:18 ` [PATCH v5 15/22] drm/modes: Introduce more named modes Maxime Ripard
2022-10-13 13:19 ` [PATCH v5 16/22] drm/atomic-helper: Add a TV properties reset helper Maxime Ripard
2022-10-17 10:36 ` Noralf Trønnes
2022-10-13 13:19 ` [PATCH v5 17/22] drm/atomic-helper: Add an analog TV atomic_check implementation Maxime Ripard
2022-10-13 13:19 ` [PATCH v5 18/22] drm/vc4: vec: Use TV Reset implementation Maxime Ripard
2022-10-13 13:19 ` [PATCH v5 19/22] drm/vc4: vec: Check for VEC output constraints Maxime Ripard
2022-10-16 18:12 ` Mateusz Kwiatkowski
2022-10-16 18:16 ` Mateusz Kwiatkowski
2022-10-18 8:27 ` Maxime Ripard
2022-10-13 13:19 ` [PATCH v5 20/22] drm/vc4: vec: Convert to the new TV mode property Maxime Ripard
2022-10-16 18:52 ` Mateusz Kwiatkowski
2022-10-16 18:56 ` Mateusz Kwiatkowski
2022-10-17 10:31 ` Noralf Trønnes
2022-10-18 10:00 ` Maxime Ripard
[not found] ` <da2b4cb4-5d12-3161-64e3-e87a8cc63e81@gmail.com>
2022-10-20 11:58 ` maxime
2022-10-17 11:39 ` Noralf Trønnes
2022-10-13 13:19 ` [PATCH v5 21/22] drm/vc4: vec: Add support for more analog TV standards Maxime Ripard
2022-10-16 19:02 ` Mateusz Kwiatkowski
2022-10-16 19:46 ` [PATCH] drm/vc4: vec: Add support for PAL-60 Mateusz Kwiatkowski
2022-10-18 8:31 ` Maxime Ripard
2022-10-18 20:57 ` Mateusz Kwiatkowski [this message]
2022-10-20 15:34 ` maxime
2022-10-13 13:19 ` [PATCH v5 22/22] drm/sun4i: tv: Convert to the new TV mode property Maxime Ripard
2022-10-13 18:23 ` Jernej Škrabec
2022-10-14 7:38 ` Maxime Ripard
2022-10-15 8:59 ` Jernej Škrabec
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0afdeda7-558e-647f-ef28-1fcd80807c1b@gmail.com \
--to=kfyatek@gmail.com \
--cc=airlied@linux.ie \
--cc=bskeggs@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dave.stevenson@raspberrypi.com \
--cc=dom@raspberrypi.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emma@anholt.net \
--cc=geert@linux-m68k.org \
--cc=hdegoede@redhat.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jernej.skrabec@gmail.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kfyatek+publicgit@gmail.com \
--cc=kherbst@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=lyude@redhat.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maxime@cerno.tech \
--cc=noralf@tronnes.org \
--cc=nouveau@lists.freedesktop.org \
--cc=phil@raspberrypi.com \
--cc=rodrigo.vivi@intel.com \
--cc=samuel@sholland.org \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=tzimmermann@suse.de \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).