]> Pileus Git - ~andy/linux/blobdiff - drivers/gpio/devres.c
Merge branch 'akpm' (Andrew's patch-bomb)
[~andy/linux] / drivers / gpio / devres.c
index 8950f6261bbbf323700d7649d1f315db6357b8d7..9e9947cb86a3d4fe29bb018987176275d4476e2c 100644 (file)
@@ -70,6 +70,35 @@ int devm_gpio_request(struct device *dev, unsigned gpio, const char *label)
 }
 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
  *      @dev: device to free gpio for