* [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs
@ 2024-09-09 8:37 Nick Chan
2024-09-09 8:37 ` [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_* Nick Chan
` (4 more replies)
0 siblings, 5 replies; 16+ messages in thread
From: Nick Chan @ 2024-09-09 8:37 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi, Nick Chan
Hi,
This series fixes issues with serial on A7-A11 SoCs. The changes do not
seem to affect existing M1 and up users so they can be applied
unconditionally.
Firstly, these SoCs require 32-bit writes on the serial port. This only
manifested in earlycon as reg-io-width in device tree is consulted for
normal serial writes.
Secondly, A7-A9 SoCs seems to use different bits for RXTO and RXTO
enable. Accessing these bits in addition to the original RXTO and RXTO
enable bits will allow serial rx to work correctly on those SoCs.
Changes in v4:
- Removed fake Reviewed-by tag added by accident... need to stop
making stupid mistakes that wastes everyone's time. The remaining
Reviewed-by is real as far as I am aware.
Changes in v3:
- v2 did not declare itself as v2 in subject line... resend as v3.
Changes in v2:
- Mention A7-A11 in the comment about changing register accesses to
MMIO32.
- Use BIT() macro for new entries, and change the existing APPLE_S5L_*
entries for consistency.
v1: https://lore.kernel.org/linux-samsung-soc/20240907111431.2970-1-towinchenmi@gmail.com
v2: https://lore.kernel.org/linux-samsung-soc/20240908075904.12133-1-towinchenmi@gmail.com
v3: https://lore.kernel.org/linux-samsung-soc/20240908090939.2745-1-towinchenmi@gmail.com
Nick Chan
---
Nick Chan (3):
tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
tty: serial: samsung: Fix A7-A11 serial earlycon SError
tty: serial: samsung: Fix serial rx on Apple A7-A9
drivers/tty/serial/samsung_tty.c | 22 ++++++++++++++++------
include/linux/serial_s3c.h | 24 ++++++++++++++----------
2 files changed, 30 insertions(+), 16 deletions(-)
base-commit: 9aaeb87ce1e966169a57f53a02ba05b30880ffb8
--
2.46.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
@ 2024-09-09 8:37 ` Nick Chan
2024-09-10 12:48 ` Andi Shyti
2024-09-09 8:37 ` [PATCH v4 2/3] tty: serial: samsung: Fix A7-A11 serial earlycon SError Nick Chan
` (3 subsequent siblings)
4 siblings, 1 reply; 16+ messages in thread
From: Nick Chan @ 2024-09-09 8:37 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi, Nick Chan
New entries using BIT() will be added soon, so change the existing ones
for consistency.
Signed-off-by: Nick Chan <towinchenmi@gmail.com>
---
include/linux/serial_s3c.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
index 1672cf0810ef..1e8686695487 100644
--- a/include/linux/serial_s3c.h
+++ b/include/linux/serial_s3c.h
@@ -249,9 +249,9 @@
#define APPLE_S5L_UCON_RXTO_ENA 9
#define APPLE_S5L_UCON_RXTHRESH_ENA 12
#define APPLE_S5L_UCON_TXTHRESH_ENA 13
-#define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
-#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
-#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
+#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
+#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
+#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
#define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
S3C2410_UCON_RXIRQMODE | \
@@ -260,9 +260,9 @@
APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
-#define APPLE_S5L_UTRSTAT_RXTHRESH (1<<4)
-#define APPLE_S5L_UTRSTAT_TXTHRESH (1<<5)
-#define APPLE_S5L_UTRSTAT_RXTO (1<<9)
+#define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
+#define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
+#define APPLE_S5L_UTRSTAT_RXTO BIT(9)
#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
#ifndef __ASSEMBLY__
--
2.46.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v4 2/3] tty: serial: samsung: Fix A7-A11 serial earlycon SError
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
2024-09-09 8:37 ` [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_* Nick Chan
@ 2024-09-09 8:37 ` Nick Chan
2024-09-09 8:37 ` [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9 Nick Chan
` (2 subsequent siblings)
4 siblings, 0 replies; 16+ messages in thread
From: Nick Chan @ 2024-09-09 8:37 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi, Nick Chan
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>
Signed-off-by: Nick Chan <towinchenmi@gmail.com>
---
drivers/tty/serial/samsung_tty.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index c4f2ac9518aa..3fdec06322ac 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -2536,7 +2536,7 @@ static const struct s3c24xx_serial_drv_data s5l_serial_drv_data = {
.name = "Apple S5L UART",
.type = TYPE_APPLE_S5L,
.port_type = PORT_8250,
- .iotype = UPIO_MEM,
+ .iotype = UPIO_MEM32,
.fifosize = 16,
.rx_fifomask = S3C2410_UFSTAT_RXMASK,
.rx_fifoshift = S3C2410_UFSTAT_RXSHIFT,
@@ -2822,6 +2822,9 @@ OF_EARLYCON_DECLARE(gs101, "google,gs101-uart", gs101_early_console_setup);
static int __init apple_s5l_early_console_setup(struct earlycon_device *device,
const char *opt)
{
+ /* Apple A7-A11 requires MMIO32 register accesses. */
+ device->port.iotype = UPIO_MEM32;
+
/* Close enough to S3C2410 for earlycon... */
device->port.private_data = &s3c2410_early_console_data;
--
2.46.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
2024-09-09 8:37 ` [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_* Nick Chan
2024-09-09 8:37 ` [PATCH v4 2/3] tty: serial: samsung: Fix A7-A11 serial earlycon SError Nick Chan
@ 2024-09-09 8:37 ` Nick Chan
2024-09-09 9:43 ` Kwanghoon Son
2024-09-10 12:41 ` Andi Shyti
2024-09-09 13:10 ` [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Janne Grunau
2024-09-10 12:21 ` Neal Gompa
4 siblings, 2 replies; 16+ messages in thread
From: Nick Chan @ 2024-09-09 8:37 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi, Nick Chan
Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
enabled by bit 11 in UCON.
Access these bits in addition to the original RXTO and RXTO enable bits,
to allow serial rx to function on A7-A9 SoCs. This change does not
appear to affect the A10 SoC and up.
Signed-off-by: Nick Chan <towinchenmi@gmail.com>
---
drivers/tty/serial/samsung_tty.c | 17 ++++++++++++-----
include/linux/serial_s3c.h | 18 +++++++++++-------
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index 3fdec06322ac..0d184ee2f9ce 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -550,6 +550,7 @@ static void s3c24xx_serial_stop_rx(struct uart_port *port)
case TYPE_APPLE_S5L:
s3c24xx_clear_bit(port, APPLE_S5L_UCON_RXTHRESH_ENA, S3C2410_UCON);
s3c24xx_clear_bit(port, APPLE_S5L_UCON_RXTO_ENA, S3C2410_UCON);
+ s3c24xx_clear_bit(port, APPLE_S5L_UCON_RXTO_LEGACY_ENA, S3C2410_UCON);
break;
default:
disable_irq_nosync(ourport->rx_irq);
@@ -963,9 +964,11 @@ static irqreturn_t apple_serial_handle_irq(int irq, void *id)
u32 pend = rd_regl(port, S3C2410_UTRSTAT);
irqreturn_t ret = IRQ_NONE;
- if (pend & (APPLE_S5L_UTRSTAT_RXTHRESH | APPLE_S5L_UTRSTAT_RXTO)) {
+ if (pend & (APPLE_S5L_UTRSTAT_RXTHRESH | APPLE_S5L_UTRSTAT_RXTO |
+ APPLE_S5L_UTRSTAT_RXTO_LEGACY)) {
wr_regl(port, S3C2410_UTRSTAT,
- APPLE_S5L_UTRSTAT_RXTHRESH | APPLE_S5L_UTRSTAT_RXTO);
+ APPLE_S5L_UTRSTAT_RXTHRESH | APPLE_S5L_UTRSTAT_RXTO |
+ APPLE_S5L_UTRSTAT_RXTO_LEGACY);
ret = s3c24xx_serial_rx_irq(ourport);
}
if (pend & APPLE_S5L_UTRSTAT_TXTHRESH) {
@@ -1190,7 +1193,8 @@ static void apple_s5l_serial_shutdown(struct uart_port *port)
ucon = rd_regl(port, S3C2410_UCON);
ucon &= ~(APPLE_S5L_UCON_TXTHRESH_ENA_MSK |
APPLE_S5L_UCON_RXTHRESH_ENA_MSK |
- APPLE_S5L_UCON_RXTO_ENA_MSK);
+ APPLE_S5L_UCON_RXTO_ENA_MSK |
+ APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK);
wr_regl(port, S3C2410_UCON, ucon);
wr_regl(port, S3C2410_UTRSTAT, APPLE_S5L_UTRSTAT_ALL_FLAGS);
@@ -1287,6 +1291,7 @@ static int apple_s5l_serial_startup(struct uart_port *port)
/* Enable Rx Interrupt */
s3c24xx_set_bit(port, APPLE_S5L_UCON_RXTHRESH_ENA, S3C2410_UCON);
s3c24xx_set_bit(port, APPLE_S5L_UCON_RXTO_ENA, S3C2410_UCON);
+ s3c24xx_set_bit(port, APPLE_S5L_UCON_RXTO_LEGACY_ENA, S3C2410_UCON);
return ret;
}
@@ -2143,13 +2148,15 @@ static int s3c24xx_serial_resume_noirq(struct device *dev)
ucon &= ~(APPLE_S5L_UCON_TXTHRESH_ENA_MSK |
APPLE_S5L_UCON_RXTHRESH_ENA_MSK |
- APPLE_S5L_UCON_RXTO_ENA_MSK);
+ APPLE_S5L_UCON_RXTO_ENA_MSK |
+ APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK);
if (ourport->tx_enabled)
ucon |= APPLE_S5L_UCON_TXTHRESH_ENA_MSK;
if (ourport->rx_enabled)
ucon |= APPLE_S5L_UCON_RXTHRESH_ENA_MSK |
- APPLE_S5L_UCON_RXTO_ENA_MSK;
+ APPLE_S5L_UCON_RXTO_ENA_MSK |
+ APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK;
wr_regl(port, S3C2410_UCON, ucon);
diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
index 1e8686695487..964a4fbf2626 100644
--- a/include/linux/serial_s3c.h
+++ b/include/linux/serial_s3c.h
@@ -246,24 +246,28 @@
S5PV210_UFCON_TXTRIG4 | \
S5PV210_UFCON_RXTRIG4)
-#define APPLE_S5L_UCON_RXTO_ENA 9
-#define APPLE_S5L_UCON_RXTHRESH_ENA 12
-#define APPLE_S5L_UCON_TXTHRESH_ENA 13
-#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
-#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
-#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
+#define APPLE_S5L_UCON_RXTO_ENA 9
+#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
+#define APPLE_S5L_UCON_RXTHRESH_ENA 12
+#define APPLE_S5L_UCON_TXTHRESH_ENA 13
+#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
+#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
+#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
+#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
#define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
S3C2410_UCON_RXIRQMODE | \
S3C2410_UCON_RXFIFO_TOI)
#define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
+ APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
+#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
#define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
#define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
#define APPLE_S5L_UTRSTAT_RXTO BIT(9)
-#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
+#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
#ifndef __ASSEMBLY__
--
2.46.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-09 8:37 ` [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9 Nick Chan
@ 2024-09-09 9:43 ` Kwanghoon Son
2024-09-09 9:51 ` Nick Chan
2024-09-10 12:41 ` Andi Shyti
1 sibling, 1 reply; 16+ messages in thread
From: Kwanghoon Son @ 2024-09-09 9:43 UTC (permalink / raw)
To: Nick Chan, Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman,
Jiri Slaby, linux-arm-kernel, linux-samsung-soc, linux-kernel,
linux-serial
Cc: asahi
On Mon, 2024-09-09 at 16:37 +0800, Nick Chan wrote:
> Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
> enabled by bit 11 in UCON.
>
> Access these bits in addition to the original RXTO and RXTO enable bits,
> to allow serial rx to function on A7-A9 SoCs. This change does not
> appear to affect the A10 SoC and up.
>
> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
>
[snip]
> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
> index 1e8686695487..964a4fbf2626 100644
> --- a/include/linux/serial_s3c.h
> +++ b/include/linux/serial_s3c.h
> @@ -246,24 +246,28 @@
> S5PV210_UFCON_TXTRIG4 | \
> S5PV210_UFCON_RXTRIG4)
>
> -#define APPLE_S5L_UCON_RXTO_ENA 9
> -#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> -#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> -#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> +#define APPLE_S5L_UCON_RXTO_ENA 9
> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
> +#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> +#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
Small thing, but other diff is not needed except
APPLE_S5L_UCON_RXTO_LEGACY_ENA.
Kwang.
>
> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
> S3C2410_UCON_RXIRQMODE | \
> S3C2410_UCON_RXFIFO_TOI)
> #define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
> + APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
>
> +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
> #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
>
> #ifndef __ASSEMBLY__
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-09 9:43 ` Kwanghoon Son
@ 2024-09-09 9:51 ` Nick Chan
2024-09-10 1:59 ` Kwanghoon Son
0 siblings, 1 reply; 16+ messages in thread
From: Nick Chan @ 2024-09-09 9:51 UTC (permalink / raw)
To: Kwanghoon Son, Krzysztof Kozlowski, Alim Akhtar,
Greg Kroah-Hartman, Jiri Slaby, linux-arm-kernel,
linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi
On 9/9/2024 17:43, Kwanghoon Son wrote:
> On Mon, 2024-09-09 at 16:37 +0800, Nick Chan wrote:
>> Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
>> enabled by bit 11 in UCON.
>>
>> Access these bits in addition to the original RXTO and RXTO enable bits,
>> to allow serial rx to function on A7-A9 SoCs. This change does not
>> appear to affect the A10 SoC and up.
>>
>> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
>>
>
> [snip]
>
>> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
>> index 1e8686695487..964a4fbf2626 100644
>> --- a/include/linux/serial_s3c.h
>> +++ b/include/linux/serial_s3c.h
>> @@ -246,24 +246,28 @@
>> S5PV210_UFCON_TXTRIG4 | \
>> S5PV210_UFCON_RXTRIG4)
>>
>> -#define APPLE_S5L_UCON_RXTO_ENA 9
>> -#define APPLE_S5L_UCON_RXTHRESH_ENA 12
>> -#define APPLE_S5L_UCON_TXTHRESH_ENA 13
>> -#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
>> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
>> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>> +#define APPLE_S5L_UCON_RXTO_ENA 9
>> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
>> +#define APPLE_S5L_UCON_RXTHRESH_ENA 12
>> +#define APPLE_S5L_UCON_TXTHRESH_ENA 13
>> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
>> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
>> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
>> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>
> Small thing, but other diff is not needed except
> APPLE_S5L_UCON_RXTO_LEGACY_ENA.
>
> Kwang.
The other diffs are there to keep everything aligned, it looks like a
jumbled mess here in the email, but in an editor like nano it is all
aligned, before or after this series.
>
>>
>> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
>> S3C2410_UCON_RXIRQMODE | \
>> S3C2410_UCON_RXFIFO_TOI)
>> #define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
>> + APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
>> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
>> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
>>
>> +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
>> #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
>> #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
>> #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
>> -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
>> +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
>>
>> #ifndef __ASSEMBLY__
>>
>
Nick Chan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
` (2 preceding siblings ...)
2024-09-09 8:37 ` [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9 Nick Chan
@ 2024-09-09 13:10 ` Janne Grunau
2024-09-10 12:21 ` Neal Gompa
4 siblings, 0 replies; 16+ messages in thread
From: Janne Grunau @ 2024-09-09 13:10 UTC (permalink / raw)
To: Nick Chan, Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman,
Jiri Slaby, linux-arm-kernel, linux-samsung-soc, LKML,
linux-serial
Cc: asahi
Hej,
On Mon, Sep 9, 2024, at 10:37, Nick Chan wrote:
> Hi,
>
> This series fixes issues with serial on A7-A11 SoCs. The changes do not
> seem to affect existing M1 and up users so they can be applied
> unconditionally.
>
> Firstly, these SoCs require 32-bit writes on the serial port. This only
> manifested in earlycon as reg-io-width in device tree is consulted for
> normal serial writes.
>
> Secondly, A7-A9 SoCs seems to use different bits for RXTO and RXTO
> enable. Accessing these bits in addition to the original RXTO and RXTO
> enable bits will allow serial rx to work correctly on those SoCs.
>
> Changes in v4:
> - Removed fake Reviewed-by tag added by accident... need to stop
> making stupid mistakes that wastes everyone's time. The remaining
> Reviewed-by is real as far as I am aware.
>
> Changes in v3:
> - v2 did not declare itself as v2 in subject line... resend as v3.
>
> Changes in v2:
> - Mention A7-A11 in the comment about changing register accesses to
> MMIO32.
>
> - Use BIT() macro for new entries, and change the existing APPLE_S5L_*
> entries for consistency.
>
> v1:
> https://lore.kernel.org/linux-samsung-soc/20240907111431.2970-1-towinchenmi@gmail.com
> v2:
> https://lore.kernel.org/linux-samsung-soc/20240908075904.12133-1-towinchenmi@gmail.com
> v3:
> https://lore.kernel.org/linux-samsung-soc/20240908090939.2745-1-towinchenmi@gmail.com
>
> Nick Chan
> ---
>
> Nick Chan (3):
> tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
> tty: serial: samsung: Fix A7-A11 serial earlycon SError
> tty: serial: samsung: Fix serial rx on Apple A7-A9
>
> drivers/tty/serial/samsung_tty.c | 22 ++++++++++++++++------
> include/linux/serial_s3c.h | 24 ++++++++++++++----------
> 2 files changed, 30 insertions(+), 16 deletions(-)
whole series tested on M1 Max and M2 Pro
Tested-by: Janne Grunau <j@jannau.net>
best regards
janne
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-09 9:51 ` Nick Chan
@ 2024-09-10 1:59 ` Kwanghoon Son
2024-09-10 2:59 ` Nick Chan
0 siblings, 1 reply; 16+ messages in thread
From: Kwanghoon Son @ 2024-09-10 1:59 UTC (permalink / raw)
To: Nick Chan, Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman,
Jiri Slaby, linux-arm-kernel, linux-samsung-soc, linux-kernel,
linux-serial
Cc: asahi
On Mon, 2024-09-09 at 17:51 +0800, Nick Chan wrote:
>
> On 9/9/2024 17:43, Kwanghoon Son wrote:
> > On Mon, 2024-09-09 at 16:37 +0800, Nick Chan wrote:
> > > Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
> > > enabled by bit 11 in UCON.
> > >
> > > Access these bits in addition to the original RXTO and RXTO enable bits,
> > > to allow serial rx to function on A7-A9 SoCs. This change does not
> > > appear to affect the A10 SoC and up.
> > >
> > > Signed-off-by: Nick Chan <towinchenmi@gmail.com>
> > >
> >
> > [snip]
> >
> > > diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
> > > index 1e8686695487..964a4fbf2626 100644
> > > --- a/include/linux/serial_s3c.h
> > > +++ b/include/linux/serial_s3c.h
> > > @@ -246,24 +246,28 @@
> > > S5PV210_UFCON_TXTRIG4 | \
> > > S5PV210_UFCON_RXTRIG4)
> > >
> > > -#define APPLE_S5L_UCON_RXTO_ENA 9
> > > -#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> > > -#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> > > -#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> > > -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> > > -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> > > +#define APPLE_S5L_UCON_RXTO_ENA 9
> > > +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
> > > +#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> > > +#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> > > +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> > > +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
> > > +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> > > +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> >
> > Small thing, but other diff is not needed except
> > APPLE_S5L_UCON_RXTO_LEGACY_ENA.
> >
> > Kwang.
> The other diffs are there to keep everything aligned, it looks like a
> jumbled mess here in the email, but in an editor like nano it is all
> aligned, before or after this series.
I know why you did. But still there is way keep aligned and only one
line added.
you just added one more tab to other lines.
If one tab with APPLE_S5L_UCON_RXTO_LEGACY_ENA, then everything will
fine.
I think less changes better when see git show or blame.
Best regards,
Kwang.
>
> >
> > >
> > > #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
> > > S3C2410_UCON_RXIRQMODE | \
> > > S3C2410_UCON_RXFIFO_TOI)
> > > #define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
> > > + APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
> > > APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
> > > APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
> > >
> > > +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
> > > #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> > > #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> > > #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> > > -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> > > +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
> > >
> > > #ifndef __ASSEMBLY__
> > >
> >
>
> Nick Chan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-10 1:59 ` Kwanghoon Son
@ 2024-09-10 2:59 ` Nick Chan
2024-09-10 4:15 ` Kwanghoon Son
0 siblings, 1 reply; 16+ messages in thread
From: Nick Chan @ 2024-09-10 2:59 UTC (permalink / raw)
To: Kwanghoon Son, Krzysztof Kozlowski, Alim Akhtar,
Greg Kroah-Hartman, Jiri Slaby, linux-arm-kernel,
linux-samsung-soc, linux-kernel, linux-serial
Cc: asahi
On 10/9/2024 09:59, Kwanghoon Son wrote:
> On Mon, 2024-09-09 at 17:51 +0800, Nick Chan wrote:
>>
>> On 9/9/2024 17:43, Kwanghoon Son wrote:
>>> On Mon, 2024-09-09 at 16:37 +0800, Nick Chan wrote:
>>>> Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
>>>> enabled by bit 11 in UCON.
>>>>
>>>> Access these bits in addition to the original RXTO and RXTO enable bits,
>>>> to allow serial rx to function on A7-A9 SoCs. This change does not
>>>> appear to affect the A10 SoC and up.
>>>>
>>>> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
>>>>
>>>
>>> [snip]
>>>
>>>> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
>>>> index 1e8686695487..964a4fbf2626 100644
>>>> --- a/include/linux/serial_s3c.h
>>>> +++ b/include/linux/serial_s3c.h
>>>> @@ -246,24 +246,28 @@
>>>> S5PV210_UFCON_TXTRIG4 | \
>>>> S5PV210_UFCON_RXTRIG4)
>>>>
>>>> -#define APPLE_S5L_UCON_RXTO_ENA 9
>>>> -#define APPLE_S5L_UCON_RXTHRESH_ENA 12
>>>> -#define APPLE_S5L_UCON_TXTHRESH_ENA 13
>>>> -#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
>>>> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
>>>> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>>>> +#define APPLE_S5L_UCON_RXTO_ENA 9
>>>> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
>>>> +#define APPLE_S5L_UCON_RXTHRESH_ENA 12
>>>> +#define APPLE_S5L_UCON_TXTHRESH_ENA 13
>>>> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
>>>> +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
>>>> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
>>>> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>>>
>>> Small thing, but other diff is not needed except
>>> APPLE_S5L_UCON_RXTO_LEGACY_ENA.
>>>
>>> Kwang.
>> The other diffs are there to keep everything aligned, it looks like a
>> jumbled mess here in the email, but in an editor like nano it is all
>> aligned, before or after this series.
>
> I know why you did. But still there is way keep aligned and only one
> line added.
>
> you just added one more tab to other lines.
> If one tab with APPLE_S5L_UCON_RXTO_LEGACY_ENA, then everything will
> fine.
>
> I think less changes better when see git show or blame.
While as you said, APPLE_S5L_UCON_RXTO_LEGACY_ENA would be fine,
APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK is too long for that to be aligned, see
below without +, - or > distorting everything.
Before:
#define APPLE_S5L_UCON_RXTO_ENA 9
#define APPLE_S5L_UCON_RXTHRESH_ENA 12
#define APPLE_S5L_UCON_TXTHRESH_ENA 13
#define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
Patch 1:
#define APPLE_S5L_UCON_RXTO_ENA 9
#define APPLE_S5L_UCON_RXTHRESH_ENA 12
#define APPLE_S5L_UCON_TXTHRESH_ENA 13
#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
After:
#define APPLE_S5L_UCON_RXTO_ENA 9
#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
#define APPLE_S5L_UCON_RXTHRESH_ENA 12
#define APPLE_S5L_UCON_TXTHRESH_ENA 13
#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK
BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>
> Best regards,
> Kwang.
>
>>
>>>
>>>>
>>>> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
>>>> S3C2410_UCON_RXIRQMODE | \
>>>> S3C2410_UCON_RXFIFO_TOI)
>>>> #define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
>>>> + APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
>>>> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
>>>> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
>>>>
>>>> +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
>>>> #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
>>>> #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
>>>> #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
>>>> -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
>>>> +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
>>>>
>>>> #ifndef __ASSEMBLY__
>>>>
>>>
>>
>> Nick Chan
>
Nick Chan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-10 2:59 ` Nick Chan
@ 2024-09-10 4:15 ` Kwanghoon Son
0 siblings, 0 replies; 16+ messages in thread
From: Kwanghoon Son @ 2024-09-10 4:15 UTC (permalink / raw)
To: Nick Chan, Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman,
Jiri Slaby, linux-arm-kernel, linux-samsung-soc, linux-kernel,
linux-serial
Cc: asahi
On Tue, 2024-09-10 at 10:59 +0800, Nick Chan wrote:
>
> On 10/9/2024 09:59, Kwanghoon Son wrote:
> > On Mon, 2024-09-09 at 17:51 +0800, Nick Chan wrote:
> > >
> > > On 9/9/2024 17:43, Kwanghoon Son wrote:
> > > > On Mon, 2024-09-09 at 16:37 +0800, Nick Chan wrote:
> > > > > Apple's older A7-A9 SoCs seems to use bit 3 in UTRSTAT as RXTO, which is
> > > > > enabled by bit 11 in UCON.
> > > > >
> > > > > Access these bits in addition to the original RXTO and RXTO enable bits,
> > > > > to allow serial rx to function on A7-A9 SoCs. This change does not
> > > > > appear to affect the A10 SoC and up.
> > > > >
> > > > > Signed-off-by: Nick Chan <towinchenmi@gmail.com>
> > > > >
> > > >
> > > > [snip]
> > > >
> > > > > diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
> > > > > index 1e8686695487..964a4fbf2626 100644
> > > > > --- a/include/linux/serial_s3c.h
> > > > > +++ b/include/linux/serial_s3c.h
> > > > > @@ -246,24 +246,28 @@
> > > > > S5PV210_UFCON_TXTRIG4 | \
> > > > > S5PV210_UFCON_RXTRIG4)
> > > > >
> > > > > -#define APPLE_S5L_UCON_RXTO_ENA 9
> > > > > -#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> > > > > -#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> > > > > -#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> > > > > -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> > > > > -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> > > > > +#define APPLE_S5L_UCON_RXTO_ENA 9
> > > > > +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
> > > > > +#define APPLE_S5L_UCON_RXTHRESH_ENA 12
> > > > > +#define APPLE_S5L_UCON_TXTHRESH_ENA 13
> > > > > +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> > > > > +#define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
> > > > > +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> > > > > +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> > > >
> > > > Small thing, but other diff is not needed except
> > > > APPLE_S5L_UCON_RXTO_LEGACY_ENA.
> > > >
> > > > Kwang.
> > > The other diffs are there to keep everything aligned, it looks like a
> > > jumbled mess here in the email, but in an editor like nano it is all
> > > aligned, before or after this series.
> >
> > I know why you did. But still there is way keep aligned and only one
> > line added.
> >
> > you just added one more tab to other lines.
> > If one tab with APPLE_S5L_UCON_RXTO_LEGACY_ENA, then everything will
> > fine.
> >
> > I think less changes better when see git show or blame.
> While as you said, APPLE_S5L_UCON_RXTO_LEGACY_ENA would be fine,
> APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK is too long for that to be aligned, see
> below without +, - or > distorting everything.
>
> Before:
> #define APPLE_S5L_UCON_RXTO_ENA 9
> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
> #define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
> #define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
> #define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
>
> Patch 1:
> #define APPLE_S5L_UCON_RXTO_ENA 9
> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
> #define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> #define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> #define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>
> After:
> #define APPLE_S5L_UCON_RXTO_ENA 9
> #define APPLE_S5L_UCON_RXTO_LEGACY_ENA 11
> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
> #define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> #define APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK
> BIT(APPLE_S5L_UCON_RXTO_LEGACY_ENA)
> #define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> #define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>
Okay I got it.
Thanks for check!
Kwang.
> >
> > Best regards,
> > Kwang.
> >
> > >
> > > >
> > > > >
> > > > > #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
> > > > > S3C2410_UCON_RXIRQMODE | \
> > > > > S3C2410_UCON_RXFIFO_TOI)
> > > > > #define APPLE_S5L_UCON_MASK (APPLE_S5L_UCON_RXTO_ENA_MSK | \
> > > > > + APPLE_S5L_UCON_RXTO_LEGACY_ENA_MSK | \
> > > > > APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
> > > > > APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
> > > > >
> > > > > +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
> > > > > #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> > > > > #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> > > > > #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> > > > > -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> > > > > +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
> > > > >
> > > > > #ifndef __ASSEMBLY__
> > > > >
> > > >
> > >
> > > Nick Chan
> >
>
> Nick Chan
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
` (3 preceding siblings ...)
2024-09-09 13:10 ` [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Janne Grunau
@ 2024-09-10 12:21 ` Neal Gompa
4 siblings, 0 replies; 16+ messages in thread
From: Neal Gompa @ 2024-09-10 12:21 UTC (permalink / raw)
To: Nick Chan
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
On Mon, Sep 9, 2024 at 10:42 AM Nick Chan <towinchenmi@gmail.com> wrote:
>
> Hi,
>
> This series fixes issues with serial on A7-A11 SoCs. The changes do not
> seem to affect existing M1 and up users so they can be applied
> unconditionally.
>
> Firstly, these SoCs require 32-bit writes on the serial port. This only
> manifested in earlycon as reg-io-width in device tree is consulted for
> normal serial writes.
>
> Secondly, A7-A9 SoCs seems to use different bits for RXTO and RXTO
> enable. Accessing these bits in addition to the original RXTO and RXTO
> enable bits will allow serial rx to work correctly on those SoCs.
>
> Changes in v4:
> - Removed fake Reviewed-by tag added by accident... need to stop
> making stupid mistakes that wastes everyone's time. The remaining
> Reviewed-by is real as far as I am aware.
>
> Changes in v3:
> - v2 did not declare itself as v2 in subject line... resend as v3.
>
> Changes in v2:
> - Mention A7-A11 in the comment about changing register accesses to
> MMIO32.
>
> - Use BIT() macro for new entries, and change the existing APPLE_S5L_*
> entries for consistency.
>
> v1: https://lore.kernel.org/linux-samsung-soc/20240907111431.2970-1-towinchenmi@gmail.com
> v2: https://lore.kernel.org/linux-samsung-soc/20240908075904.12133-1-towinchenmi@gmail.com
> v3: https://lore.kernel.org/linux-samsung-soc/20240908090939.2745-1-towinchenmi@gmail.com
>
> Nick Chan
> ---
>
> Nick Chan (3):
> tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
> tty: serial: samsung: Fix A7-A11 serial earlycon SError
> tty: serial: samsung: Fix serial rx on Apple A7-A9
>
> drivers/tty/serial/samsung_tty.c | 22 ++++++++++++++++------
> include/linux/serial_s3c.h | 24 ++++++++++++++----------
> 2 files changed, 30 insertions(+), 16 deletions(-)
>
>
> base-commit: 9aaeb87ce1e966169a57f53a02ba05b30880ffb8
> --
> 2.46.0
>
>
Whole series LGTM.
Reviewed-by: Neal Gompa <neal@gompa.dev>
--
真実はいつも一つ!/ Always, there's only one truth!
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-09 8:37 ` [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9 Nick Chan
2024-09-09 9:43 ` Kwanghoon Son
@ 2024-09-10 12:41 ` Andi Shyti
2024-09-10 12:49 ` Andi Shyti
1 sibling, 1 reply; 16+ messages in thread
From: Andi Shyti @ 2024-09-10 12:41 UTC (permalink / raw)
To: Nick Chan
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
Hi Nick,
> +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
> #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
As you are here, you could use genmask
GENMASK(0xff, 3)
Andi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
2024-09-09 8:37 ` [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_* Nick Chan
@ 2024-09-10 12:48 ` Andi Shyti
2024-09-10 14:26 ` Nick Chan
0 siblings, 1 reply; 16+ messages in thread
From: Andi Shyti @ 2024-09-10 12:48 UTC (permalink / raw)
To: Nick Chan
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
Hi Nick,
On Mon, Sep 09, 2024 at 04:37:25PM GMT, Nick Chan wrote:
> New entries using BIT() will be added soon, so change the existing ones
> for consistency.
>
> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
I think this is:
Suggested-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
> include/linux/serial_s3c.h | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
> index 1672cf0810ef..1e8686695487 100644
> --- a/include/linux/serial_s3c.h
> +++ b/include/linux/serial_s3c.h
> @@ -249,9 +249,9 @@
> #define APPLE_S5L_UCON_RXTO_ENA 9
> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
> -#define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>
> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
> S3C2410_UCON_RXIRQMODE | \
> @@ -260,9 +260,9 @@
> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
>
> -#define APPLE_S5L_UTRSTAT_RXTHRESH (1<<4)
> -#define APPLE_S5L_UTRSTAT_TXTHRESH (1<<5)
> -#define APPLE_S5L_UTRSTAT_RXTO (1<<9)
> +#define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> +#define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> +#define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> #define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
You could make this GENMASK(0x3f, 4)
Andi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9
2024-09-10 12:41 ` Andi Shyti
@ 2024-09-10 12:49 ` Andi Shyti
0 siblings, 0 replies; 16+ messages in thread
From: Andi Shyti @ 2024-09-10 12:49 UTC (permalink / raw)
To: Nick Chan
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
On Tue, Sep 10, 2024 at 02:41:31PM GMT, Andi Shyti wrote:
> > +#define APPLE_S5L_UTRSTAT_RXTO_LEGACY BIT(3)
> > #define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> > #define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> > #define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> > -#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> > +#define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f8)
>
> As you are here, you could use genmask
>
> GENMASK(0xff, 3)
GENMASK(..., 2), of course :-)
Andi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
2024-09-10 12:48 ` Andi Shyti
@ 2024-09-10 14:26 ` Nick Chan
2024-09-10 15:33 ` Andi Shyti
0 siblings, 1 reply; 16+ messages in thread
From: Nick Chan @ 2024-09-10 14:26 UTC (permalink / raw)
To: Andi Shyti
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
On 10/9/2024 20:48, Andi Shyti wrote:
> Hi Nick,
>
> On Mon, Sep 09, 2024 at 04:37:25PM GMT, Nick Chan wrote:
>> New entries using BIT() will be added soon, so change the existing ones
>> for consistency.
>>
>> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
>
> I think this is:
>
> Suggested-by: Krzysztof Kozlowski <krzk@kernel.org>
We will see... Got a bit paranoid after bad things happened with v2 and v3.
>
>> ---
>> include/linux/serial_s3c.h | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
>> index 1672cf0810ef..1e8686695487 100644
>> --- a/include/linux/serial_s3c.h
>> +++ b/include/linux/serial_s3c.h
>> @@ -249,9 +249,9 @@
>> #define APPLE_S5L_UCON_RXTO_ENA 9
>> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
>> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
>> -#define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
>> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
>> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
>> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
>> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
>> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
>>
>> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
>> S3C2410_UCON_RXIRQMODE | \
>> @@ -260,9 +260,9 @@
>> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
>> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
>>
>> -#define APPLE_S5L_UTRSTAT_RXTHRESH (1<<4)
>> -#define APPLE_S5L_UTRSTAT_TXTHRESH (1<<5)
>> -#define APPLE_S5L_UTRSTAT_RXTO (1<<9)
>> +#define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
>> +#define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
>> +#define APPLE_S5L_UTRSTAT_RXTO BIT(9)
>> #define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
>
> You could make this GENMASK(0x3f, 4)
Good idea, given the above context I think I may add
Suggested-by: Andi Shyti <andi.shyti@kernel.org>
too. And actually it should be GENMASK(9, 3)
>
> Andi
Nick Chan
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_*
2024-09-10 14:26 ` Nick Chan
@ 2024-09-10 15:33 ` Andi Shyti
0 siblings, 0 replies; 16+ messages in thread
From: Andi Shyti @ 2024-09-10 15:33 UTC (permalink / raw)
To: Nick Chan
Cc: Krzysztof Kozlowski, Alim Akhtar, Greg Kroah-Hartman, Jiri Slaby,
linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-serial,
asahi
Hi Nick,
On Tue, Sep 10, 2024 at 10:26:44PM GMT, Nick Chan wrote:
> On 10/9/2024 20:48, Andi Shyti wrote:
> > On Mon, Sep 09, 2024 at 04:37:25PM GMT, Nick Chan wrote:
> >> New entries using BIT() will be added soon, so change the existing ones
> >> for consistency.
> >>
> >> Signed-off-by: Nick Chan <towinchenmi@gmail.com>
> >
> > I think this is:
> >
> > Suggested-by: Krzysztof Kozlowski <krzk@kernel.org>
> We will see... Got a bit paranoid after bad things happened with v2 and v3.
ahaha... in this case it's fine. The whole patch was suggested by
Krzysztof, so that it makes sense to add this tag.
What Krzysztof complained about is that you accidentally added
his r-b without him telling you explicitely.
> >
> >> ---
> >> include/linux/serial_s3c.h | 12 ++++++------
> >> 1 file changed, 6 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/include/linux/serial_s3c.h b/include/linux/serial_s3c.h
> >> index 1672cf0810ef..1e8686695487 100644
> >> --- a/include/linux/serial_s3c.h
> >> +++ b/include/linux/serial_s3c.h
> >> @@ -249,9 +249,9 @@
> >> #define APPLE_S5L_UCON_RXTO_ENA 9
> >> #define APPLE_S5L_UCON_RXTHRESH_ENA 12
> >> #define APPLE_S5L_UCON_TXTHRESH_ENA 13
> >> -#define APPLE_S5L_UCON_RXTO_ENA_MSK (1 << APPLE_S5L_UCON_RXTO_ENA)
> >> -#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_RXTHRESH_ENA)
> >> -#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK (1 << APPLE_S5L_UCON_TXTHRESH_ENA)
> >> +#define APPLE_S5L_UCON_RXTO_ENA_MSK BIT(APPLE_S5L_UCON_RXTO_ENA)
> >> +#define APPLE_S5L_UCON_RXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_RXTHRESH_ENA)
> >> +#define APPLE_S5L_UCON_TXTHRESH_ENA_MSK BIT(APPLE_S5L_UCON_TXTHRESH_ENA)
> >>
> >> #define APPLE_S5L_UCON_DEFAULT (S3C2410_UCON_TXIRQMODE | \
> >> S3C2410_UCON_RXIRQMODE | \
> >> @@ -260,9 +260,9 @@
> >> APPLE_S5L_UCON_RXTHRESH_ENA_MSK | \
> >> APPLE_S5L_UCON_TXTHRESH_ENA_MSK)
> >>
> >> -#define APPLE_S5L_UTRSTAT_RXTHRESH (1<<4)
> >> -#define APPLE_S5L_UTRSTAT_TXTHRESH (1<<5)
> >> -#define APPLE_S5L_UTRSTAT_RXTO (1<<9)
> >> +#define APPLE_S5L_UTRSTAT_RXTHRESH BIT(4)
> >> +#define APPLE_S5L_UTRSTAT_TXTHRESH BIT(5)
> >> +#define APPLE_S5L_UTRSTAT_RXTO BIT(9)
> >> #define APPLE_S5L_UTRSTAT_ALL_FLAGS (0x3f0)
> >
> > You could make this GENMASK(0x3f, 4)
> Good idea, given the above context I think I may add
>
> Suggested-by: Andi Shyti <andi.shyti@kernel.org>
ehm... not in this case. Mine is a suggestion as reviewer and
this little comment does not deserve a "Suggested-by" like
in Krzysztof's case.
> too. And actually it should be GENMASK(9, 3)
You find out the right parameters :-)
Thanks,
Andi
> >
> > Andi
>
> Nick Chan
>
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-09-10 15:33 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-09 8:37 [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Nick Chan
2024-09-09 8:37 ` [PATCH v4 1/3] tty: serial: samsung: Use BIT() macro for APPLE_S5L_* Nick Chan
2024-09-10 12:48 ` Andi Shyti
2024-09-10 14:26 ` Nick Chan
2024-09-10 15:33 ` Andi Shyti
2024-09-09 8:37 ` [PATCH v4 2/3] tty: serial: samsung: Fix A7-A11 serial earlycon SError Nick Chan
2024-09-09 8:37 ` [PATCH v4 3/3] tty: serial: samsung: Fix serial rx on Apple A7-A9 Nick Chan
2024-09-09 9:43 ` Kwanghoon Son
2024-09-09 9:51 ` Nick Chan
2024-09-10 1:59 ` Kwanghoon Son
2024-09-10 2:59 ` Nick Chan
2024-09-10 4:15 ` Kwanghoon Son
2024-09-10 12:41 ` Andi Shyti
2024-09-10 12:49 ` Andi Shyti
2024-09-09 13:10 ` [PATCH v4 0/3] tty: serial: samsung: Serial fixes for Apple A7-A11 SoCs Janne Grunau
2024-09-10 12:21 ` Neal Gompa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox