1 /* 2 * Copyright (c) 2015-2016 Quantenna Communications, Inc. 3 * All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 */ 16 17 #ifndef _QTN_FMAC_SHM_IPC_DEFS_H_ 18 #define _QTN_FMAC_SHM_IPC_DEFS_H_ 19 20 #include <linux/types.h> 21 22 #define QTN_IPC_REG_HDR_SZ (32) 23 #define QTN_IPC_REG_SZ (4096) 24 #define QTN_IPC_MAX_DATA_SZ (QTN_IPC_REG_SZ - QTN_IPC_REG_HDR_SZ) 25 26 enum qtnf_shm_ipc_region_flags { 27 QTNF_SHM_IPC_NEW_DATA = BIT(0), 28 QTNF_SHM_IPC_ACK = BIT(1), 29 }; 30 31 struct qtnf_shm_ipc_region_header { 32 __le32 flags; 33 __le16 data_len; 34 } __packed; 35 36 union qtnf_shm_ipc_region_headroom { 37 struct qtnf_shm_ipc_region_header hdr; 38 u8 headroom[QTN_IPC_REG_HDR_SZ]; 39 } __packed; 40 41 struct qtnf_shm_ipc_region { 42 union qtnf_shm_ipc_region_headroom headroom; 43 u8 data[QTN_IPC_MAX_DATA_SZ]; 44 } __packed; 45 46 #endif /* _QTN_FMAC_SHM_IPC_DEFS_H_ */ 47