|
@@ -70,6 +70,35 @@ int devm_gpio_request(struct device *dev, unsigned gpio, const char *label)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(devm_gpio_request);
|
|
EXPORT_SYMBOL(devm_gpio_request);
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * devm_gpio_request_one - request a single GPIO with initial setup
|
|
|
|
+ * @dev: device to request for
|
|
|
|
+ * @gpio: the GPIO number
|
|
|
|
+ * @flags: GPIO configuration as specified by GPIOF_*
|
|
|
|
+ * @label: a literal description string of this GPIO
|
|
|
|
+ */
|
|
|
|
+int devm_gpio_request_one(struct device *dev, unsigned gpio,
|
|
|
|
+ unsigned long flags, const char *label)
|
|
|
|
+{
|
|
|
|
+ unsigned *dr;
|
|
|
|
+ int rc;
|
|
|
|
+
|
|
|
|
+ dr = devres_alloc(devm_gpio_release, sizeof(unsigned), GFP_KERNEL);
|
|
|
|
+ if (!dr)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+
|
|
|
|
+ rc = gpio_request_one(gpio, flags, label);
|
|
|
|
+ if (rc) {
|
|
|
|
+ devres_free(dr);
|
|
|
|
+ return rc;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ *dr = gpio;
|
|
|
|
+ devres_add(dev, dr);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* devm_gpio_free - free an interrupt
|
|
* devm_gpio_free - free an interrupt
|
|
* @dev: device to free gpio for
|
|
* @dev: device to free gpio for
|