All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.