
Hi Andy,
On Wed, 16 Dec 2020 at 16:16, Andy Shevchenko andriy.shevchenko@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.shevchenko@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