gpio.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. #endif /* _ASM_GENERIC_GPIO_H_ */