Hi Andy, On Wed, 16 Dec 2020 at 16:16, Andy Shevchenko <andriy.shevche...@linux.intel.com> wrote: > > There is no need to call ->start() for already started device. All the same, > there is no need to call ->stop() for devices still in use. > > For now enforce this only for CONSOLE_MUX case. > > Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> > --- > v2: new patch > common/console.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/common/console.c b/common/console.c > index 1efbcc7672ce..b051c24e7389 100644 > --- a/common/console.c > +++ b/common/console.c > @@ -174,6 +174,16 @@ static struct stdio_dev *tstcdev; > struct stdio_dev **console_devices[MAX_FILES]; > int cd_count[MAX_FILES]; > > +static bool console_needs_handle(int file, struct stdio_dev *dev)
function comment - what does this do? > +{ > + int i; > + > + for (i = 0; i < cd_count[file]; i++) > + if (console_devices[file][i] == dev) > + return false; > + return true; > +} > + > /* > * This depends on tstc() always being called before getchar(). > * This is guaranteed to be true because this routine is called > @@ -272,6 +282,11 @@ static inline void console_doenv(int file, struct > stdio_dev *dev) > } > #endif > #else > +static inline bool console_needs_handle(int file, struct stdio_dev *dev) > +{ > + return true; > +} > + > static inline int console_getc(int file) > { > return stdio_devices[file]->getc(stdio_devices[file]); > @@ -310,6 +325,9 @@ int console_start(int file, struct stdio_dev *dev) > { > int error; > > + if (!console_needs_handle(file, dev)) > + return 0; > + > /* Start new device */ > if (dev->start) { > error = dev->start(dev); > @@ -322,6 +340,9 @@ int console_start(int file, struct stdio_dev *dev) > > void console_stop(int file, struct stdio_dev *dev) > { > + if (!console_needs_handle(file, dev)) > + return; > + > if (dev->stop) > dev->stop(dev); > } > -- > 2.29.2 > Regards, Simon