unsigned int idx,
                                      enum gpio_lookup_flags *flags)
 {
+       static const char *suffixes[] = { "gpios", "gpio" };
        char prop_name[32]; /* 32 is max size of property name */
        enum of_gpio_flags of_flags;
        struct gpio_desc *desc;
+       unsigned int i;
 
-       if (con_id)
-               snprintf(prop_name, 32, "%s-gpios", con_id);
-       else
-               snprintf(prop_name, 32, "gpios");
+       for (i = 0; i < ARRAY_SIZE(suffixes); i++) {
+               if (con_id)
+                       snprintf(prop_name, 32, "%s-%s", con_id, suffixes[i]);
+               else
+                       snprintf(prop_name, 32, "%s", suffixes[i]);
 
-       desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx,
-                                       &of_flags);
+               desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx,
+                                               &of_flags);
+               if (!IS_ERR(desc))
+                       break;
+       }
 
        if (IS_ERR(desc))
                return desc;