public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] Marvell/Armada7k8k: Remove SPCR baud rate setting
@ 2019-04-09  0:33 jeremy.linton
  2019-04-09  1:31 ` Marcin Wojtas
  2019-04-15 19:50 ` Ard Biesheuvel
  0 siblings, 2 replies; 8+ messages in thread
From: jeremy.linton @ 2019-04-09  0:33 UTC (permalink / raw)
  To: devel; +Cc: mw, ard.biesheuvel, leif.lindholm, michael.d.kinney,
	Jeremy Linton

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=2 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=4 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=uart,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 <jeremy.linton@arm.com>
---
 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/Marvell/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 = {
   { 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
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-04-17 16:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-09  0:33 [PATCH] Marvell/Armada7k8k: Remove SPCR baud rate setting jeremy.linton
2019-04-09  1:31 ` Marcin Wojtas
2019-04-06 13:20   ` Jeremy Linton
2019-04-09  6:15     ` Marcin Wojtas
2019-04-09 17:51       ` Ard Biesheuvel
     [not found]       ` <1593DFB9FE935497.8563@groups.io>
2019-04-09 20:08         ` [edk2-devel] " Ard Biesheuvel
2019-04-15 19:50 ` Ard Biesheuvel
2019-04-17 16:35   ` Jeremy Linton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox