xref: /linux/include/uapi/fwctl/pds.h (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
14d09dd11SShannon Nelson /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
24d09dd11SShannon Nelson /* Copyright(c) Advanced Micro Devices, Inc */
34d09dd11SShannon Nelson 
44d09dd11SShannon Nelson /*
54d09dd11SShannon Nelson  * fwctl interface info for pds_fwctl
64d09dd11SShannon Nelson  */
74d09dd11SShannon Nelson 
84d09dd11SShannon Nelson #ifndef _UAPI_FWCTL_PDS_H_
94d09dd11SShannon Nelson #define _UAPI_FWCTL_PDS_H_
104d09dd11SShannon Nelson 
114d09dd11SShannon Nelson #include <linux/types.h>
124d09dd11SShannon Nelson 
134d09dd11SShannon Nelson /**
144d09dd11SShannon Nelson  * struct fwctl_info_pds
154d09dd11SShannon Nelson  * @uctx_caps:  bitmap of firmware capabilities
164d09dd11SShannon Nelson  *
174d09dd11SShannon Nelson  * Return basic information about the FW interface available.
184d09dd11SShannon Nelson  */
194d09dd11SShannon Nelson struct fwctl_info_pds {
204d09dd11SShannon Nelson 	__u32 uctx_caps;
214d09dd11SShannon Nelson };
224d09dd11SShannon Nelson 
234d09dd11SShannon Nelson /**
244d09dd11SShannon Nelson  * enum pds_fwctl_capabilities
254d09dd11SShannon Nelson  * @PDS_FWCTL_QUERY_CAP: firmware can be queried for information
264d09dd11SShannon Nelson  * @PDS_FWCTL_SEND_CAP:  firmware can be sent commands
274d09dd11SShannon Nelson  */
284d09dd11SShannon Nelson enum pds_fwctl_capabilities {
294d09dd11SShannon Nelson 	PDS_FWCTL_QUERY_CAP = 0,
304d09dd11SShannon Nelson 	PDS_FWCTL_SEND_CAP,
314d09dd11SShannon Nelson };
32*92c66ee8SBrett Creeley 
33*92c66ee8SBrett Creeley /**
34*92c66ee8SBrett Creeley  * struct fwctl_rpc_pds
35*92c66ee8SBrett Creeley  * @in.op:       requested operation code
36*92c66ee8SBrett Creeley  * @in.ep:       firmware endpoint to operate on
37*92c66ee8SBrett Creeley  * @in.rsvd:     reserved
38*92c66ee8SBrett Creeley  * @in.len:      length of payload data
39*92c66ee8SBrett Creeley  * @in.payload:  address of payload buffer
40*92c66ee8SBrett Creeley  * @in:          rpc in parameters
41*92c66ee8SBrett Creeley  * @out.retval:  operation result value
42*92c66ee8SBrett Creeley  * @out.rsvd:    reserved
43*92c66ee8SBrett Creeley  * @out.len:     length of result data buffer
44*92c66ee8SBrett Creeley  * @out.payload: address of payload data buffer
45*92c66ee8SBrett Creeley  * @out:         rpc out parameters
46*92c66ee8SBrett Creeley  */
47*92c66ee8SBrett Creeley struct fwctl_rpc_pds {
48*92c66ee8SBrett Creeley 	struct {
49*92c66ee8SBrett Creeley 		__u32 op;
50*92c66ee8SBrett Creeley 		__u32 ep;
51*92c66ee8SBrett Creeley 		__u32 rsvd;
52*92c66ee8SBrett Creeley 		__u32 len;
53*92c66ee8SBrett Creeley 		__aligned_u64 payload;
54*92c66ee8SBrett Creeley 	} in;
55*92c66ee8SBrett Creeley 	struct {
56*92c66ee8SBrett Creeley 		__u32 retval;
57*92c66ee8SBrett Creeley 		__u32 rsvd[2];
58*92c66ee8SBrett Creeley 		__u32 len;
59*92c66ee8SBrett Creeley 		__aligned_u64 payload;
60*92c66ee8SBrett Creeley 	} out;
61*92c66ee8SBrett Creeley };
624d09dd11SShannon Nelson #endif /* _UAPI_FWCTL_PDS_H_ */
63