u32 min_speed;
 };
 
+/**
+ * i2c_acpi_get_i2c_resource - Gets I2cSerialBus resource if type matches
+ * @ares:      ACPI resource
+ * @i2c:       Pointer to I2cSerialBus resource will be returned here
+ *
+ * Checks if the given ACPI resource is of type I2cSerialBus.
+ * In this case, returns a pointer to it to the caller.
+ *
+ * Returns true if resource type is of I2cSerialBus, otherwise false.
+ */
+bool i2c_acpi_get_i2c_resource(struct acpi_resource *ares,
+                              struct acpi_resource_i2c_serialbus **i2c)
+{
+       struct acpi_resource_i2c_serialbus *sb;
+
+       if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
+               return false;
+
+       sb = &ares->data.i2c_serial_bus;
+       if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
+               return false;
+
+       *i2c = sb;
+       return true;
+}
+EXPORT_SYMBOL_GPL(i2c_acpi_get_i2c_resource);
+
 static int i2c_acpi_fill_info(struct acpi_resource *ares, void *data)
 {
        struct i2c_acpi_lookup *lookup = data;
        struct acpi_resource_i2c_serialbus *sb;
        acpi_status status;
 
-       if (info->addr || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
-               return 1;
-
-       sb = &ares->data.i2c_serial_bus;
-       if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
+       if (info->addr || !i2c_acpi_get_i2c_resource(ares, &sb))
                return 1;
 
        if (lookup->index != -1 && lookup->n++ != lookup->index)
                goto err;
        }
 
-       if (!value64 || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS) {
-               ret = AE_BAD_PARAMETER;
-               goto err;
-       }
-
-       sb = &ares->data.i2c_serial_bus;
-       if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C) {
+       if (!value64 || !i2c_acpi_get_i2c_resource(ares, &sb)) {
                ret = AE_BAD_PARAMETER;
                goto err;
        }
 
 }
 #endif
 
+#if defined(CONFIG_ACPI) && IS_ENABLED(CONFIG_I2C)
+bool i2c_acpi_get_i2c_resource(struct acpi_resource *ares,
+                              struct acpi_resource_i2c_serialbus **i2c);
+#else
+static inline bool i2c_acpi_get_i2c_resource(struct acpi_resource *ares,
+                                            struct acpi_resource_i2c_serialbus **i2c)
+{
+       return false;
+}
+#endif
+
 /* Device properties */
 
 #ifdef CONFIG_ACPI