mirror of
https://github.com/linux-msm/openocd.git
synced 2026-02-25 13:15:07 -08:00
drivers/linuxgpiod: Migrate to adapter gpio commands
Use the new "adapter gpio" commands to configure the GPIOs used by the linuxgpiod driver. Adds support for drive mode and resistor pull options on all signals. Change-Id: Ic90cb4f06db82435294228b6793330107a9f3606 Signed-off-by: Steve Marple <stevemarple@googlemail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7048 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
committed by
Antonio Borneo
parent
903f2e92a1
commit
290eac04b9
@@ -3401,87 +3401,14 @@ See @file{interface/beaglebone-swd-native.cfg} for a sample configuration file.
|
||||
|
||||
|
||||
@deffn {Interface Driver} {linuxgpiod}
|
||||
Linux provides userspace access to GPIO through libgpiod since Linux kernel version v4.6.
|
||||
The driver emulates either JTAG or SWD transport through bitbanging.
|
||||
|
||||
See @file{interface/dln-2-gpiod.cfg} for a sample config.
|
||||
|
||||
@deffn {Config Command} {linuxgpiod gpiochip} @var{chip}
|
||||
Set the GPIO chip number for all GPIOs used by linuxgpiod. If GPIOs use
|
||||
different GPIO chips then the individual GPIO configuration commands (i.e., not
|
||||
@command{linuxgpiod jtag_nums} or @command{linuxgpiod swd_nums}) can be used to
|
||||
set chip numbers independently for each GPIO.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod jtag_nums} @var{tck} @var{tms} @var{tdi} @var{tdo}
|
||||
Set JTAG transport GPIO numbers for TCK, TMS, TDI, and TDO (in that order). Must
|
||||
be specified to enable JTAG transport. These pins can also be specified
|
||||
individually.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod tck_num} [@var{chip}] @var{tck}
|
||||
Set TCK GPIO number, and optionally TCK chip number. Must be specified to enable
|
||||
JTAG transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod jtag_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod tms_num} [@var{chip}] @var{tms}
|
||||
Set TMS GPIO number, and optionally TMS chip number. Must be specified to enable
|
||||
JTAG transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod jtag_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod tdo_num} [@var{chip}] @var{tdo}
|
||||
Set TDO GPIO number, and optionally TDO chip number. Must be specified to enable
|
||||
JTAG transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod jtag_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod tdi_num} [@var{chip}] @var{tdi}
|
||||
Set TDI GPIO number, and optionally TDI chip number. Must be specified to enable
|
||||
JTAG transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod jtag_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod trst_num} [@var{chip}] @var{trst}
|
||||
Set TRST GPIO number, and optionally TRST chip number. Must be specified to
|
||||
enable TRST.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod swd_nums} @var{swclk} @var{swdio}
|
||||
Set SWD transport GPIO numbers for SWCLK and SWDIO (in that order). Must be
|
||||
specified to enable SWD transport. These pins can also be specified
|
||||
individually.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod swclk_num} [@var{chip}] @var{swclk}
|
||||
Set SWCLK GPIO number, and optionally SWCLK chip number. Must be specified to
|
||||
enable SWD transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod swd_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod swdio_num} [@var{chip}] @var{swdio}
|
||||
Set SWDIO GPIO number, and optionally SWDIO chip number. Must be specified to
|
||||
enable SWD transport. Can also be specified using the configuration command
|
||||
@command{linuxgpiod swd_nums}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod swdio_dir_num} [@var{chip}] @var{swdio_dir}
|
||||
Set SWDIO direction control GPIO number, and optionally SWDIO direction control
|
||||
chip number. If specified, this GPIO can be used to control the direction of an
|
||||
external buffer connected to the SWDIO GPIO (set=output mode, clear=input mode).
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod srst_num} [@var{chip}] @var{srst}
|
||||
Set SRST GPIO number, and optionally SRST chip number. Must be specified to
|
||||
enable SRST.
|
||||
@end deffn
|
||||
|
||||
@deffn {Config Command} {linuxgpiod led_num} [@var{chip}] @var{led}
|
||||
Set activity LED GPIO number, and optionally activity LED chip number. If not
|
||||
specified an activity LED is not enabled.
|
||||
@end deffn
|
||||
Linux provides userspace access to GPIO through libgpiod since Linux kernel
|
||||
version v4.6. The driver emulates either JTAG or SWD transport through
|
||||
bitbanging. There are no driver-specific commands, all GPIO configuration is
|
||||
handled by the generic command @ref{adapter gpio, @command{adapter gpio}}. This
|
||||
driver supports the resistor pull options provided by the @command{adapter gpio}
|
||||
command but the underlying hardware may not be able to support them.
|
||||
|
||||
See @file{interface/dln-2-gpiod.cfg} for a sample configuration file.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -535,74 +535,72 @@ proc bcm2835gpio_peripheral_base args {
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_jtag_nums
|
||||
proc linuxgpiod_jtag_nums args {
|
||||
echo "DEPRECATED! use 'linuxgpiod jtag_nums' not 'linuxgpiod_jtag_nums'"
|
||||
eval linuxgpiod jtag_nums $args
|
||||
eval adapter_gpio_jtag_nums $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_tck_num
|
||||
proc linuxgpiod_tck_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod tck_num' not 'linuxgpiod_tck_num'"
|
||||
eval linuxgpiod tck_num $args
|
||||
eval adapter_gpio_helper tck $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_tms_num
|
||||
proc linuxgpiod_tms_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod tms_num' not 'linuxgpiod_tms_num'"
|
||||
eval linuxgpiod tms_num $args
|
||||
eval adapter_gpio_helper tms $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_tdo_num
|
||||
proc linuxgpiod_tdo_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod tdo_num' not 'linuxgpiod_tdo_num'"
|
||||
eval linuxgpiod tdo_num $args
|
||||
eval adapter_gpio_helper tdo $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_tdi_num
|
||||
proc linuxgpiod_tdi_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod tdi_num' not 'linuxgpiod_tdi_num'"
|
||||
eval linuxgpiod tdi_num $args
|
||||
eval adapter_gpio_helper tdi $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_srst_num
|
||||
proc linuxgpiod_srst_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod srst_num' not 'linuxgpiod_srst_num'"
|
||||
eval linuxgpiod srst_num $args
|
||||
eval adapter_gpio_helper srst $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_trst_num
|
||||
proc linuxgpiod_trst_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod trst_num' not 'linuxgpiod_trst_num'"
|
||||
eval linuxgpiod trst_num $args
|
||||
eval adapter_gpio_helper trst $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_swd_nums
|
||||
proc linuxgpiod_swd_nums args {
|
||||
echo "DEPRECATED! use 'linuxgpiod swd_nums' not 'linuxgpiod_swd_nums'"
|
||||
eval linuxgpiod swd_nums $args
|
||||
eval adapter_gpio_swd_nums $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_swclk_num
|
||||
proc linuxgpiod_swclk_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod swclk_num' not 'linuxgpiod_swclk_num'"
|
||||
eval linuxgpiod swclk_num $args
|
||||
eval adapter_gpio_helper swclk $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_swdio_num
|
||||
proc linuxgpiod_swdio_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod swdio_num' not 'linuxgpiod_swdio_num'"
|
||||
eval linuxgpiod swdio_num $args
|
||||
eval adapter_gpio_helper swdio $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_led_num
|
||||
proc linuxgpiod_led_num args {
|
||||
echo "DEPRECATED! use 'linuxgpiod led_num' not 'linuxgpiod_led_num'"
|
||||
eval linuxgpiod led_num $args
|
||||
eval adapter_gpio_helper led $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod_gpiochip
|
||||
proc linuxgpiod_gpiochip args {
|
||||
echo "DEPRECATED! use 'linuxgpiod gpiochip' not 'linuxgpiod_gpiochip'"
|
||||
eval linuxgpiod gpiochip $args
|
||||
echo "DEPRECATED! use 'adapter <signal_name> -chip' not 'linuxgpiod_gpiochip'"
|
||||
switch [llength $args] {
|
||||
0 { }
|
||||
1 {
|
||||
foreach sig_name {tck tms tdi tdo trst srst swclk swdio swdio_dir led} {
|
||||
eval adapter gpio $sig_name -chip $args
|
||||
}
|
||||
}
|
||||
default {return -code 1 -level 1 "linuxgpiod_gpiochip: syntax error"}
|
||||
}
|
||||
eval adapter gpio
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip sysfsgpio_jtag_nums
|
||||
@@ -863,6 +861,87 @@ proc "xds110 serial" {args} {
|
||||
eval adapter serial $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip linuxgpiod
|
||||
# linuxgpiod command completely removed, this is required for the sub-commands to work
|
||||
proc linuxgpiod {subcommand args} {
|
||||
eval {"linuxgpiod $subcommand"} $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod tck_num"
|
||||
proc "linuxgpiod tck_num" {args} {
|
||||
eval adapter_gpio_helper tck $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod tms_num"
|
||||
proc "linuxgpiod tms_num" {args} {
|
||||
eval adapter_gpio_helper tms $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod tdi_num"
|
||||
proc "linuxgpiod tdi_num" {args} {
|
||||
eval adapter_gpio_helper tdi $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod tdo_num"
|
||||
proc "linuxgpiod tdo_num" {args} {
|
||||
eval adapter_gpio_helper tdo $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod trst_num"
|
||||
proc "linuxgpiod trst_num" {args} {
|
||||
eval adapter_gpio_helper trst $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod srst_num"
|
||||
proc "linuxgpiod srst_num" {args} {
|
||||
eval adapter_gpio_helper srst $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod swclk_num"
|
||||
proc "linuxgpiod swclk_num" {args} {
|
||||
eval adapter_gpio_helper swclk $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod swdio_num"
|
||||
proc "linuxgpiod swdio_num" {args} {
|
||||
eval adapter_gpio_helper swdio $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod swdio_dir_num"
|
||||
proc "linuxgpiod swdio_dir_num" {args} {
|
||||
eval adapter_gpio_helper swdio_dir $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod led_num"
|
||||
proc "linuxgpiod led_num" {args} {
|
||||
eval adapter_gpio_helper led $args
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod gpiochip"
|
||||
proc "linuxgpiod gpiochip" {num} {
|
||||
echo "DEPRECATED! use 'adapter <signal_name> -chip' not 'linuxgpiod gpiochip'"
|
||||
foreach sig_name {tck tms tdi tdo trst srst swclk swdio swdio_dir led} {
|
||||
eval adapter gpio $sig_name -chip $num
|
||||
}
|
||||
eval adapter gpio
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod jtag_nums"
|
||||
proc "linuxgpiod jtag_nums" {tck_num tms_num tdi_num tdo_num} {
|
||||
echo "DEPRECATED! use 'adapter gpio tck; adapter gpio tms; adapter gpio tdi; adapter gpio tdo' not 'linuxgpiod jtag_nums'"
|
||||
eval adapter gpio tck $tck_num
|
||||
eval adapter gpio tms $tms_num
|
||||
eval adapter gpio tdi $tdi_num
|
||||
eval adapter gpio tdo $tdo_num
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "linuxgpiod swd_nums"
|
||||
proc "linuxgpiod swd_nums" {swclk swdio} {
|
||||
echo "DEPRECATED! use 'adapter gpio swclk; adapter gpio swdio' not 'linuxgpiod jtag_nums'"
|
||||
eval adapter gpio swclk $swclk
|
||||
eval adapter gpio swdio $swdio
|
||||
}
|
||||
|
||||
lappend _telnet_autocomplete_skip "am335xgpio jtag_nums"
|
||||
proc "am335xgpio jtag_nums" {tck_num tms_num tdi_num tdo_num} {
|
||||
echo "DEPRECATED! use 'adapter gpio tck; adapter gpio tms; adapter gpio tdi; adapter gpio tdo' not 'am335xgpio jtag_nums'"
|
||||
|
||||
@@ -17,11 +17,14 @@
|
||||
|
||||
adapter driver linuxgpiod
|
||||
|
||||
linuxgpiod gpiochip 0
|
||||
linuxgpiod jtag_nums 2 3 4 1
|
||||
linuxgpiod trst_num 5
|
||||
linuxgpiod swd_nums 2 3
|
||||
linuxgpiod srst_num 0
|
||||
linuxgpiod led_num 6
|
||||
adapter gpio srst 0 -chip 0
|
||||
adapter gpio tdo 1 -chip 0
|
||||
adapter gpio tck 2 -chip 0
|
||||
adapter gpio swclk 2 -chip 0
|
||||
adapter gpio tms 3 -chip 0
|
||||
adapter gpio swdio 3 -chip 0
|
||||
adapter gpio tdi 4 -chip 0
|
||||
adapter gpio trst 5 -chip 0
|
||||
adapter gpio led 6 -chip 0
|
||||
|
||||
reset_config trst_and_srst separate srst_push_pull
|
||||
|
||||
105
testing/test-linuxgpiod-deprecated-commands.cfg
Normal file
105
testing/test-linuxgpiod-deprecated-commands.cfg
Normal file
@@ -0,0 +1,105 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# OpenOCD script to test that the deprecated "linuxgpiod *" and "linuxgpiod_*"
|
||||
# commands produce the expected results. Run this command as:
|
||||
# openocd -f <path>/test-linuxgpiod-deprecated-commands.cfg
|
||||
|
||||
# Raise an error if the "actual" value does not match the "expected" value. Trim
|
||||
# whitespace (including newlines) from strings before comparing.
|
||||
proc expected_value {expected actual} {
|
||||
if {[string trim $expected] ne [string trim $actual]} {
|
||||
error [puts "ERROR: '${actual}' != '${expected}'"]
|
||||
}
|
||||
}
|
||||
|
||||
adapter driver linuxgpiod
|
||||
puts "Driver is '[adapter name]'"
|
||||
expected_value "linuxgpiod" [adapter name]
|
||||
echo [adapter gpio]
|
||||
|
||||
#####################################
|
||||
# Test the "linuxgpiod *" commands
|
||||
|
||||
# Change the GPIO chip for all signals. Don't check directly here, do so when
|
||||
# each signal command is tested.
|
||||
linuxgpiod gpiochip 0
|
||||
|
||||
linuxgpiod jtag_nums 1 2 3 4
|
||||
expected_value "adapter gpio tck (output): num 1, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tck]
|
||||
expected_value "adapter gpio tms (output): num 2, chip 0, active-high, push-pull, pull-none, init-state active" [eval adapter gpio tms]
|
||||
expected_value "adapter gpio tdi (output): num 3, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tdi]
|
||||
expected_value "adapter gpio tdo (input): num 4, chip 0, active-high, pull-none, init-state input" [eval adapter gpio tdo]
|
||||
|
||||
linuxgpiod tck_num 5
|
||||
expected_value "adapter gpio tck (output): num 5, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tck]
|
||||
|
||||
linuxgpiod tms_num 6
|
||||
expected_value "adapter gpio tms (output): num 6, chip 0, active-high, push-pull, pull-none, init-state active" [eval adapter gpio tms]
|
||||
|
||||
linuxgpiod tdi_num 7
|
||||
expected_value "adapter gpio tdi (output): num 7, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tdi]
|
||||
|
||||
linuxgpiod tdo_num 8
|
||||
expected_value "adapter gpio tdo (input): num 8, chip 0, active-high, pull-none, init-state input" [eval adapter gpio tdo]
|
||||
|
||||
linuxgpiod swd_nums 9 10
|
||||
expected_value "adapter gpio swclk (output): num 9, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swclk]
|
||||
expected_value "adapter gpio swdio (bidirectional): num 10, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swdio]
|
||||
|
||||
linuxgpiod swclk_num 11
|
||||
expected_value "adapter gpio swclk (output): num 11, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swclk]
|
||||
|
||||
linuxgpiod swdio_num 12
|
||||
expected_value "adapter gpio swdio (bidirectional): num 12, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swdio]
|
||||
|
||||
linuxgpiod swdio_dir_num 13
|
||||
expected_value "adapter gpio swdio_dir (output): num 13, chip 0, active-high, push-pull, pull-none" [eval adapter gpio swdio_dir]
|
||||
|
||||
linuxgpiod srst_num 14
|
||||
expected_value "adapter gpio srst (output): num 14, chip 0, active-low, pull-none, init-state inactive" [eval adapter gpio srst]
|
||||
|
||||
linuxgpiod trst_num 15
|
||||
expected_value "adapter gpio trst (output): num 15, chip 0, active-low, pull-none, init-state inactive" [eval adapter gpio trst]
|
||||
|
||||
linuxgpiod led_num 16
|
||||
expected_value "adapter gpio led (output): num 16, chip 0, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio led]
|
||||
|
||||
#####################################
|
||||
# Test the old linuxgpiod_* commands
|
||||
|
||||
# Change the GPIO chip for all signals. Don't check directly here, do so when
|
||||
# each signal command is tested.
|
||||
linuxgpiod_gpiochip 1
|
||||
|
||||
linuxgpiod_jtag_nums 17 18 19 20
|
||||
expected_value "adapter gpio tck (output): num 17, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tck]
|
||||
expected_value "adapter gpio tms (output): num 18, chip 1, active-high, push-pull, pull-none, init-state active" [eval adapter gpio tms]
|
||||
expected_value "adapter gpio tdi (output): num 19, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tdi]
|
||||
expected_value "adapter gpio tdo (input): num 20, chip 1, active-high, pull-none, init-state input" [eval adapter gpio tdo]
|
||||
|
||||
linuxgpiod_tck_num 21
|
||||
expected_value "adapter gpio tck (output): num 21, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tck]
|
||||
|
||||
linuxgpiod_tms_num 22
|
||||
expected_value "adapter gpio tms (output): num 22, chip 1, active-high, push-pull, pull-none, init-state active" [eval adapter gpio tms]
|
||||
|
||||
linuxgpiod_tdi_num 23
|
||||
expected_value "adapter gpio tdi (output): num 23, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio tdi]
|
||||
|
||||
linuxgpiod_tdo_num 24
|
||||
expected_value "adapter gpio tdo (input): num 24, chip 1, active-high, pull-none, init-state input" [eval adapter gpio tdo]
|
||||
|
||||
linuxgpiod_swd_nums 25 26
|
||||
expected_value "adapter gpio swclk (output): num 25, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swclk]
|
||||
expected_value "adapter gpio swdio (bidirectional): num 26, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swdio]
|
||||
|
||||
linuxgpiod_swclk_num 27
|
||||
expected_value "adapter gpio swclk (output): num 27, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swclk]
|
||||
|
||||
linuxgpiod_swdio_num 28
|
||||
expected_value "adapter gpio swdio (bidirectional): num 28, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio swdio]
|
||||
|
||||
linuxgpiod_led_num 29
|
||||
expected_value "adapter gpio led (output): num 29, chip 1, active-high, push-pull, pull-none, init-state inactive" [eval adapter gpio led]
|
||||
|
||||
puts "SUCCESS"
|
||||
Reference in New Issue
Block a user