21/06/2016 - 0.8.2
------------------

- Added set_edge and set_direction to python GPIO bindings
- Started markdown based written documentation
- Build system cleanups

05/05/2016 - 0.8.1
------------------

- Fixed some configure bugs relating to installing board files

04/05/2016 - 0.8
----------------

- Automatic board probing support via config file
- Python GPIO and I2C bindings
- test_configure.sh test script to catch configure regressions

- Special Thanks to Andy Doan <andy.doan@linaro.org>

09/12/2015 - 0.7.1
------------------

- Fixed compilation with musl
- Remove inline keywords as they dont play nice with GCC 5.2
- Misc cleanups from static analysis

05/11/2015 - 0.7
----------------

- Add named GPIO board support
- Fixed autoconf syntax error

- Special Thanks to Andy Doan <andy.doan@linaro.org>

02/07/2015 - 0.6.5
----------------

- Fix bug in GPIO interrupt polling

14/06/2015 - 0.6.4
----------------

- Fix autotools warnings
- Enable silent build
- Add packageconfig support

- Special Thanks to Yegor Yefremov <yegorslists@googlemail.com>

22/08/2014 - 0.6.3
----------------

- Initialise GPIO function pointer to NULL
- Style fixes
- Small scope optimisations
- Juggling of include files to more relevant places

- Special Thanks to Yegor Yefremov <yegorslists@googlemail.com>

16/06/2014 - 0.6.2
----------------

- Moved some required headers to include files
- Fix memory leak in GPIO lib error path
- Fix wrong SPI brackets in libsoc_spi_read which caused
  function to return FAILURE regardless

- Special Thanks to Yegor Yefremov <yegorslists@googlemail.com>

22/05/2014 - 0.6.1
--------------

- Add support for BOTH edge interrupts
- Add include guards
- Add C++ ifdef support
- Include sysfs gpio bug fix for OMAP platforms

02/02/2014 - 0.6
------------

- PWM sysfs support (Linux 3.12+)
- Fixed some bugs
- Enabled debugging by default; you will now have to specifically
  switch it off (./configure --disable-debug)

06/12/2013 - 0.5
----------------------

- Basic I2C support
- Add SPI header to include_header in configure.ac

06/10/2013 - 0.4
--------------

- Basic SPI support
  - See lib/include/libsoc_spi.h

13/09/2013 - 0.3
--------------

- Non-blocking GPIO interrupts

  /**
   * \fn int libsoc_gpio_callback_interrupt(gpio* gpio, int (*callback_fn)(void*), void* arg)
   * \brief takes a gpio and a callback function, when an interrupt occurs
   *  on the edge previously specified, the callback function is called
   * \param gpio* gpio - the gpio for which you want the interrupt to 
   *  trigger the callback function
   * \param int (*callback_fn)(void*) - the function you wish to call with
   *  a void* pointer to a possible value you may wish to use in the callback.
   * \param void* arg - pointer to data you wish to use in the callback function
   * \return EXIT_SUCCESS or EXIT_FAILURE
   */

  int libsoc_gpio_callback_interrupt(gpio* gpio, int (*callback_fn)(void*), void* arg);
  
  /**
   * \fn int libsoc_gpio_callback_interrupt_cancel(gpio* gpio)
   * \brief cancel a callback on a gpio interrupt
   * \param gpio* gpio - gpio with a valid callback enabled
   * \return EXIT_SUCCESS or EXIT_FAILURE
   */

  int libsoc_gpio_callback_interrupt_cancel(gpio* gpio);

- Added modes to gpio_request
 
  gpio* libsoc_gpio_request(unsigned int gpio_id, int mode);

  /**
  * Valid Modes for libsoc_gpio_request
  * 
  * LS_SHARED - if the gpio is already exported then it will not unexport
  *             the GPIO on free. If it is not exported, then it will
  *             unexport on free.
  * 
  * LS_GREEDY - will succeed if the GPIO is already exported, but will 
  *             always unexport the GPIO on free.
  * 
  * LS_WEAK   - will fail if GPIO is already exported, will always unexport
  *             on free.
  */
  
03/09/2013 - 0.2
--------------

- GPIO blocking interrupt support

  /**
   * \fn int libsoc_gpio_wait_interrupt(gpio* gpio, int timeout)
   * \brief takes a gpio and waits for length of timeout or until an
   *  interrupt occurs. Will return EXIT_SUCCESS on interrupt or 
   *  EXIT_FAILURE on error or timeout.
   * \param gpio*  gpio - the gpio for which you want to wait on interrupt
   * \param int timeout - the max length of time to wait for interrupt in 
   *  milliseconds
   * \return EXIT_SUCCESS on interrupt caught, EXIT_FAILURE on error or 
   *  interrupt missed
   */

  int libsoc_gpio_wait_interrupt(gpio* gpio, int timeout);

- Improved error and debug handling

31/08/2013 - 0.1
--------------

- basic sysfs GPIO support
