]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
serial: port: Assign ->iotype correctly when ->iobase is set
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 24 Jan 2025 16:10:46 +0000 (18:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Feb 2025 13:44:35 +0000 (14:44 +0100)
Currently the ->iotype is always assigned to the UPIO_MEM when
the respective property is not found. However, this will not
support the cases when user wants to have UPIO_PORT to be set
or preserved.  Support this scenario by checking ->iobase value
and default the ->iotype respectively.

Fixes: 1117a6fdc7c1 ("serial: 8250_of: Switch to use uart_read_port_properties()")
Fixes: e894b6005dce ("serial: port: Introduce a common helper to read properties")
Cc: stable <stable@kernel.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20250124161530.398361-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_port.c

index d35f1d24156c2297ba3dccc3161f6b0be3149424..f28d0633fe6bd7fbf6dc400ba3ba6091c882564a 100644 (file)
@@ -173,6 +173,7 @@ EXPORT_SYMBOL(uart_remove_one_port);
  * The caller is responsible to initialize the following fields of the @port
  *   ->dev (must be valid)
  *   ->flags
+ *   ->iobase
  *   ->mapbase
  *   ->mapsize
  *   ->regshift (if @use_defaults is false)
@@ -214,7 +215,7 @@ static int __uart_read_properties(struct uart_port *port, bool use_defaults)
        /* Read the registers I/O access type (default: MMIO 8-bit) */
        ret = device_property_read_u32(dev, "reg-io-width", &value);
        if (ret) {
-               port->iotype = UPIO_MEM;
+               port->iotype = port->iobase ? UPIO_PORT : UPIO_MEM;
        } else {
                switch (value) {
                case 1: