gpio.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * Copyright (c) 2011 The Chromium OS Authors.
  3. * Copyright (c) 2011, NVIDIA Corp. All rights reserved.
  4. * See file CREDITS for list of people who contributed to this
  5. * project.
  6. *
  7. * This program is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU General Public License as
  9. * published by the Free Software Foundation; either version 2 of
  10. * the License, or (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  20. * MA 02111-1307 USA
  21. */
  22. #ifndef _ASM_GENERIC_GPIO_H_
  23. #define _ASM_GENERIC_GPIO_H_
  24. /*
  25. * Generic GPIO API for U-Boot
  26. *
  27. * GPIOs are numbered from 0 to GPIO_COUNT-1 which value is defined
  28. * by the SOC/architecture.
  29. *
  30. * Each GPIO can be an input or output. If an input then its value can
  31. * be read as 0 or 1. If an output then its value can be set to 0 or 1.
  32. * If you try to write an input then the value is undefined. If you try
  33. * to read an output, barring something very unusual, you will get
  34. * back the value of the output that you previously set.
  35. *
  36. * In some cases the operation may fail, for example if the GPIO number
  37. * is out of range, or the GPIO is not available because its pin is
  38. * being used by another function. In that case, functions may return
  39. * an error value of -1.
  40. */
  41. /**
  42. * Request ownership of a GPIO.
  43. *
  44. * @param gpio GPIO number
  45. * @param label Name given to the GPIO
  46. * @return 0 if ok, -1 on error
  47. */
  48. int gpio_request(unsigned gpio, const char *label);
  49. /**
  50. * Stop using the GPIO. This function should not alter pin configuration.
  51. *
  52. * @param gpio GPIO number
  53. * @return 0 if ok, -1 on error
  54. */
  55. int gpio_free(unsigned gpio);
  56. /**
  57. * Make a GPIO an input.
  58. *
  59. * @param gpio GPIO number
  60. * @return 0 if ok, -1 on error
  61. */
  62. int gpio_direction_input(unsigned gpio);
  63. /**
  64. * Make a GPIO an output, and set its value.
  65. *
  66. * @param gpio GPIO number
  67. * @param value GPIO value (0 for low or 1 for high)
  68. * @return 0 if ok, -1 on error
  69. */
  70. int gpio_direction_output(unsigned gpio, int value);
  71. /**
  72. * Get a GPIO's value. This will work whether the GPIO is an input
  73. * or an output.
  74. *
  75. * @param gpio GPIO number
  76. * @return 0 if low, 1 if high, -1 on error
  77. */
  78. int gpio_get_value(unsigned gpio);
  79. /**
  80. * Set an output GPIO's value. The GPIO must already be an output or
  81. * this function may have no effect.
  82. *
  83. * @param gpio GPIO number
  84. * @param value GPIO value (0 for low or 1 for high)
  85. * @return 0 if ok, -1 on error
  86. */
  87. int gpio_set_value(unsigned gpio, int value);
  88. /**
  89. * Request a gpio. This should be called before any of the other functions
  90. * are used on this gpio.
  91. *
  92. * @param gp GPIO number
  93. * @param label User label for this GPIO
  94. * @return 0 if ok, -1 on error
  95. */
  96. int gpio_request(unsigned gpio, const char *label);
  97. #endif /* _ASM_GENERIC_GPIO_H_ */