From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.101.70, mailfrom: jeremy.linton@arm.com) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by groups.io with SMTP; Mon, 08 Apr 2019 17:33:53 -0700 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A953A15BE; Mon, 8 Apr 2019 17:33:52 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.29.246]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 515033F718; Mon, 8 Apr 2019 17:33:52 -0700 (PDT) From: jeremy.linton@arm.com To: devel@edk2.groups.io Cc: mw@semihalf.com, ard.biesheuvel@linaro.org, leif.lindholm@linaro.org, michael.d.kinney@intel.com, Jeremy Linton Subject: [PATCH] Marvell/Armada7k8k: Remove SPCR baud rate setting Date: Mon, 8 Apr 2019 19:33:27 -0500 Message-Id: <20190409003327.3797-1-jeremy.linton@arm.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The mcbin (and likely others) have a nonstandard uart clock. This means that the earlycon programming will incorrectly set the baud rate if it is specified. The way around this is to tell the kernel to continue using the preprogrammed baud rate. This is done by setting the baud to 0. Further, the SPCR and DSDT serial port need to match the port address and port access type for the kernel to conclude they are the same. So while ARM_GAS32 is correct for earlycon (it can be used alone on the kernel command line) by providing the reg-shift=3D2 value, it also sets the io type to MMIO32, which doesn't match the DSDT defined MMIO. This means that the actual console will never appear. The obvious fix is to set reg-width=3D4 in DSDT, but that also changes the accesssors to 32-bits (similarly to earlycon) and results in console failure. So the less obvious fix, is to use the GAS8 specifier. This means that earlycon needs to be fully specified as earlycon=3Duart,mmio32,0xf0512000, but has the extremely useful feature that the console default works without any user interaction. If in the future marvell decides to define their own ACPI id for the console and upstream a quirk, the ARM_GAS8 portion of this should be reverted. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jeremy Linton --- Silicon/Marvell/Armada7k8k/AcpiTables/Spcr.aslc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Silicon/Marvell/Armada7k8k/AcpiTables/Spcr.aslc b/Silicon/Ma= rvell/Armada7k8k/AcpiTables/Spcr.aslc index e78bb9036f..06c7af069c 100644 --- a/Silicon/Marvell/Armada7k8k/AcpiTables/Spcr.aslc +++ b/Silicon/Marvell/Armada7k8k/AcpiTables/Spcr.aslc @@ -30,11 +30,11 @@ EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr =3D= { { EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE }, = // Reserved1[3] - ARM_GAS32 (FixedPcdGet64(PcdSerialRegisterBase)), = // BaseAddress + ARM_GAS8 (FixedPcdGet64(PcdSerialRegisterBase)), = // BaseAddress EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC, = // InterruptType 0, = // Irq 51, = // GlobalSystemInterrupt - EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200, = // BaudRate + 0, = // Keep Firmware Baud EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY, = // Parity EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1, = // StopBits 0, = // FlowControl --=20 2.20.1