All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>
Cc: "Andy Shevchenko" <andriy.shevchenko@intel.com>,
	"Dhruva Gole" <d-gole@ti.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"John Ogness" <john.ogness@linutronix.de>,
	"Johan Hovold" <johan@kernel.org>,
	"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
	"Vignesh Raghavendra" <vigneshr@ti.com>,
	linux-omap@vger.kernel.org, linux-serial@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] serial: core: Add support for dev_name:0.0 naming for kernel console
Date: Wed, 19 Jul 2023 08:15:23 +0300	[thread overview]
Message-ID: <20230719051525.46494-1-tony@atomide.com> (raw)

With the serial core controller related changes we can now start
addressing serial ports with dev_name:0.0 naming. The names are something
like 00:04.0:0.0 on qemu, and 2800000.serial.0:0.0 on ARM for example.

The dev_name is unique serial port hardware controller device name, also
known as port->dev, and 0.0 are the serial core controller id and port id.

Typically 0.0 are used for each controller and port instance unless the
serial port hardware controller has multiple controllers or ports.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---

Note that this depends on fix for serial core port ids patch
"[PATCH] serial: core: Fix serial core port id to not use port->line"

---
 drivers/tty/serial/serial_core.c | 47 ++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -3322,6 +3322,49 @@ static int serial_core_port_device_add(struct serial_ctrl_device *ctrl_dev,
 	return 0;
 }
 
+/*
+ * Add preferred console if configured on kernel command line with naming
+ * "console=dev_name:0.0".
+ */
+static int serial_core_add_preferred_console(struct uart_driver *drv,
+					     struct uart_port *port)
+{
+	char *port_match, *opt, *name;
+	int len, ret = 0;
+
+	port_match = kasprintf(GFP_KERNEL, "console=%s:%i.%i",
+			       dev_name(port->dev), port->ctrl_id,
+			       port->port_id);
+	if (!port_match)
+		return -ENOMEM;
+
+	opt = strstr(saved_command_line, port_match);
+	if (!opt)
+		goto free_port_match;
+
+	len = strlen(port_match);
+
+	if (strlen(opt) > len + 1 && opt[len] == ',')
+		opt += len + 1;
+	else
+		opt = NULL;
+
+	name = kstrdup(drv->dev_name, GFP_KERNEL);
+	if (!name) {
+		ret = -ENOMEM;
+		goto free_port_match;
+	}
+
+	add_preferred_console(name, port->line, opt);
+
+	kfree(name);
+
+free_port_match:
+	kfree(port_match);
+
+	return ret;
+}
+
 /*
  * Initialize a serial core port device, and a controller device if needed.
  */
@@ -3358,6 +3401,10 @@ int serial_core_register_port(struct uart_driver *drv, struct uart_port *port)
 	if (ret)
 		goto err_unregister_ctrl_dev;
 
+	ret = serial_core_add_preferred_console(drv, port);
+	if (ret)
+		goto err_unregister_port_dev;
+
 	ret = serial_core_add_one_port(drv, port);
 	if (ret)
 		goto err_unregister_port_dev;
-- 
2.41.0

             reply	other threads:[~2023-07-19  5:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-19  5:15 Tony Lindgren [this message]
2023-07-19  5:25 ` [PATCH] serial: core: Add support for dev_name:0.0 naming for kernel console Jiri Slaby
2023-07-19  5:28   ` Tony Lindgren
2023-07-19  5:29     ` Jiri Slaby
2023-07-19  5:32       ` Tony Lindgren
2023-07-19  5:36         ` Jiri Slaby
2023-07-19  5:49           ` Tony Lindgren
2023-07-19  5:37 ` Andy Shevchenko
2023-07-20  4:13   ` Tony Lindgren
2023-07-19 15:38 ` kernel test robot
2023-07-19 18:03 ` kernel test robot

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=20230719051525.46494-1-tony@atomide.com \
    --to=tony@atomide.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=d-gole@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jirislaby@kernel.org \
    --cc=johan@kernel.org \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=vigneshr@ti.com \
    /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.