diff --git a/debian/changelog b/debian/changelog index 8222522..4ef25ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +odroid-wiringpi (3.13.2) stable; urgency=medium + + * ODROID-M1: Add gpiomem rules + + -- steve Mon, 18 Apr 2022 16:52:03 +0900 + odroid-wiringpi (3.13.1) stable; urgency=medium * ODROID-COMMON: Add link libgpiod diff --git a/debian/odroid-wiringpi.postinst b/debian/odroid-wiringpi.postinst index cbf347d..98a5aa0 100644 --- a/debian/odroid-wiringpi.postinst +++ b/debian/odroid-wiringpi.postinst @@ -8,15 +8,22 @@ msg() { case "$1" in configure) - ;; + if [ -c "/dev/gpiomem" ] && [ "$(stat -c "%a %G" "/dev/gpiomem")" != "660"*"odroid" ]; then + msg "Reload udev..." + [ -x "$(command -v udevadm)" ] \ + && udevadm trigger \ + || msg "udevadm not found. Please reboot to take effect" + fi + ;; abort-upgrade|abort-remove|abort-deconfigure) - ;; + ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; + esac exit 0 diff --git a/udev/rules.d/99-odroid-wiringpi-rockchip.rules b/udev/rules.d/99-odroid-wiringpi-rockchip.rules new file mode 100644 index 0000000..c6f353d --- /dev/null +++ b/udev/rules.d/99-odroid-wiringpi-rockchip.rules @@ -0,0 +1,2 @@ +# /dev/gpiomem +SUBSYSTEM=="rk3568-gpiomem", GROUP="odroid", MODE="0660" diff --git a/wiringPi/Makefile.am b/wiringPi/Makefile.am index aa0df83..0cf32ab 100644 --- a/wiringPi/Makefile.am +++ b/wiringPi/Makefile.am @@ -46,7 +46,8 @@ libwiringPi_la_SOURCES = \ libwiringPi_la_CFLAGS = \ @EXTRA_CFLAGS@ \ - $(LIBCRYPT_CFLAGS) + $(LIBCRYPT_CFLAGS) \ + -DDEVMEM libwiringPi_la_LDFLAGS = \ -version-info @LIBWIRINGPI_VERSION@ \ diff --git a/wiringPi/odroidm1.c b/wiringPi/odroidm1.c index 38f846b..f544f5f 100644 --- a/wiringPi/odroidm1.c +++ b/wiringPi/odroidm1.c @@ -790,11 +790,6 @@ __attribute__ ((unused))static int _digitalRead_gpiod (int pin) printf("gpiod get error\n"); gpiod_chip_close(chip); } - ret = gpiod_line_request_input(gpiod,CONSUMER); - if (ret < 0) { - printf("gpiod request error\n"); - gpiod_line_release(gpiod); - } ret = gpiod_line_get_value(gpiod); if (ret < 0) { printf("gpiod get error\n"); @@ -900,11 +895,6 @@ __attribute__ ((unused))static int _digitalWrite_gpiod (int pin, int value) gpiod_chip_close(chip); } - ret = gpiod_line_request_output(gpiod, CONSUMER, 0); - if (ret < 0) { - printf("gpiod request error\n"); - gpiod_line_release(gpiod); - } switch (value) { case LOW: ret = gpiod_line_set_value(gpiod, 0);