odroid-wiringpi (3.16.4) stable; urgency=medium

  * ODROID-M1/S: Update Read/Write Byte and DS.
  * ODROID-M1/S: Fix PWM mux error.

 -- Steve Jeong <steve@how2flow.net>  Thu, 09 May 2024 03:25:13 +0000

odroid-wiringpi (3.16.3) stable; urgency=medium

  * ODROID-M1/S: Improve functions
  * Decided not to take gpiod together and deleted DEVMEM.

 -- Steve Jeong <steve@how2flow.net>  Tue, 02 Apr 2024 03:34:43 +0000

odroid-wiringpi (3.16.2) stable; urgency=medium

  * ODROID-M1/S: simplification of operations

 -- Steve Jeong <steve@how2flow.net>  Mon, 25 Mar 2024 01:38:57 +0000

odroid-wiringpi (3.16.1) stable; urgency=medium

  * ODROID-M1S: Supports extra pins

 -- Steve Jeong <steve@how2flow.net>  Mon, 13 Nov 2023 05:35:50 +0000

odroid-wiringpi (3.16.0) stable; urgency=medium

  * ODROID-M1S: New support for ODROID-M1S

 -- Steve Jeong <steve@how2flow.net>  Tue, 07 Nov 2023 11:06:54 +0900

odroid-wiringpi (3.15.4) stable; urgency=medium

  * ODROID-M1: fix pin of softTone and correct typos.

 -- Steve Jeong <steve@how2flow.net>  Wed, 23 Aug 2023 09:44:45 +0900

odroid-wiringpi (3.15.3) stable; urgency=medium

  * The maintainer's email address has been changed.

 -- Steve Jeong <steve@how2flow.net>  Tue, 11 Jul 2023 15:36:39 +0900

odroid-wiringpi (3.15.2) stable; urgency=medium

  * examples: Improve a new example of lcd. (i2c)

 -- Steve Jeong <how2soft@gmail.com>  Fri, 02 Jun 2023 11:46:19 +0900

odroid-wiringpi (3.15.1) stable; urgency=medium

  * examples: Add a new example of lcd. (i2c)

 -- Steve Jeong <how2soft@gmail.com>  Fri, 02 Jun 2023 10:17:26 +0900

odroid-wiringpi (3.15.0) stable; urgency=medium

  * ODROID-COMMON: Rename scripts that access system nodes to more generic.

 -- Steve Jeong <how2soft@gmail.com>  Thu, 20 Apr 2023 10:22:38 +0900

odroid-wiringpi (3.14.6) stable; urgency=medium

  * ODROID-XU3/4: fix wiringPiISR.

 -- Steve Jeong <how2soft@gmail.com>  Mon, 06 Mar 2023 16:58:28 +0900

odroid-wiringpi (3.14.5) stable; urgency=medium

  * change maintainer's e-mail and unify name style.
  * There are no updates compare with 3.14.4.

 -- Steve Jeong <how2soft@gmail.com>  Tue, 03 Jan 2023 12:09:05 +0900

odroid-wiringpi (3.14.4) stable; urgency=medium

  * ODROID-COMMON: improve pwmSetRange

 -- steve <jkhpro1003@gmail.com>  Tue, 20 Dec 2022 09:30:06 +0900

odroid-wiringpi (3.14.3) stable; urgency=medium

  * ODROID-COMMON: remove exit in wiringPiFailure.
  * DEPENDS: libwiringpi-dev: add "pkg-config"

 -- steve <jkhpro1003@gmail.com>  Mon, 19 Dec 2022 15:19:28 +0900

odroid-wiringpi (3.14.2) stable; urgency=medium

  * ODROID-COMMON: update missing M1/N2 pwm and improve pwm API.

 -- steve <jkhpro1003@gmail.com>  Fri, 16 Dec 2022 12:51:39 +0900

odroid-wiringpi (3.14.1) stable; urgency=medium

  * ODROID-COMMON: allow permission pwm sys nodes and use with gpiomem mode.
  * ANDROID: Add Android.mk for android.

 -- steve <jkhpro1003@gmail.com>  Wed, 23 Nov 2022 10:41:05 +0900

odroid-wiringpi (3.14.0) stable; urgency=medium

  * ODROID-N2L: new support ODROID-N2L

 -- steve <jkhpro1003@gmail.com>  Tue, 15 Nov 2022 10:06:52 +0900

odroid-wiringpi (3.13.10) stable; urgency=medium

  * ODROID-COMMON: remove dependency "libgpiod"

 -- steve <jkhpro1003@gmail.com>  Tue, 15 Nov 2022 10:01:52 +0900

odroid-wiringpi (3.13.9) stable; urgency=medium

  * ODROID-M1: modify set pwmRange flag

 -- steve <jkhpro1003@gmail.com>  Tue, 25 Oct 2022 10:20:17 +0900

odroid-wiringpi (3.13.8) stable; urgency=medium

  * ODROID-M1: pwmSetClock: Troubleshooting (2x) frequencies

 -- steve <jkhpro1003@gmail.com>  Wed, 19 Oct 2022 09:25:29 +0900

odroid-wiringpi (3.13.7) stable; urgency=medium

  * ODROID-M1: support PWM OUTPUT. (PWM1. PWM2)

 -- steve <jkhpro1003@gmail.com>  Tue, 04 Oct 2022 17:51:54 +0900

odroid-wiringpi (3.13.6) stable; urgency=medium

  * ODROID-M1: define "DEVMEM" in m1 header. for solving gpiod error on pip package.

 -- steve <jkhpro1003@gmail.com>  Fri, 16 Sep 2022 12:29:00 +0900

odroid-wiringpi (3.13.5) stable; urgency=medium

  * libwiringpi2: update Depends

 -- steve <jkhpro1003@gmail.com>  Tue, 13 Sep 2022 13:57:37 +0900

odroid-wiringpi (9:3.13.4) stable; urgency=medium

  * ODROID-N2/C4/XU4: solve unmet dependencies.

 -- steve <jkhpro1003@gmail.com>  Tue, 13 Sep 2022 11:29:41 +0900

odroid-wiringpi (3.13.4) stable; urgency=medium

  * ODROID-COMMON: [solve] syntax error near unexpected token `LIBCRYPT,'
  * ODROID-XU3/4: New support ODROID-XU3/4.

 -- steve <jkhpro1003@gmail.com>  Thu, 08 Sep 2022 14:15:42 +0900

odroid-wiringpi (3.13.3) stable; urgency=medium

  * ODROID-N2/C4: Add path of ADC in kernel 5.x

 -- steve <jkhpro1003@gmail.com>  Thu, 09 Jun 2022 10:26:57 +0900

odroid-wiringpi (3.13.2) stable; urgency=medium

  * ODROID-M1: Add gpiomem rules

 -- steve <jkhpro1003@gmail.com>  Mon, 18 Apr 2022 16:52:03 +0900

odroid-wiringpi (3.13.1) stable; urgency=medium

  * ODROID-COMMON: Add link libgpiod
  * ODROID-N2/C4: Fix compile error
  * ODROID-N2/C4: Fix postinst error

 -- steve <jkhpro1003@gmail.com>  Fri, 15 Apr 2022 14:37:13 +0900

odroid-wiringpi (3.12) stable; urgency=medium

  *  Rework Debian package scripts

 -- Dongjin Kim <tobetter@gmail.com>  Wed, 19 Jan 2022 08:57:34 +0000

odroid-wiringpi (9:3.9) stable; urgency=medium

  * WiringPi: Android: Add odroidhc4.c to compile on the android platform

 -- Deokgyu Yang <secugyu@gmail.com>  Fri, 20 Nov 2020 10:53:41 +0900

odroid-wiringpi (9:3.8) stable; urgency=medium

  * WiringPi: Add support for Odroid-HC4

 -- Deokgyu Yang <secugyu@gmail.com>  Tue, 17 Nov 2020 18:12:56 +0900

odroid-wiringpi (9:3.7) stable; urgency=medium

  * Odroid-C1/C2: Add I2C support for mainline kernel
  * Odroid-C1: Fix to keep compatibility with Odroid-C series
  * Odroid-C4: Add base number to GPIO_H pad pins

 -- Deokgyu Yang <secugyu@gmail.com>  Mon, 07 Sep 2020 18:00:26 +0900

odroid-wiringpi (9:3.6) stable; urgency=medium

  * Odroid-C4: Correct ADC nodes and change their access number as to the Odroid convention
  * WiringPi: Remove patch string in kernel number and add whole release string

 -- Deokgyu Yang <secugyu@gmail.com>  Tue, 25 Aug 2020 17:22:35 +0900

odroid-wiringpi (9:3.5) stable; urgency=medium

  * Odroid-XU4: Use cmpKernelVersion to determine ADC node
  * WiringPi: Update in response to the latest regulations about I2C/SPI nodes
  * WiringPi: Add cmpKernelVersion and update the kernelVerion structure
  * WiringPi: Remove utsname things from each board's file
  * WiringPi: Add showing current kernel version to the help text
  * WiringPi: Implement storing current operating board's kernel version

 -- Deokgyu Yang <secugyu@gmail.com>  Mon, 24 Aug 2020 17:38:49 +0900

odroid-wiringpi (9:3.4) stable; urgency=medium

  * WiringPi: Add support for Odroid-N2+

 -- Deokgyu Yang <secugyu@gmail.com>  Wed, 15 Jul 2020 16:29:24 +0900

odroid-wiringpi (9:3.3) stable; urgency=medium

  * WiringPi: Check Device Tree first to recognize and change the referenced DT path
  * WiringPi: Android: Redefine some function that's not supported

 -- Deokgyu Yang <secugyu@gmail.com>  Fri, 26 Jun 2020 14:48:28 +0900

odroid-wiringpi (9:3.2) stable; urgency=medium

  * WiringPi: Bring back all of the stuffs I removed to do with peripherals
  * Revert "WiringPi: Android: Apply removes to Android.bp

 -- Deokgyu Yang <secugyu@gmail.com>  Tue, 28 Apr 2020 13:52:52 +0900

odroid-wiringpi (9:3.1) stable; urgency=medium

  * debian: Add explicit package dependency

 -- Deokgyu Yang <secugyu@gmail.com>  Tue, 21 Apr 2020 11:34:20 +0900

odroid-wiringpi (9:3.0) stable; urgency=medium

  * WiringPi: Bump up version to 3.0

 -- Deokgyu Yang <secugyu@gmail.com>  Fri, 17 Apr 2020 16:57:37 +0900

odroid-wiringpi (9:2.44-7.0) stable; urgency=medium

  * Odroid-C4: New support for Odroid-C4
  * WiringPi: Improve logic of getting board information
  * WiringPi: Remove files that seem won't be used or already have not been used
  * WiringPi: Remove unused codes from newVersion script
  * WiringPi: Minor changes
  * WiringPi: Add definition _GNU_SOURCE to remove warnings to do with implicit functions

 -- Deokgyu Yang <secugyu@gmail.com>  Thu, 09 Apr 2020 16:15:28 +0900

odroid-wiringpi (2.44-6.2) stable; urgency=medium

  * WiringPi: Fix issue where 'wiringPiISR' can't run without sudo

 -- Deokgyu Yang <secugyu@gmail.com>  Wed, 19 Feb 2020 14:37:50 +0900

odroid-wiringpi (2.44-6.1) stable; urgency=medium

  * WiringPi: Ignore case when identifying a board
  * gpio: Add options for readall command in help text
  * WiringPi: Make it does not configure /dev/gpiomem during deb package build

 -- Yang Deokgyu <secugyu@gmail.com>  Fri, 14 Feb 2020 11:51:12 +0900

odroid-wiringpi (2.44-6.0) stable; urgency=medium

  * WiringPi: Get model name from Device Tree if not able from cpuinfo
  * wiringPi/Makefile: Remove legacy files when uninstallation
  * build: Clean up build script and do uninstall/clean before install
  * debian: libwiringpi2: Remove previous built header files after installing

 -- Yang Deokgyu <secugyu@gmail.com>  Tue, 24 Dec 2019 11:13:43 +0900

odroid-wiringpi (2.44-5.3) stable; urgency=medium

  * Add a udev rules file for meson-gpiomem for ODROID-C/C2 boards

 -- Yang Deokgyu <secugyu@gmail.com>  Tue, 22 Oct 2019 16:55:23 +0900

odroid-wiringpi (2.44-5.2) stable; urgency=medium

  * Fix for parsing /proc/cpuinfo on ODROID-C

 -- Yang Deokgyu <secugyu@gmail.com>  Tue, 22 Oct 2019 15:27:13 +0900

odroid-wiringpi (2.44-5.1) stable; urgency=medium

  * Fix for parsing /proc/cpuinfo properly

 -- Yang Deokgyu <secugyu@gmail.com>  Tue, 22 Oct 2019 14:47:20 +0900

odroid-wiringpi (2.44-5.0) stable; urgency=medium

  * Add readall '--all' option
    so that 'gpio readall' without any option shows a mini table having width
    length 79
  * Add udev rules to configure /dev/gpiomem if it is set with wrong permission
  * Tune make job counts to improve build speed
  * Refactor gpio/readall.c

 -- Yang Deokgyu <secugyu@gmail.com>  Fri, 20 Sep 2019 15:01:57 +0900

odroid-wiringpi (2.44-4.1) stable; urgency=medium

  * Fix non-root user who has /dev/gpiomem cannot use gpio command properly

 -- Yang Deokgyu <secugyu@gmail.com>  Wed, 11 Sep 2019 11:44:13 +0900

odroid-wiringpi (2.44-4.0) stable; urgency=medium

  * Add wiringPiI2CReadBlock/wiringPiI2CWriteBlock functions
  * Add INPUT_PULLUP and INPUT_PULLDOWN parameters for pinMode function

 -- Joshua Yang <joshua.yang@hardkernel.com>  Wed, 14 Aug 2019 17:02:55 +0900

odroid-wiringpi (2.44-3.0) stable; urgency=medium

  * Add new support for hardware PWM, works only with N2 for now.
  * Add wiringPiSPISetupInterface function for specifying SPI device as a parameter.
  * Improve stability/compatibility for Android support.

 -- Joshua Yang <joshua.yang@hardkernel.com>  Thu, 08 Aug 2019 10:58:42 +0900

odroid-wiringpi (2.44-2.0) stable; urgency=medium

  * Add wiringPiISRCancel function.

 -- Joshua Yang <joshua.yang@hardkernel.com>  Fri, 26 Jul 2019 13:38:53 +0900

odroid-wiringpi (2.44-1.1) stable; urgency=medium

  * Non-maintainer upload.
  * Fix to build package without running extra 'build'

 -- Dongjin Kim <tobetter@gmail.com>  Tue, 16 Jul 2019 05:55:29 -0400

odroid-wiringpi (2.44-1) odroid-unstable; urgency=low

  * Initial version with real Debian source package build for ODROID boards.

 -- Joshua Yang <joshua.yang@hardkernel.com>  Tue, 16 Jul 2019 11:13:49 +0900

wiringpi (2.26~iwj) rpi-unstable; urgency=low

  * Initial version with real Debian source package build.

 -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sat, 12 Sep 2015 18:31:35 +0100

