Re: [PATCH RESEND v2 1/2] serial: earlycon: add uart_clk_freq parameter

Markus Probst <[email protected]> Tue, 09 Jun 2026 14:56:43 +0000
Newsgroups org.kernel.vger.linux-efi,org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k,org.kernel.vger.linux-mips,org.kernel.vger.linux-serial
Message-ID <[email protected]>
On Tue, 2026-06-09 at 08:53 +0200, Geert Uytterhoeven wrote:
> Hi Markus,
> 
> On Tue, 9 Jun 2026 at 00:40, Markus Probst <[email protected]> wrote:
> > Add `uart_clk_freq` parameter to `setup_earlycon`. This allows the
> > options string to be reused with `add_preferred_console`, while still
> > allowing to set the uart clock frequency. This will be used in the
> > following commit ("ACPI: SPCR: Support UART clock frequency field").
> > 
> > No logical change intended.
> > 
> > Signed-off-by: Markus Probst <[email protected]>
> 
> > --- a/drivers/tty/serial/earlycon.c
> > +++ b/drivers/tty/serial/earlycon.c
> > @@ -135,11 +135,14 @@ static int __init parse_options(struct earlycon_device *device, char *options)
> >         return 0;
> >  }
> > 
> > -static int __init register_earlycon(char *buf, const struct earlycon_id *match)
> > +static int __init register_earlycon(char *buf, unsigned int uart_clk_freq,
> > +                                   const struct earlycon_id *match)
> >  {
> >         int err;
> >         struct uart_port *port = &early_console_dev.port;
> > 
> > +       port->uartclk = uart_clk_freq;
> 
> Who is actually consuming this value?

I think primarily init_port in drivers/tty/serial/8250/8250_early.c.

> Earlycon typically works with the serial console, as configured before
> Linux boot by the firmware.
Thats defined in the SPCR table. If "Configured Baud Rate" is set to 0,
it will use it as is [1]. If not, it will configure it.

Thanks
- Markus Probst

[1]https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/serial-port-console-redirection-table

> The Microsoft doc referenced in patch 2 seem to agree with that:
> 
>    "On a system where the BIOS or system firmware uses the serial
>     port for console input/output, this table should be used to convey
>     information about the settings, to ensure a seamless transition
>     between the firmware console output and Windows EMS output."
> 
> > +
> >         /* On parsing error, pass the options buf to the setup function */
> >         if (buf && !parse_options(&early_console_dev, buf))
> >                 buf = NULL;
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
signature.asc (application/pgp-signature, 870 B)
-----BEGIN PGP SIGNATURE-----

iQJPBAABCAA5FiEEgnQYxPSsWOdyMMRzNHYf+OetQ9IFAmooKakbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMiwyAAoJEDR2H/jnrUPSTOQP/3lOjjeD4rihyrtDkGdA
vD1xzqthwYFbU2fa+qQ1yTgmbp+z5+h7rcbx8T5S2Y7HkuLbilRDe7Q8SGJocpIg
T9085pQlUhA9lCVY+5s0oXqUp+8rSaUSwXYp+MJH8ZXSwPVdr4kDJoAOs8t+PUt0
i9EGA6/6vW2ccRJwYLaCDxmJowfeQZJJG0cjG5ZWLPj2pOOwbXc3Tm8ZWrtfzADd
sS9irtr/CjlO4L6CBUZ2qEIAT1QylOZTOat/B0Xw0VmupSK0ib31FfEzZsxOoCnR
0Dx16p95q+DMLIKa7zgAhrUyvrJjxI2pDpALJfXrbwhjMbjhB+d6lIfL0kEJF8F3
JJg5y5X9ixNdfWomlDFFn6IyLzcuTqrymCLcW14h/lIuGlAv4CDg3OS/i4T+wBW+
raRTVeakyeBUxxwS499UN0EmcFuxI6CuYiEd9it6kbBJU/4w4mfsbB5Lr2eoWh3m
OSuACvoFlS84V3+SQbbziaTFRo+eLtyNfHHpKNM4d2n2Pdn5tWdoXKkoGacl5hhJ
maQmavGZGDX2pWcpdmoB8fDys9gHkhVdMPUPWSdA8KQ3YG01u2gF98UeClteWJOW
tWr4TpLpsrH/5rzFgz4usuMXaetG7wyeMdjVq+7LjG1pGjbeEifYux73o2CxjPkg
6DHab0pVROd5cS1MZIXwtSA/
=g1gl
-----END PGP SIGNATURE-----