]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
serial: 8250_platform: Refactor serial8250_probe()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 12 Aug 2024 15:47:08 +0000 (18:47 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Aug 2024 06:22:50 +0000 (08:22 +0200)
Make it clear that it supports two cases, pure platform device and ACPI.
With this in mind, split serial8250_probe() to two functions and rename
the ACPI case accordingly.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20240812154901.1068407-7-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_platform.c

index 5953ce5ea32a87013f3b0bfff0d0d6e85605976d..2e7503718f79210527d40c36e381ce4978d0cc04 100644 (file)
@@ -105,7 +105,7 @@ void __init serial8250_isa_init_ports(void)
 /*
  * Generic 16550A platform devices
  */
-static int serial8250_platform_probe(struct platform_device *pdev)
+static int serial8250_probe_acpi(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct uart_8250_port uart = { };
@@ -157,25 +157,11 @@ static int serial8250_platform_probe(struct platform_device *pdev)
        return 0;
 }
 
-/*
- * Register a set of serial devices attached to a platform device.  The
- * list is terminated with a zero flags entry, which means we expect
- * all entries to have at least UPF_BOOT_AUTOCONF set.
- */
-static int serial8250_probe(struct platform_device *dev)
+static int serial8250_probe_platform(struct platform_device *dev, struct plat_serial8250_port *p)
 {
-       struct plat_serial8250_port *p = dev_get_platdata(&dev->dev);
        struct uart_8250_port uart;
        int ret, i, irqflag = 0;
 
-       /*
-        * Probe platform UART devices defined using standard hardware
-        * discovery mechanism like ACPI or DT. Support only ACPI based
-        * serial device for now.
-        */
-       if (!p && has_acpi_companion(&dev->dev))
-               return serial8250_platform_probe(dev);
-
        memset(&uart, 0, sizeof(uart));
 
        if (share_irqs)
@@ -220,6 +206,31 @@ static int serial8250_probe(struct platform_device *dev)
        return 0;
 }
 
+/*
+ * Register a set of serial devices attached to a platform device.  The
+ * list is terminated with a zero flags entry, which means we expect
+ * all entries to have at least UPF_BOOT_AUTOCONF set.
+ */
+static int serial8250_probe(struct platform_device *pdev)
+{
+       struct device *dev = &pdev->dev;
+       struct plat_serial8250_port *p;
+
+       p = dev_get_platdata(dev);
+       if (p)
+               return serial8250_probe_platform(pdev, p);
+
+       /*
+        * Probe platform UART devices defined using standard hardware
+        * discovery mechanism like ACPI or DT. Support only ACPI based
+        * serial device for now.
+        */
+       if (has_acpi_companion(dev))
+               return serial8250_probe_acpi(pdev);
+
+       return 0;
+}
+
 /*
  * Remove serial ports registered against a platform device.
  */