aboutsummaryrefslogtreecommitdiff
path: root/cmd/armffa.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/armffa.c')
-rw-r--r--cmd/armffa.c202
1 files changed, 0 insertions, 202 deletions
diff --git a/cmd/armffa.c b/cmd/armffa.c
deleted file mode 100644
index 7e6eafc03a..0000000000
--- a/cmd/armffa.c
+++ /dev/null
@@ -1,202 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
- *
- * Authors:
- * Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
- */
-#include <common.h>
-#include <arm_ffa.h>
-#include <command.h>
-#include <dm.h>
-#include <mapmem.h>
-#include <stdlib.h>
-#include <asm/io.h>
-
-/* Select the right physical address formatting according to the platform */
-#ifdef CONFIG_PHYS_64BIT
-#define PhysAddrLength "ll"
-#else
-#define PhysAddrLength ""
-#endif
-#define PHYS_ADDR_LN "%" PhysAddrLength "x"
-
-/**
- * ffa_get_dev() - Return the FF-A device
- * @devp: pointer to the FF-A device
- *
- * Search for the FF-A device.
- *
- * Return:
- * 0 on success. Otherwise, failure
- */
-static int ffa_get_dev(struct udevice **devp)
-{
- int ret;
-
- ret = uclass_first_device_err(UCLASS_FFA, devp);
- if (ret) {
- log_err("Cannot find FF-A bus device\n");
- return ret;
- }
-
- return 0;
-}
-
-/**
- * do_ffa_getpart() - implementation of the getpart subcommand
- * @cmdtp: Command Table
- * @flag: flags
- * @argc: number of arguments
- * @argv: arguments
- *
- * Query a secure partition information. The secure partition UUID is provided
- * as an argument. The function uses the arm_ffa driver
- * partition_info_get operation which implements FFA_PARTITION_INFO_GET
- * ABI to retrieve the data. The input UUID string is expected to be in big
- * endian format.
- *
- * Return:
- *
- * CMD_RET_SUCCESS: on success, otherwise failure
- */
-static int do_ffa_getpart(struct cmd_tbl *cmdtp, int flag, int argc,
- char *const argv[])
-{
- u32 count = 0;
- int ret;
- struct ffa_partition_desc *descs;
- u32 i;
- struct udevice *dev;
-
- if (argc != 2) {
- log_err("Missing argument\n");
- return CMD_RET_USAGE;
- }
-
- ret = ffa_get_dev(&dev);
- if (ret)
- return CMD_RET_FAILURE;
-
- /* Ask the driver to fill the buffer with the SPs info */
-
- ret = ffa_partition_info_get(dev, argv[1], &count, &descs);
- if (ret) {
- log_err("Failure in querying partition(s) info (error code: %d)\n", ret);
- return CMD_RET_FAILURE;
- }
-
- /* SPs found , show the partition information */
- for (i = 0; i < count ; i++) {
- log_info("Partition: id = %x , exec_ctxt %x , properties %x\n",
- descs[i].info.id,
- descs[i].info.exec_ctxt,
- descs[i].info.properties);
- }
-
- return CMD_RET_SUCCESS;
-}
-
-/**
- * do_ffa_ping() - implementation of the ping subcommand
- * @cmdtp: Command Table
- * @flag: flags
- * @argc: number of arguments
- * @argv: arguments
- *
- * Send data to a secure partition. The secure partition UUID is provided
- * as an argument. Use the arm_ffa driver sync_send_receive operation
- * which implements FFA_MSG_SEND_DIRECT_{REQ,RESP} ABIs to send/receive data.
- *
- * Return:
- *
- * CMD_RET_SUCCESS: on success, otherwise failure
- */
-static int do_ffa_ping(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
- struct ffa_send_direct_data msg = {
- .data0 = 0xaaaaaaaa,
- .data1 = 0xbbbbbbbb,
- .data2 = 0xcccccccc,
- .data3 = 0xdddddddd,
- .data4 = 0xeeeeeeee,
- };
- u16 part_id;
- int ret;
- struct udevice *dev;
-
- if (argc != 2) {
- log_err("Missing argument\n");
- return CMD_RET_USAGE;
- }
-
- part_id = strtoul(argv[1], NULL, 16);
- if (!part_id) {
- log_err("Partition ID can not be 0\n");
- return CMD_RET_USAGE;
- }
-
- ret = ffa_get_dev(&dev);
- if (ret)
- return CMD_RET_FAILURE;
-
- ret = ffa_sync_send_receive(dev, part_id, &msg, 1);
- if (!ret) {
- u8 cnt;
-
- log_info("SP response:\n[LSB]\n");
- for (cnt = 0;
- cnt < sizeof(struct ffa_send_direct_data) / sizeof(u64);
- cnt++)
- log_info("%llx\n", ((u64 *)&msg)[cnt]);
- return CMD_RET_SUCCESS;
- }
-
- log_err("Sending direct request error (%d)\n", ret);
- return CMD_RET_FAILURE;
-}
-
-/**
- *do_ffa_devlist() - implementation of the devlist subcommand
- * @cmdtp: [in] Command Table
- * @flag: flags
- * @argc: number of arguments
- * @argv: arguments
- *
- * Query the device belonging to the UCLASS_FFA
- * class.
- *
- * Return:
- *
- * CMD_RET_SUCCESS: on success, otherwise failure
- */
-static int do_ffa_devlist(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
- struct udevice *dev;
- int ret;
-
- ret = ffa_get_dev(&dev);
- if (ret)
- return CMD_RET_FAILURE;
-
- log_info("device %s, addr " PHYS_ADDR_LN ", driver %s, ops " PHYS_ADDR_LN "\n",
- dev->name,
- map_to_sysmem(dev),
- dev->driver->name,
- map_to_sysmem(dev->driver->ops));
-
- return CMD_RET_SUCCESS;
-}
-
-static char armffa_help_text[] =
- "getpart <partition UUID>\n"
- " - lists the partition(s) info\n"
- "ping <partition ID>\n"
- " - sends a data pattern to the specified partition\n"
- "devlist\n"
- " - displays information about the FF-A device/driver\n";
-
-U_BOOT_CMD_WITH_SUBCMDS(armffa, "Arm FF-A test command", armffa_help_text,
- U_BOOT_SUBCMD_MKENT(getpart, 2, 1, do_ffa_getpart),
- U_BOOT_SUBCMD_MKENT(ping, 2, 1, do_ffa_ping),
- U_BOOT_SUBCMD_MKENT(devlist, 1, 1, do_ffa_devlist));