zephyr/drivers/fpga/fpga_shell.c
Yong Cong Sin bbe5e1e6eb build: namespace the generated headers with zephyr/
Namespaced the generated headers with `zephyr` to prevent
potential conflict with other headers.

Introduce a temporary Kconfig `LEGACY_GENERATED_INCLUDE_PATH`
that is enabled by default. This allows the developers to
continue the use of the old include paths for the time being
until it is deprecated and eventually removed. The Kconfig will
generate a build-time warning message, similar to the
`CONFIG_TIMER_RANDOM_GENERATOR`.

Updated the includes path of in-tree sources accordingly.

Most of the changes here are scripted, check the PR for more
info.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
2024-05-28 22:03:55 +02:00

145 lines
2.8 KiB
C

/*
* Copyright (c) 2021 Antmicro <www.antmicro.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/sys/printk.h>
#include <zephyr/shell/shell.h>
#include <zephyr/version.h>
#include <stdlib.h>
#include <zephyr/drivers/fpga.h>
static int parse_common_args(const struct shell *sh, char **argv,
const struct device **dev)
{
*dev = device_get_binding(argv[1]);
if (!*dev) {
shell_error(sh, "FPGA device %s not found", argv[1]);
return -ENODEV;
}
return 0;
}
static int cmd_on(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s: turning on", dev->name);
err = fpga_on(dev);
if (err) {
shell_error(sh, "Error: %d", err);
}
return err;
}
static int cmd_off(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s: turning off", dev->name);
err = fpga_off(dev);
if (err) {
shell_error(sh, "Error: %d", err);
}
return err;
}
static int cmd_reset(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s: resetting FPGA", dev->name);
err = fpga_reset(dev);
if (err) {
shell_error(sh, "Error: %d", err);
}
return err;
}
static int cmd_load(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s: loading bitstream", dev->name);
err = fpga_load(dev, (uint32_t *)strtol(argv[2], NULL, 0),
(uint32_t)atoi(argv[3]));
if (err) {
shell_error(sh, "Error: %d", err);
}
return err;
}
static int cmd_get_status(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s status: %d", dev->name, fpga_get_status(dev));
return err;
}
static int cmd_get_info(const struct shell *sh, size_t argc, char **argv)
{
const struct device *dev;
int err;
err = parse_common_args(sh, argv, &dev);
if (err < 0) {
return err;
}
shell_print(sh, "%s", fpga_get_info(dev));
return err;
}
SHELL_STATIC_SUBCMD_SET_CREATE(
sub_fpga, SHELL_CMD_ARG(off, NULL, "<device>", cmd_off, 2, 0),
SHELL_CMD_ARG(on, NULL, "<device>", cmd_on, 2, 0),
SHELL_CMD_ARG(reset, NULL, "<device>", cmd_reset, 2, 0),
SHELL_CMD_ARG(load, NULL, "<device> <address> <size in bytes>",
cmd_load, 4, 0),
SHELL_CMD_ARG(get_status, NULL, "<device>", cmd_get_status, 2, 0),
SHELL_CMD_ARG(get_info, NULL, "<device>", cmd_get_info, 2, 0),
SHELL_SUBCMD_SET_END);
SHELL_CMD_REGISTER(fpga, &sub_fpga, "FPGA commands", NULL);