1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 2/* Copyright(c) Advanced Micro Devices, Inc */
 3
 4/*
 5 * fwctl interface info for pds_fwctl
 6 */
 7
 8#ifndef _FWCTL_PDS_H_
 9#define _FWCTL_PDS_H_
10
11#include <linux/types.h>
12
13/**
14 * struct fwctl_info_pds
15 * @uctx_caps:  bitmap of firmware capabilities
16 *
17 * Return basic information about the FW interface available.
18 */
19struct fwctl_info_pds {
20	__u32 uctx_caps;
21};
22
23/**
24 * enum pds_fwctl_capabilities
25 * @PDS_FWCTL_QUERY_CAP: firmware can be queried for information
26 * @PDS_FWCTL_SEND_CAP:  firmware can be sent commands
27 */
28enum pds_fwctl_capabilities {
29	PDS_FWCTL_QUERY_CAP = 0,
30	PDS_FWCTL_SEND_CAP,
31};
32
33/**
34 * struct fwctl_rpc_pds
35 * @in.op:       requested operation code
36 * @in.ep:       firmware endpoint to operate on
37 * @in.rsvd:     reserved
38 * @in.len:      length of payload data
39 * @in.payload:  address of payload buffer
40 * @in:          rpc in parameters
41 * @out.retval:  operation result value
42 * @out.rsvd:    reserved
43 * @out.len:     length of result data buffer
44 * @out.payload: address of payload data buffer
45 * @out:         rpc out parameters
46 */
47struct fwctl_rpc_pds {
48	struct {
49		__u32 op;
50		__u32 ep;
51		__u32 rsvd;
52		__u32 len;
53		__aligned_u64 payload;
54	} in;
55	struct {
56		__u32 retval;
57		__u32 rsvd[2];
58		__u32 len;
59		__aligned_u64 payload;
60	} out;
61};
62#endif /* _FWCTL_PDS_H_ */