Hi Greg, > On Mar 23, 2021, at 2:24 AM, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Thu, Feb 18, 2021 at 06:42:09PM -0800, Alex Nemirovsky wrote: >> +static struct cortina_uart_port *cortina_uart_ports; > > Why is this not a per-device pointer? > >> +static void __exit cortina_uart_exit(void) >> +{ >> + platform_driver_unregister(&serial_cortina_driver); >> + uart_unregister_driver(&cortina_uart_driver); >> + kfree(cortina_uart_ports); > > Should not need to free this here, it should be tied to the device, not > the driver. Would it be possible to provide a reference to an example of a good way to do it. > > >> +} >> + >> +module_init(cortina_uart_init); >> +module_exit(cortina_uart_exit); >> + >> +MODULE_AUTHOR("Cortina-Access Inc."); >> +MODULE_DESCRIPTION(" Cortina-Access UART driver"); >> +MODULE_LICENSE("GPL"); >> diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h >> index 62c2204..1931892 100644 >> --- a/include/uapi/linux/serial_core.h >> +++ b/include/uapi/linux/serial_core.h >> @@ -277,4 +277,7 @@ >> /* Freescale LINFlexD UART */ >> #define PORT_LINFLEXUART 122 >> >> +/* Cortina-Access UART */ >> +#define PORT_CORTINA_ACCESS 123 > > Also, no need for this, right? I would prefer to not add new ids if at > all possible. Could you explain why these are no longer required and what has been done in the tty design to make this obsolete? > > thanks, > > greg k-h