[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 5/8] ns8250: Add configuration parameter when adding ports
From: |
Benjamin Herrenschmidt |
Subject: |
[PATCH v2 5/8] ns8250: Add configuration parameter when adding ports |
Date: |
Thu, 22 Dec 2022 17:12:54 +1100 |
From: Benjamin Herrenschmidt <benh@amazon.com>
This will allow ports to be added with a pre-set configuration
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
grub-core/term/ns8250.c | 27 ++++++++++++++++++++-------
grub-core/term/serial.c | 2 +-
include/grub/serial.h | 4 ++--
3 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/grub-core/term/ns8250.c b/grub-core/term/ns8250.c
index 9e0ebff5a..d9d93fcf8 100644
--- a/grub-core/term/ns8250.c
+++ b/grub-core/term/ns8250.c
@@ -304,7 +304,7 @@ grub_ns8250_hw_get_port (const unsigned int unit)
}
char *
-grub_serial_ns8250_add_port (grub_port_t port)
+grub_serial_ns8250_add_port (grub_port_t port, struct grub_serial_config
*config)
{
struct grub_serial_port *p;
unsigned i;
@@ -314,6 +314,9 @@ grub_serial_ns8250_add_port (grub_port_t port)
{
if (dead_ports & (1 << i))
return NULL;
+ /* give the opportunity for SPCR to configure a default com port */
+ if (config != NULL)
+ grub_serial_port_configure (&com_ports[i], config);
return com_names[i];
}
@@ -326,32 +329,39 @@ grub_serial_ns8250_add_port (grub_port_t port)
return NULL;
p = grub_malloc (sizeof (*p));
- if (!p)
+ if (p == NULL)
return NULL;
p->name = grub_xasprintf ("port%lx", (unsigned long) port);
- if (!p->name)
+ if (p->name == NULL)
{
grub_free (p);
return NULL;
}
p->driver = &grub_ns8250_driver;
- grub_serial_config_defaults (p);
p->mmio = false;
p->port = port;
+ if (config != NULL)
+ grub_serial_port_configure (p, config);
+ else
+ grub_serial_config_defaults (p);
grub_serial_register (p);
return p->name;
}
char *
-grub_serial_ns8250_add_mmio (grub_addr_t addr)
+grub_serial_ns8250_add_mmio (grub_addr_t addr, struct grub_serial_config
*config)
{
struct grub_serial_port *p;
unsigned i;
for (i = 0; i < GRUB_SERIAL_PORT_NUM; i++)
if (com_ports[i].mmio && com_ports[i].mmio_base == addr)
- return com_names[i];
+ {
+ if (config != NULL)
+ grub_serial_port_configure (&com_ports[i], config);
+ return com_names[i];
+ }
p = grub_malloc (sizeof (*p));
if (p == NULL)
@@ -363,9 +373,12 @@ grub_serial_ns8250_add_mmio (grub_addr_t addr)
return NULL;
}
p->driver = &grub_ns8250_driver;
- grub_serial_config_defaults (p);
p->mmio = true;
p->mmio_base = addr;
+ if (config != NULL)
+ grub_serial_port_configure (p, config);
+ else
+ grub_serial_config_defaults (p);
grub_serial_register (p);
return p->name;
diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c
index c8f5f02db..a1707d2f7 100644
--- a/grub-core/term/serial.c
+++ b/grub-core/term/serial.c
@@ -156,7 +156,7 @@ grub_serial_find (const char *name)
&& grub_isxdigit (name [sizeof ("port") - 1]))
{
name = grub_serial_ns8250_add_port (grub_strtoul (&name[sizeof ("port")
- 1],
- 0, 16));
+ 0, 16), NULL);
if (!name)
return NULL;
diff --git a/include/grub/serial.h b/include/grub/serial.h
index 5e008f0f5..a94327140 100644
--- a/include/grub/serial.h
+++ b/include/grub/serial.h
@@ -185,8 +185,8 @@ grub_serial_config_defaults (struct grub_serial_port *port)
#if defined(__mips__) || defined (__i386__) || defined (__x86_64__)
void grub_ns8250_init (void);
-char *grub_serial_ns8250_add_port (grub_port_t port);
-char *grub_serial_ns8250_add_mmio (grub_addr_t addr);
+char *grub_serial_ns8250_add_port (grub_port_t port, struct grub_serial_config
*config);
+char *grub_serial_ns8250_add_mmio (grub_addr_t addr, struct grub_serial_config
*config);
#endif
#ifdef GRUB_MACHINE_IEEE1275
void grub_ofserial_init (void);
--
2.34.1
- [PATCH v2 0/8] serial: Add MMIO & SPCR support, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 1/8] acpi: Export a generic grub_acpi_find_table, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 2/8] acpi: Add SPCR and generic address definitions, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 3/8] ns8250: Add base support for MMIO UARTs, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 5/8] ns8250: Add configuration parameter when adding ports,
Benjamin Herrenschmidt <=
- [PATCH v2 4/8] ns8250: Move base clock definition to a header, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 8/8] serial: Add ability to specify MMIO ports via 'serial', Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 6/8] ns8250: Use ACPI SPCR table when available to configure serial, Benjamin Herrenschmidt, 2022/12/22
- [PATCH v2 7/8] ns8250: Support more MMIO access sizes, Benjamin Herrenschmidt, 2022/12/22