Re: [PATCH v5 80/80] ARM: dts: bcm2711: Enable the display pipeline

From: Tim Gover
Date: Thu Oct 01 2020 - 06:16:00 EST


hdmi_enable_4k60=1 causes the firmware to select 3.3 GHz for the PLLC
VCO to support a core-frequency of 550 MHz which is the minimum
frequency required by the HVS at 4Kp60. The side effect is that if the
display clock requirements are lower than 4Kp60 then you will see
different core frequencies selected by DVFS.

If enable_uart=1 and the mini-uart is selected (default unless
bluetooth is disabled) then the firmware will pin the core-frequency
to either core_freq max (500 or 550). Although, I think there is a way
of pinning it to a lower fixed frequency.

The table in overclocking.md defines options for setting the maximum
core frequency but unless core_freq_min is specified DVFS will
automatically pick the lowest idle frequency required by the display
resolution.



On Thu, 1 Oct 2020 at 09:54, Maxime Ripard <maxime@xxxxxxxxxx> wrote:
>
> On Thu, Oct 01, 2020 at 08:48:43AM +0200, Maxime Ripard wrote:
> > Hi Stefan,
> >
> > On Wed, Sep 30, 2020 at 06:52:13PM +0200, Stefan Wahren wrote:
> > > Am 30.09.20 um 18:38 schrieb Nathan Chancellor:
> > > > On Wed, Sep 30, 2020 at 04:07:58PM +0200, Maxime Ripard wrote:
> > > >> Hi Nathan,
> > > >>
> > > >> On Tue, Sep 29, 2020 at 03:15:26PM -0700, Nathan Chancellor wrote:
> > > >>> On Thu, Sep 03, 2020 at 10:01:52AM +0200, Maxime Ripard wrote:
> > > >>>> Now that all the drivers have been adjusted for it, let's bring in the
> > > >>>> necessary device tree changes.
> > > >>>>
> > > >>>> The VEC and PV3 are left out for now, since it will require a more specific
> > > >>>> clock setup.
> > > >>>>
> > > >>>> Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
> > > >>>> Tested-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx>
> > > >>>> Tested-by: Hoegeun Kwon <hoegeun.kwon@xxxxxxxxxxx>
> > > >>>> Tested-by: Stefan Wahren <stefan.wahren@xxxxxxxx>
> > > >>>> Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx>
> > > >>> Apologies if this has already been reported or have a solution but this
> > > >>> patch (and presumably series) breaks output to the serial console after
> > > >>> a certain point during init. On Raspbian, I see systemd startup messages
> > > >>> then the output just turns into complete garbage. It looks like this
> > > >>> patch is merged first in linux-next, which is why my bisect fell on the
> > > >>> DRM merge. I am happy to provide whatever information could be helpful
> > > >>> for debugging this. I am on the latest version of the firmware
> > > >>> (currently 26620cc9a63c6cb9965374d509479b4ee2c30241).
> > > >> Unfortunately, the miniUART is in the same clock tree than the core
> > > >> clock and will thus have those kind of issues when the core clock is
> > > >> changed (which is also something that one should expect when using the
> > > >> DRM or other drivers).
> > > >>
> > > >> The only real workaround there would be to switch to one of the PL011
> > > >> UARTs. I guess we can also somehow make the UART react to the core clock
> > > >> frequency changes, but that's going to require some effort
> > > >>
> > > >> Maxime
> > > > Ack, thank you for the reply! There does not really seem to be a whole
> > > > ton of documentation around using one of the other PL011 UARTs so for
> > > > now, I will just revert this commit locally.
> > >
> > > there was a patch series & discussion about this topic, but we finally
> > > didn't find a rock solid solution.
> > >
> > > You can have a look at "[RFC 5/5] serial: 8250: bcm2835aux: add notifier
> > > to follow clock changes" from 3.4.2019 on linux-rpi-kernel.
> >
> > I couldn't find that discussion on the archive, but based on the title I
> > guess there's some patches that have been merged this cycle for the 8250
> > driver to do just that (868f3ee6e452 ("serial: 8250: Add 8250 port clock
> > update method") and cc816969d7b5 ("serial: 8250_dw: Fix common clocks
> > usage race condition")).
> >
> > However, I'm not entirely sure the clock notifier works in our case with
> > the firmware / MMIO clocks duality
>
> I was a bit intrigued by this, so I looked into it, and it seems that
> it's worth that it used to be. The core clock is supposed to be running
> at 500 Mhz in most cases, and that's what we're setting so it shouldn't
> cause any pratical issue.
>
> However, it looks like on my board now the firmware reports that the
> core clock is running at either 311MHz or 233MHz with hdmi_enable_4k60
> (which seems odd?) and that contradicts the documentation here:
> https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md
>
> Linux then comes in, changes the frequency to 500MHz and breaks the
> UART. So either the doc is wrong, or the clock driver is.
>
> vcgencmd measure_clock core reports that it's indeed 233Mhz and I'm
> running a year-old firmware (built on the 2019-11-29), so I'd be
> inclined to think that the doc is wrong here or we're misinterpreting
> something.
>
> Dave, Tim, any idea?
>
> Thanks!
> Maxime