1/* 2 * iwmc3200top - Intel Wireless MultiCom 3200 Top Driver 3 * drivers/misc/iwmc3200top/fw-msg.h 4 * 5 * Copyright (C) 2009 Intel Corporation. All rights reserved. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License version 9 * 2 as published by the Free Software Foundation. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 * 02110-1301, USA. 20 * 21 * 22 * Author Name: Maxim Grabarnik <maxim.grabarnink@intel.com> 23 * - 24 * 25 */ 26 27#ifndef __FWMSG_H__ 28#define __FWMSG_H__ 29 30#define COMM_TYPE_D2H 0xFF 31#define COMM_TYPE_H2D 0xEE 32 33#define COMM_CATEGORY_OPERATIONAL 0x00 34#define COMM_CATEGORY_DEBUG 0x01 35#define COMM_CATEGORY_TESTABILITY 0x02 36#define COMM_CATEGORY_DIAGNOSTICS 0x03 37 38#define OP_DBG_ZSTR_MSG cpu_to_le16(0x1A) 39 40#define FW_LOG_SRC_MAX 32 41#define FW_LOG_SRC_ALL 255 42 43#define FW_STRING_TABLE_ADDR cpu_to_le32(0x0C000000) 44 45#define CMD_DBG_LOG_LEVEL cpu_to_le16(0x0001) 46#define CMD_TST_DEV_RESET cpu_to_le16(0x0060) 47#define CMD_TST_FUNC_RESET cpu_to_le16(0x0062) 48#define CMD_TST_IFACE_RESET cpu_to_le16(0x0064) 49#define CMD_TST_CPU_UTILIZATION cpu_to_le16(0x0065) 50#define CMD_TST_TOP_DEEP_SLEEP cpu_to_le16(0x0080) 51#define CMD_TST_WAKEUP cpu_to_le16(0x0081) 52#define CMD_TST_FUNC_WAKEUP cpu_to_le16(0x0082) 53#define CMD_TST_FUNC_DEEP_SLEEP_REQUEST cpu_to_le16(0x0083) 54#define CMD_TST_GET_MEM_DUMP cpu_to_le16(0x0096) 55 56#define OP_OPR_ALIVE cpu_to_le16(0x0010) 57#define OP_OPR_CMD_ACK cpu_to_le16(0x001F) 58#define OP_OPR_CMD_NACK cpu_to_le16(0x0020) 59#define OP_TST_MEM_DUMP cpu_to_le16(0x0043) 60 61#define CMD_FLAG_PADDING_256 0x80 62 63#define FW_HCMD_BLOCK_SIZE 256 64 65struct msg_hdr { 66 u8 type; 67 u8 category; 68 __le16 opcode; 69 u8 seqnum; 70 u8 flags; 71 __le16 length; 72} __attribute__((__packed__)); 73 74struct log_hdr { 75 __le32 timestamp; 76 u8 severity; 77 u8 logsource; 78 __le16 reserved; 79} __attribute__((__packed__)); 80 81struct mdump_hdr { 82 u8 dmpid; 83 u8 frag; 84 __le16 size; 85 __le32 addr; 86} __attribute__((__packed__)); 87 88struct top_msg { 89 struct msg_hdr hdr; 90 union { 91 /* D2H messages */ 92 struct { 93 struct log_hdr log_hdr; 94 u8 data[1]; 95 } __attribute__((__packed__)) log; 96 97 struct { 98 struct log_hdr log_hdr; 99 struct mdump_hdr md_hdr; 100 u8 data[1]; 101 } __attribute__((__packed__)) mdump; 102 103 /* H2D messages */ 104 struct { 105 u8 logsource; 106 u8 sevmask; 107 } __attribute__((__packed__)) logdefs[FW_LOG_SRC_MAX]; 108 struct mdump_hdr mdump_req; 109 } u; 110} __attribute__((__packed__)); 111 112 113#endif /* __FWMSG_H__ */ 114