1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * This file is provided under a dual BSD/GPLv2 license. When using or 4*4882a593Smuzhiyun * redistributing this file, you may do so under either license. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * GPL LICENSE SUMMARY 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Copyright (C) 2018 - 2019 Intel Corporation 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify 11*4882a593Smuzhiyun * it under the terms of version 2 of the GNU General Public License as 12*4882a593Smuzhiyun * published by the Free Software Foundation. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but 15*4882a593Smuzhiyun * WITHOUT ANY WARRANTY; without even the implied warranty of 16*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17*4882a593Smuzhiyun * General Public License for more details. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * You should have received a copy of the GNU General Public License 20*4882a593Smuzhiyun * along with this program. 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun * The full GNU General Public License is included in this distribution 23*4882a593Smuzhiyun * in the file called COPYING. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * Contact Information: 26*4882a593Smuzhiyun * Intel Linux Wireless <linuxwifi@intel.com> 27*4882a593Smuzhiyun * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 28*4882a593Smuzhiyun * 29*4882a593Smuzhiyun * BSD LICENSE 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * Copyright (C) 2018 - 2019 Intel Corporation 32*4882a593Smuzhiyun * All rights reserved. 33*4882a593Smuzhiyun * 34*4882a593Smuzhiyun * Redistribution and use in source and binary forms, with or without 35*4882a593Smuzhiyun * modification, are permitted provided that the following conditions 36*4882a593Smuzhiyun * are met: 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * * Redistributions of source code must retain the above copyright 39*4882a593Smuzhiyun * notice, this list of conditions and the following disclaimer. 40*4882a593Smuzhiyun * * Redistributions in binary form must reproduce the above copyright 41*4882a593Smuzhiyun * notice, this list of conditions and the following disclaimer in 42*4882a593Smuzhiyun * the documentation and/or other materials provided with the 43*4882a593Smuzhiyun * distribution. 44*4882a593Smuzhiyun * * Neither the name Intel Corporation nor the names of its 45*4882a593Smuzhiyun * contributors may be used to endorse or promote products derived 46*4882a593Smuzhiyun * from this software without specific prior written permission. 47*4882a593Smuzhiyun * 48*4882a593Smuzhiyun * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 49*4882a593Smuzhiyun * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 50*4882a593Smuzhiyun * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 51*4882a593Smuzhiyun * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 52*4882a593Smuzhiyun * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 53*4882a593Smuzhiyun * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 54*4882a593Smuzhiyun * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 55*4882a593Smuzhiyun * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 56*4882a593Smuzhiyun * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 57*4882a593Smuzhiyun * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 58*4882a593Smuzhiyun * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 59*4882a593Smuzhiyun * 60*4882a593Smuzhiyun *****************************************************************************/ 61*4882a593Smuzhiyun #ifndef __iwl_dbg_tlv_h__ 62*4882a593Smuzhiyun #define __iwl_dbg_tlv_h__ 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #include <linux/device.h> 65*4882a593Smuzhiyun #include <linux/types.h> 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun /** 68*4882a593Smuzhiyun * struct iwl_dbg_tlv_node - debug TLV node 69*4882a593Smuzhiyun * @list: list of &struct iwl_dbg_tlv_node 70*4882a593Smuzhiyun * @tlv: debug TLV 71*4882a593Smuzhiyun */ 72*4882a593Smuzhiyun struct iwl_dbg_tlv_node { 73*4882a593Smuzhiyun struct list_head list; 74*4882a593Smuzhiyun struct iwl_ucode_tlv tlv; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /** 78*4882a593Smuzhiyun * union iwl_dbg_tlv_tp_data - data that is given in a time point 79*4882a593Smuzhiyun * @fw_pkt: a packet received from the FW 80*4882a593Smuzhiyun */ 81*4882a593Smuzhiyun union iwl_dbg_tlv_tp_data { 82*4882a593Smuzhiyun struct iwl_rx_packet *fw_pkt; 83*4882a593Smuzhiyun }; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /** 86*4882a593Smuzhiyun * struct iwl_dbg_tlv_time_point_data 87*4882a593Smuzhiyun * @trig_list: list of triggers 88*4882a593Smuzhiyun * @active_trig_list: list of active triggers 89*4882a593Smuzhiyun * @hcmd_list: list of host commands 90*4882a593Smuzhiyun */ 91*4882a593Smuzhiyun struct iwl_dbg_tlv_time_point_data { 92*4882a593Smuzhiyun struct list_head trig_list; 93*4882a593Smuzhiyun struct list_head active_trig_list; 94*4882a593Smuzhiyun struct list_head hcmd_list; 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun struct iwl_trans; 98*4882a593Smuzhiyun struct iwl_fw_runtime; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun void iwl_dbg_tlv_load_bin(struct device *dev, struct iwl_trans *trans); 101*4882a593Smuzhiyun void iwl_dbg_tlv_free(struct iwl_trans *trans); 102*4882a593Smuzhiyun void iwl_dbg_tlv_alloc(struct iwl_trans *trans, struct iwl_ucode_tlv *tlv, 103*4882a593Smuzhiyun bool ext); 104*4882a593Smuzhiyun void iwl_dbg_tlv_init(struct iwl_trans *trans); 105*4882a593Smuzhiyun void iwl_dbg_tlv_time_point(struct iwl_fw_runtime *fwrt, 106*4882a593Smuzhiyun enum iwl_fw_ini_time_point tp_id, 107*4882a593Smuzhiyun union iwl_dbg_tlv_tp_data *tp_data); 108*4882a593Smuzhiyun void iwl_dbg_tlv_del_timers(struct iwl_trans *trans); 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #endif /* __iwl_dbg_tlv_h__*/ 111