diff mbox series

[V2,2/2] serial: uartlite: Use dynamic allocation for major number when uart ports > 4

Message ID 20231114093303.2718141-3-manikanta.guntupalli@amd.com
State Superseded
Headers show
Series Use dynamic allocation for major number when uart ports > 4 | expand

Commit Message

Manikanta Guntupalli Nov. 14, 2023, 9:33 a.m. UTC
Device number 204 has a range of minors on major number.
uart_register_driver is failing due to lack of minor numbers
when more number of uart ports used. So, to avoid minor number
limitation on 204 major number use dynamic major allocation
when more than 4 uart ports used otherwise use static major
allocation.

https://docs.kernel.org/arch/arm/sa1100/serial_uart.html

Signed-off-by: Manikanta Guntupalli <manikanta.guntupalli@amd.com>
---
Changes for V2:
Update logic to use either static or dynamic major allocation.
Update commit description.
Update description of SERIAL_UARTLITE_NR_UARTS in Kconfig.
---
 drivers/tty/serial/Kconfig    | 2 ++
 drivers/tty/serial/uartlite.c | 5 +++++
 2 files changed, 7 insertions(+)

Comments

Jiri Slaby Nov. 14, 2023, 9:48 a.m. UTC | #1
On 14. 11. 23, 10:33, Manikanta Guntupalli wrote:
> Device number 204 has a range of minors on major number.
> uart_register_driver is failing due to lack of minor numbers
> when more number of uart ports used. So, to avoid minor number
> limitation on 204 major number use dynamic major allocation
> when more than 4 uart ports used otherwise use static major
> allocation.
> 
> https://docs.kernel.org/arch/arm/sa1100/serial_uart.html
> 
> Signed-off-by: Manikanta Guntupalli <manikanta.guntupalli@amd.com>
> ---
> Changes for V2:
> Update logic to use either static or dynamic major allocation.
> Update commit description.
> Update description of SERIAL_UARTLITE_NR_UARTS in Kconfig.
> ---
>   drivers/tty/serial/Kconfig    | 2 ++
>   drivers/tty/serial/uartlite.c | 5 +++++
>   2 files changed, 7 insertions(+)
> 
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index 732c893c8d16..368c63066a86 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -532,6 +532,8 @@ config SERIAL_UARTLITE_NR_UARTS
>   	help
>   	  Set this to the number of uartlites in your system, or the number
>   	  you think you might implement.
> +	  If maximum number of uartlite serial ports more than 4,

A verb is missing. The same in patch 1/2.

> then driver uses
> +	  dynamic allocation instead of static allocation for major number.
>   
>   config SERIAL_SUNCORE
>   	bool
> diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
> index 404c14acafa5..517f1f34143d 100644
> --- a/drivers/tty/serial/uartlite.c
> +++ b/drivers/tty/serial/uartlite.c
> @@ -24,8 +24,13 @@
>   #include <linux/pm_runtime.h>
>   
>   #define ULITE_NAME		"ttyUL"
> +#if (CONFIG_SERIAL_UARTLITE_NR_UARTS > 4)

The parentheses are unneeded, right?

> +#define ULITE_MAJOR             0       /* use dynamic node allocation */
> +#define ULITE_MINOR             0
> +#else
>   #define ULITE_MAJOR		204
>   #define ULITE_MINOR		187
> +#endif
>   #define ULITE_NR_UARTS		CONFIG_SERIAL_UARTLITE_NR_UARTS
>   
>   /* ---------------------------------------------------------------------
diff mbox series

Patch

diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index 732c893c8d16..368c63066a86 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -532,6 +532,8 @@  config SERIAL_UARTLITE_NR_UARTS
 	help
 	  Set this to the number of uartlites in your system, or the number
 	  you think you might implement.
+	  If maximum number of uartlite serial ports more than 4, then driver uses
+	  dynamic allocation instead of static allocation for major number.
 
 config SERIAL_SUNCORE
 	bool
diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
index 404c14acafa5..517f1f34143d 100644
--- a/drivers/tty/serial/uartlite.c
+++ b/drivers/tty/serial/uartlite.c
@@ -24,8 +24,13 @@ 
 #include <linux/pm_runtime.h>
 
 #define ULITE_NAME		"ttyUL"
+#if (CONFIG_SERIAL_UARTLITE_NR_UARTS > 4)
+#define ULITE_MAJOR             0       /* use dynamic node allocation */
+#define ULITE_MINOR             0
+#else
 #define ULITE_MAJOR		204
 #define ULITE_MINOR		187
+#endif
 #define ULITE_NR_UARTS		CONFIG_SERIAL_UARTLITE_NR_UARTS
 
 /* ---------------------------------------------------------------------