public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 1/7] console: Introduce console_start() and console_stop()
Date: Thu, 17 Dec 2020 01:16:18 +0200	[thread overview]
Message-ID: <20201216231624.9724-1-andriy.shevchenko@linux.intel.com> (raw)

In the future we would like to stop unused consoles and
also add a reference counting to avoid imbalanced calls
to ->start() and ->stop() in some cases.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v2: new patch
 common/console.c  | 30 +++++++++++++++++++++++-------
 include/console.h |  3 +++
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/common/console.c b/common/console.c
index 3348436da6f7..1efbcc7672ce 100644
--- a/common/console.c
+++ b/common/console.c
@@ -114,13 +114,9 @@ static int console_setfile(int file, struct stdio_dev * dev)
 	case stdin:
 	case stdout:
 	case stderr:
-		/* Start new device */
-		if (dev->start) {
-			error = dev->start(dev);
-			/* If it's not started dont use it */
-			if (error < 0)
-				break;
-		}
+		error = console_start(file, dev);
+		if (error)
+			break;
 
 		/* Assign the new device (leaving the existing one started) */
 		stdio_devices[file] = dev;
@@ -310,6 +306,26 @@ static inline void console_doenv(int file, struct stdio_dev *dev)
 #endif
 #endif /* CONIFIG_IS_ENABLED(CONSOLE_MUX) */
 
+int console_start(int file, struct stdio_dev *dev)
+{
+	int error;
+
+	/* Start new device */
+	if (dev->start) {
+		error = dev->start(dev);
+		/* If it's not started don't use it */
+		if (error < 0)
+			return error;
+	}
+	return 0;
+}
+
+void console_stop(int file, struct stdio_dev *dev)
+{
+	if (dev->stop)
+		dev->stop(dev);
+}
+
 /** U-Boot INITIAL CONSOLE-NOT COMPATIBLE FUNCTIONS *************************/
 
 int serial_printf(const char *fmt, ...)
diff --git a/include/console.h b/include/console.h
index 432f892b6cce..233ff323e1ee 100644
--- a/include/console.h
+++ b/include/console.h
@@ -8,6 +8,7 @@
 #define __CONSOLE_H
 
 #include <stdbool.h>
+#include <stdio_dev.h>
 #include <linux/errno.h>
 
 extern char console_buffer[];
@@ -15,6 +16,8 @@ extern char console_buffer[];
 /* common/console.c */
 int console_init_f(void);	/* Before relocation; uses the serial  stuff */
 int console_init_r(void);	/* After  relocation; uses the console stuff */
+int console_start(int file, struct stdio_dev *dev);
+void console_stop(int file, struct stdio_dev *dev);
 int console_assign(int file, const char *devname);	/* Assign the console */
 int ctrlc(void);
 int had_ctrlc(void);	/* have we had a Control-C since last clear? */
-- 
2.29.2

             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 Andy Shevchenko [this message]
2020-12-16 23:16 ` [PATCH v2 2/7] console: Keep ->start() and ->stop() balanced Andy Shevchenko
2020-12-17  9:48   ` 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-1-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