2023-10-06 11:57:50

by Max Filippov

[permalink] [raw]
Subject: [PATCH] serial: add PORT_ANY definition

Current pattern in the linux kernel is that every new serial driver adds
one or more new PORT_ definitions because uart_ops::config_port()
callback documentation prescribes setting port->type according to the
type of port found, or to PORT_UNKNOWN if no port was detected.

When the specific type of the port is not important to the userspace
there's no need for a unique PORT_ value, but so far there's no suitable
identifier for that case.

Provide generic port type identifier other than PORT_UNKNOWN for ports
which type is not important to userspace.

Suggested-by: Arnd Bergmann <[email protected]>
Suggested-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Max Filippov <[email protected]>
---
include/uapi/linux/serial.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h
index 53bc1af67a41..070e50cf9e1e 100644
--- a/include/uapi/linux/serial.h
+++ b/include/uapi/linux/serial.h
@@ -47,6 +47,8 @@ struct serial_struct {
/*
* These are the supported serial types.
*/
+/* Generic type identifier for ports which type is not important to userspace. */
+#define PORT_ANY (-1)
#define PORT_UNKNOWN 0
#define PORT_8250 1
#define PORT_16450 2
--
2.30.2


2023-10-07 09:17:57

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] serial: add PORT_ANY definition

On Fri, Oct 06, 2023 at 04:57:13AM -0700, Max Filippov wrote:
> Current pattern in the linux kernel is that every new serial driver adds
> one or more new PORT_ definitions because uart_ops::config_port()
> callback documentation prescribes setting port->type according to the
> type of port found, or to PORT_UNKNOWN if no port was detected.
>
> When the specific type of the port is not important to the userspace
> there's no need for a unique PORT_ value, but so far there's no suitable
> identifier for that case.
>
> Provide generic port type identifier other than PORT_UNKNOWN for ports
> which type is not important to userspace.
>
> Suggested-by: Arnd Bergmann <[email protected]>
> Suggested-by: Greg Kroah-Hartman <[email protected]>
> Signed-off-by: Max Filippov <[email protected]>
> ---
> include/uapi/linux/serial.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h
> index 53bc1af67a41..070e50cf9e1e 100644
> --- a/include/uapi/linux/serial.h
> +++ b/include/uapi/linux/serial.h
> @@ -47,6 +47,8 @@ struct serial_struct {
> /*
> * These are the supported serial types.
> */
> +/* Generic type identifier for ports which type is not important to userspace. */
> +#define PORT_ANY (-1)

This should be at the end of the list.

And I think we need a better name, "PORT_GENERIC"?

thanks,

greg k-h