For some devices it might be desirable to leave device powered on after
the cdba exits (e.g. to run some long-running tests). Add the
'power_always_on' option that tells cdba server to leave device powered
on after exiting and to toggle power (to reset the device) when
connecting.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Replace all license headers with the SPDX-License-Identitier headers to
follow the current recommendations.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
While the CDB Assist and QcomLT Debugboard is measuring voltage and
current on the DC jack directly in the backend, other backends and
further measurements can be performed using custom tooling.
Introduce support for invoking an external "status-cmd" to produce such
status updates.
The status command should on its stdout produce json-formatted status
updates following the same format as the cdba-server:
{"ts":%d.%03d, "name": {["mv"|"ma"]: %u}(, "name2": {["mv"|"ma"]: %u})*}
with the ts aquired using clock_gettime(CLOCK_MONOTONIC) and provided in
seconds and milliseconds since the first measurement.
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Now local_gpio has landed, also accept a more verbose
and cleaner yaml config syntax for ftdi_gpio.
For now keep support for the current configuration string.
Closes: #42
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Some devices / hubs require switching both USB-2 and USB-3 ports to
function correctly. Add ppps3_path device option to control USB-3 port
in addition to the USB-2 port.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This driver permits controlling local (on the system) gpios
by using the libgpiod library.
Support for gpiod v1 and v2 is added, and parses the options
via the yaml parser.
This can be tested with the gpio-sim module:
https://docs.kernel.org/admin-guide/gpio/gpio-sim.html
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Export the functions and struct to enable devices to parse
yaml aswell via the parse_options op to be stored in the
device control_options device property.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Control the board using external program. It will be called with 3
arguments: <board> <command> <on/off>, where command is one of "power",
"usb", "key-fastboot", "key-power".
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Separate backend operations into control and console operations. Main
idea is that each device has single set of console ops (conmux or
console) and at most one way to control it. Each backend driver exports
a structure with the set of callbacks.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Since Linux kernel 6.0, PPPS capable USB hubs expose a simple sysfs
attribute for power control. Allow overwriting the usb control callback
to use PPPS hub control instead.
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
Limit access control to the boards according to the passed username. If
the user has no access, the board becoms completely invisible: it is not
listed, it is not possible to fetch board description, etc.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
For different reasons it might be desirable to keep slot 'b' as an
active slot. Add support for specifying the active slot in the config
file. The default is still slot 'a'.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Fixes:
device_parser.c: In function ‘nextsym’:
device_parser.c:53:56: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘unsigned int’ [-Wformat=]
53 | fprintf(stderr, "device parser: error %d\n", dp->parser.error);
| ~^ ~~~~~~~~~~~~~~~~
| | |
| int unsigned int
| %d
device_parser.c: In function ‘expect’:
device_parser.c:80:58: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘unsigned int’ [-Wformat=]
80 | fprintf(stderr, "device parser: expected %d got %d\n", type, dp->event.type);
| ~^ ~~~~~~~~~~~~~~
| | |
| int unsigned int
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
This permits driving a board controlled by GPIOs on an FTDI
interface.
Also add a sample 99-libftdi.rules to permit using the FTDI device.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Allow the control device to implement things such as flushing the
command buffer as part of the close operation. This used to be done to
ensure that any lingering power/usb off requests really where sent to
the device as we closed the control tty.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The power key dance is useful outside of alpaca, move it to device and
modify the device interface to better suite this.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Squash the power_on and power_off into a single "power" function, to
harmonize the code wrt the USB handling.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
All modern systems will properly populate /dev/serial/by-id with links
to the CDB Assist control and target tty, that includes the serial
number in the name.
So there's no reason to keep the complex code that scans for the two
devices by serial number around.
Switch the parameter of "cdb_assist" to be the path of the control tty
and rely on "console" for the "terminal" tty.
Naturally this breaks existing config files.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
It seems more suitable to use the "control_dev" to denote the target
conmux than "cdb_serial". Further more this makes it possible drop the
"cdb_serial" member in an upcoming commit.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
By renaming the "alpaca_dev" to "control_dev" is can be reused in the
other implementations as well.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
USB on the Primus acts up when we toggle USB in Alpaca, so add a
configuration option to force it on at all times.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Make device power controller optional, allowing one to use cdba in
non-automated setup (just simplifying the fastboot + console handling).
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[bjorn: Rebased the patch onto master, reversed the logic in power_on/off]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Make the fastboot key handling a property of the device configuration
and use the newly introduced timeout mechanism for handling it.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>