Advertisement
Guest User

Untitled

a guest
May 17th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. /**
  2.  * omap_pmic_of_setup_gpios() - Setup GPIO array if needed.
  3.  * @dev:    device to pick up the gpios from
  4.  */
  5. static int omap_pmic_of_setup_gpios(struct device *dev)
  6. {
  7.     struct device_node *node = dev->of_node;
  8.     int num_gpios, i, ret;
  9.  
  10.     num_gpios = of_gpio_count(node);
  11.     if (num_gpios < 0)
  12.         return 0;
  13.  
  14.     for (i = 0; i < num_gpios; i++) {
  15.         int gpio;
  16.         enum of_gpio_flags flags;
  17.  
  18.         gpio = of_get_gpio_flags(node, i, &flags);
  19.         if (!gpio_is_valid(gpio)) {
  20.             dev_err(dev, "Invalid GPIO[%d]: %d\n", i, gpio);
  21.             return -EINVAL;
  22.         }
  23.  
  24.         ret = devm_gpio_request(dev, gpio, dev_name(dev));
  25.         if (ret) {
  26.             dev_err(dev, "Unable to get GPIO %d (%d)\n", gpio, ret);
  27.             return ret;
  28.         }
  29.         ret = gpio_direction_output(gpio,
  30.                         !!(flags & OF_GPIO_ACTIVE_LOW));
  31.         if (ret) {
  32.             dev_err(dev, "Failed to set GPIO %d (%d)\n", gpio, ret);
  33.             return ret;
  34.         }
  35.         dev_dbg(dev, "GPIO=%d set_to=%d\n", gpio,
  36.             !!(flags & OF_GPIO_ACTIVE_LOW));
  37.     }
  38.  
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement