fwnode_lookup:
gdev = gpio_device_find_by_fwnode(fwnode);
+ if (!gdev && gdev_node && gdev_node->name)
+ /*
+ * FIXME: We shouldn't need to compare the GPIO controller's
+ * label against the software node that is supposedly attached
+ * to it. However there are currently GPIO users that - knowing
+ * the expected label of the GPIO chip whose pins they want to
+ * control - set up dummy software nodes named after those GPIO
+ * controllers, which aren't actually attached to them. In this
+ * case gpio_device_find_by_fwnode() will fail as no device on
+ * the GPIO bus is actually associated with the fwnode we're
+ * looking for.
+ *
+ * As a fallback: continue checking the label if we have no
+ * match. However, the situation described above is an abuse
+ * of the software node API and should be phased out and the
+ * following line - eventually removed.
+ */
+ gdev = gpio_device_find_by_label(gdev_node->name);
+
return gdev ?: ERR_PTR(-EPROBE_DEFER);
}