Re: [PATCH 2/2] MIPS: Add custom serial.h with BASE_BAUD override for generic kernel
From: Greg Kroah-Hartman
Date: Tue Nov 28 2017 - 09:35:03 EST
On Wed, Nov 22, 2017 at 09:57:29AM +0000, Matt Redfearn wrote:
> Add a custom serial.h header for MIPS, allowing platforms to override
> the asm-generic version if required.
>
> The generic platform uses this header to set BASE_BAUD to 0. The
> generic platform supports multiple boards, which may have different
> UART clocks. Also one of the boards supported is the Boston FPGA board,
> where the UART clock depends on the loaded FPGA bitfile. As such there
> is no way that the generic kernel can set a compile time default
> BASE_BAUD.
>
> Commit 31cb9a8575ca ("earlycon: initialise baud field of earlycon device
> structure") changed the behavior of of_setup_earlycon such that any baud
> rate set in the device tree is now set in the earlycon structure. The
> UART driver will then calculate a divisor based on BASE_BAUD and set it.
> With MIPS generic kernels this resulted in garbage output due to the
> incorrect uart clock rate being used to calculate a divisor. This
> commit, combined with "serial: 8250_early: Only set divisor if valid clk
> & baud" prevents the earlycon code setting a bad divisor and restores
> earlycon output.
>
> Fixes: 31cb9a8575ca ("earlycon: initialise baud field of earlycon device structure")
> Cc: stable <stable@xxxxxxxxxxxxxxx> # 4.14
> Signed-off-by: Matt Redfearn <matt.redfearn@xxxxxxxx>
>
> ---
>
> arch/mips/include/asm/Kbuild | 1 -
> arch/mips/include/asm/serial.h | 21 +++++++++++++++++++++
> 2 files changed, 21 insertions(+), 1 deletion(-)
> create mode 100644 arch/mips/include/asm/serial.h
>
> diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild
> index 7c8aab23bce8..b1f66699677d 100644
> --- a/arch/mips/include/asm/Kbuild
> +++ b/arch/mips/include/asm/Kbuild
> @@ -16,7 +16,6 @@ generic-y += qrwlock.h
> generic-y += qspinlock.h
> generic-y += sections.h
> generic-y += segment.h
> -generic-y += serial.h
> generic-y += trace_clock.h
> generic-y += unaligned.h
> generic-y += user.h
> diff --git a/arch/mips/include/asm/serial.h b/arch/mips/include/asm/serial.h
> new file mode 100644
> index 000000000000..30be5cd8efdb
> --- /dev/null
> +++ b/arch/mips/include/asm/serial.h
> @@ -0,0 +1,21 @@
> +/*
> + * This file is subject to the terms and conditions of the GNU General Public
> + * License. See the file "COPYING" in the main directory of this archive
> + * for more details.
Which version of the GPL? As it is, this means "GPL v1 and all others".
I doubt you want that :)
thanks,
greg k-h