Merge tag 'tty-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
[linux-2.6-microblaze.git] / drivers / tty / serdev / core.c
index 9249896..f1324fe 100644 (file)
@@ -562,23 +562,45 @@ struct acpi_serdev_lookup {
        int index;
 };
 
+/**
+ * serdev_acpi_get_uart_resource - Gets UARTSerialBus resource if type matches
+ * @ares:      ACPI resource
+ * @uart:      Pointer to UARTSerialBus resource will be returned here
+ *
+ * Checks if the given ACPI resource is of type UARTSerialBus.
+ * In this case, returns a pointer to it to the caller.
+ *
+ * Return: True if resource type is of UARTSerialBus, otherwise false.
+ */
+bool serdev_acpi_get_uart_resource(struct acpi_resource *ares,
+                                  struct acpi_resource_uart_serialbus **uart)
+{
+       struct acpi_resource_uart_serialbus *sb;
+
+       if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
+               return false;
+
+       sb = &ares->data.uart_serial_bus;
+       if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_UART)
+               return false;
+
+       *uart = sb;
+       return true;
+}
+EXPORT_SYMBOL_GPL(serdev_acpi_get_uart_resource);
+
 static int acpi_serdev_parse_resource(struct acpi_resource *ares, void *data)
 {
        struct acpi_serdev_lookup *lookup = data;
        struct acpi_resource_uart_serialbus *sb;
        acpi_status status;
 
-       if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
-               return 1;
-
-       if (ares->data.common_serial_bus.type != ACPI_RESOURCE_SERIAL_TYPE_UART)
+       if (!serdev_acpi_get_uart_resource(ares, &sb))
                return 1;
 
        if (lookup->index != -1 && lookup->n++ != lookup->index)
                return 1;
 
-       sb = &ares->data.uart_serial_bus;
-
        status = acpi_get_handle(lookup->device_handle,
                                 sb->resource_source.string_ptr,
                                 &lookup->controller_handle);
@@ -586,7 +608,7 @@ static int acpi_serdev_parse_resource(struct acpi_resource *ares, void *data)
                return 1;
 
        /*
-        * NOTE: Ideally, we would also want to retreive other properties here,
+        * NOTE: Ideally, we would also want to retrieve other properties here,
         * once setting them before opening the device is supported by serdev.
         */