Skip to content

Commit 86d4ac2

Browse files
asdfugilgregkh
authored andcommitted
tty: serial: samsung: Fix A7-A11 serial earlycon SError
Apple's earlier SoCs, like A7-A11, requires 32-bit writes for the serial port. Otherwise, a SError happens when writing to UTXH (+0x20). This only manifested in earlycon as reg-io-width in the device tree is consulted for normal serial writes. Change the iotype of the port to UPIO_MEM32, to allow the serial port to function on A7-A11 SoCs. This change does not appear to affect Apple M1 and above. Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Reviewed-by: Neal Gompa <neal@gompa.dev> Tested-by: Janne Grunau <j@jannau.net> Signed-off-by: Nick Chan <towinchenmi@gmail.com> Reviewed-by: Andi Shyti <andi.shyti@kernel.org> Link: https://lore.kernel.org/r/20240911050741.14477-3-towinchenmi@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 4c59c59 commit 86d4ac2

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/tty/serial/samsung_tty.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2536,7 +2536,7 @@ static const struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
25362536
.name = "Apple S5L UART",
25372537
.type = TYPE_APPLE_S5L,
25382538
.port_type = PORT_8250,
2539-
.iotype = UPIO_MEM,
2539+
.iotype = UPIO_MEM32,
25402540
.fifosize = 16,
25412541
.rx_fifomask = S3C2410_UFSTAT_RXMASK,
25422542
.rx_fifoshift = S3C2410_UFSTAT_RXSHIFT,
@@ -2822,6 +2822,9 @@ OF_EARLYCON_DECLARE(gs101, "google,gs101-uart", gs101_early_console_setup);
28222822
static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
28232823
const char *opt)
28242824
{
2825+
/* Apple A7-A11 requires MMIO32 register accesses. */
2826+
device->port.iotype = UPIO_MEM32;
2827+
28252828
/* Close enough to S3C2410 for earlycon... */
28262829
device->port.private_data = &s3c2410_early_console_data;
28272830

0 commit comments

Comments
 (0)