Messages in this thread Patch in this message | | | Date | Wed, 9 Aug 2023 14:26:52 +0800 | Subject | Re: [PATCH] serial: sprd: Support 12 uart ports | From | Baolin Wang <> |
| |
On 8/9/2023 1:52 PM, wenhua lin wrote: > The change of the max ports is to adapt to an new > SPRD serial hardware,also is backward-compatibility with old hardware.
Again, DO NOT top-posting! Thanks.
>> >> On 8/7/2023 4:07 PM, Wenhua Lin wrote: >>> From: Wenhua Lin <wenhua.lin@unisoc.com> >>> >>> Support 12 uart ports, which can solve the problem >>> of insufficient uart ports. >> >> This sounds incorrect to me. >> If this is a software bug, please add a Fixes tag to backport for stable >> kernels. If the change of the max ports is only avaliable on the new >> SPRD serial hardware, you should ensure the change is >> backward-compatibility with old hardware.
This is not backward-compatibility. Please see 'sprd_uart_driver' structure as below:
static struct uart_driver sprd_uart_driver = { .owner = THIS_MODULE, .driver_name = "sprd_serial", .dev_name = SPRD_TTY_NAME, .major = 0, .minor = 0, .nr = UART_NR_MAX, .cons = SPRD_CONSOLE, };
That means you will still register 12 UART ports in the tty for old serial hardwares which actually only support 8 UART ports, and if users want to use another 4 ports which are not supported in the hardware, then system crashes.
So I think you should add a SoC data in 'serial_ids' to change the number of UART port according to different SoC.
>>> Signed-off-by: Wenhua Lin <wenhua.lin@unisoc.com> >>> --- >>> drivers/tty/serial/sprd_serial.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c >>> index b58f51296ace..2774df490899 100644 >>> --- a/drivers/tty/serial/sprd_serial.c >>> +++ b/drivers/tty/serial/sprd_serial.c >>> @@ -22,7 +22,7 @@ >>> #include <linux/tty_flip.h> >>> >>> /* device name */ >>> -#define UART_NR_MAX 8 >>> +#define UART_NR_MAX 12 >>> #define SPRD_TTY_NAME "ttyS" >>> #define SPRD_FIFO_SIZE 128 >>> #define SPRD_DEF_RATE 26000000
| |