From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 2/7] console: Keep ->start() and ->stop() balanced
Date: Thu, 17 Dec 2020 01:16:19 +0200 [thread overview]
Message-ID: <20201216231624.9724-2-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <20201216231624.9724-1-andriy.shevchenko@linux.intel.com>
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)
+{
+ 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
next prev parent reply other threads:[~2020-12-16 23:16 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-16 23:16 [PATCH v2 1/7] console: Introduce console_start() and console_stop() Andy Shevchenko
2020-12-16 23:16 ` Andy Shevchenko [this message]
2020-12-17 9:48 ` [PATCH v2 2/7] console: Keep ->start() and ->stop() balanced Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-16 23:16 ` [PATCH v2 3/7] IOMUX: move search_device() to console.h Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-16 23:16 ` [PATCH v2 4/7] IOMUX: Preserve console list if realloc() fails Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-21 12:01 ` Andy Shevchenko
2020-12-21 16:47 ` Simon Glass
2020-12-21 17:17 ` Andy Shevchenko
2020-12-21 17:33 ` Simon Glass
2020-12-16 23:16 ` [PATCH v2 5/7] IOMUX: Refactor iomux_doenv() in order to increase readability Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-21 12:04 ` Andy Shevchenko
2020-12-21 16:47 ` Simon Glass
2020-12-16 23:16 ` [PATCH v2 6/7] IOMUX: Drop indentation level by removing redundant 'else' Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-16 23:16 ` [PATCH v2 7/7] IOMUX: Stop dropped consoles Andy Shevchenko
2020-12-19 2:29 ` Simon Glass
2020-12-19 2:29 ` [PATCH v2 1/7] console: Introduce console_start() and console_stop() Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201216231624.9724-2-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox