14d1c09ceSDave Jiang /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 24d1c09ceSDave Jiang /* 34d1c09ceSDave Jiang * Copyright (c) 2024-2025 Intel Corporation 44d1c09ceSDave Jiang * 54d1c09ceSDave Jiang * These are definitions for the mailbox command interface of CXL subsystem. 64d1c09ceSDave Jiang */ 74d1c09ceSDave Jiang #ifndef _UAPI_FWCTL_CXL_H_ 84d1c09ceSDave Jiang #define _UAPI_FWCTL_CXL_H_ 94d1c09ceSDave Jiang 104d1c09ceSDave Jiang #include <linux/types.h> 114d1c09ceSDave Jiang #include <linux/stddef.h> 124d1c09ceSDave Jiang #include <cxl/features.h> 134d1c09ceSDave Jiang 144d1c09ceSDave Jiang /** 154d1c09ceSDave Jiang * struct fwctl_rpc_cxl - ioctl(FWCTL_RPC) input for CXL 164d1c09ceSDave Jiang * @opcode: CXL mailbox command opcode 174d1c09ceSDave Jiang * @flags: Flags for the command (input). 184d1c09ceSDave Jiang * @op_size: Size of input payload. 194d1c09ceSDave Jiang * @reserved1: Reserved. Must be 0s. 204d1c09ceSDave Jiang * @get_sup_feats_in: Get Supported Features input 215908f3edSDave Jiang * @get_feat_in: Get Feature input 22*eb5dfcb9SDave Jiang * @set_feat_in: Set Feature input 234d1c09ceSDave Jiang */ 244d1c09ceSDave Jiang struct fwctl_rpc_cxl { 254d1c09ceSDave Jiang __struct_group(fwctl_rpc_cxl_hdr, hdr, /* no attrs */, 264d1c09ceSDave Jiang __u32 opcode; 274d1c09ceSDave Jiang __u32 flags; 284d1c09ceSDave Jiang __u32 op_size; 294d1c09ceSDave Jiang __u32 reserved1; 304d1c09ceSDave Jiang ); 315908f3edSDave Jiang union { 324d1c09ceSDave Jiang struct cxl_mbox_get_sup_feats_in get_sup_feats_in; 335908f3edSDave Jiang struct cxl_mbox_get_feat_in get_feat_in; 34*eb5dfcb9SDave Jiang struct cxl_mbox_set_feat_in set_feat_in; 355908f3edSDave Jiang }; 364d1c09ceSDave Jiang }; 374d1c09ceSDave Jiang 384d1c09ceSDave Jiang /** 394d1c09ceSDave Jiang * struct fwctl_rpc_cxl_out - ioctl(FWCTL_RPC) output for CXL 404d1c09ceSDave Jiang * @size: Size of the output payload 414d1c09ceSDave Jiang * @retval: Return value from device 424d1c09ceSDave Jiang * @get_sup_feats_out: Get Supported Features output 435908f3edSDave Jiang * @payload: raw byte stream of payload 444d1c09ceSDave Jiang */ 454d1c09ceSDave Jiang struct fwctl_rpc_cxl_out { 464d1c09ceSDave Jiang __struct_group(fwctl_rpc_cxl_out_hdr, hdr, /* no attrs */, 474d1c09ceSDave Jiang __u32 size; 484d1c09ceSDave Jiang __u32 retval; 494d1c09ceSDave Jiang ); 505908f3edSDave Jiang union { 514d1c09ceSDave Jiang struct cxl_mbox_get_sup_feats_out get_sup_feats_out; 525908f3edSDave Jiang __DECLARE_FLEX_ARRAY(__u8, payload); 535908f3edSDave Jiang }; 544d1c09ceSDave Jiang }; 554d1c09ceSDave Jiang 564d1c09ceSDave Jiang #endif 57