iosm_ipc_trace.h (1721B)
1/* SPDX-License-Identifier: GPL-2.0-only 2 * 3 * Copyright (C) 2020-2021 Intel Corporation. 4 */ 5 6#ifndef IOSM_IPC_TRACE_H 7#define IOSM_IPC_TRACE_H 8 9#include <linux/debugfs.h> 10#include <linux/relay.h> 11 12#include "iosm_ipc_chnl_cfg.h" 13#include "iosm_ipc_imem_ops.h" 14 15/** 16 * enum trace_ctrl_mode - State of trace channel 17 * @TRACE_DISABLE: mode for disable trace 18 * @TRACE_ENABLE: mode for enable trace 19 */ 20enum trace_ctrl_mode { 21 TRACE_DISABLE = 0, 22 TRACE_ENABLE, 23}; 24 25/** 26 * struct iosm_trace - Struct for trace interface 27 * @ipc_rchan: Pointer to relay channel 28 * @ctrl_file: Pointer to trace control file 29 * @ipc_imem: Imem instance 30 * @dev: Pointer to device struct 31 * @channel: Channel instance 32 * @chl_id: Channel Indentifier 33 * @trc_mutex: Mutex used for read and write mode 34 * @mode: Mode for enable and disable trace 35 */ 36 37struct iosm_trace { 38 struct rchan *ipc_rchan; 39 struct dentry *ctrl_file; 40 struct iosm_imem *ipc_imem; 41 struct device *dev; 42 struct ipc_mem_channel *channel; 43 enum ipc_channel_id chl_id; 44 struct mutex trc_mutex; /* Mutex used for read and write mode */ 45 enum trace_ctrl_mode mode; 46}; 47 48#ifdef CONFIG_WWAN_DEBUGFS 49 50static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id) 51{ 52 return ipc_mem->trace && ipc_mem->trace->chl_id == chl_id; 53} 54 55struct iosm_trace *ipc_trace_init(struct iosm_imem *ipc_imem); 56void ipc_trace_deinit(struct iosm_trace *ipc_trace); 57void ipc_trace_port_rx(struct iosm_imem *ipc_imem, struct sk_buff *skb); 58 59#else 60 61static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id) 62{ 63 return false; 64} 65 66static inline void ipc_trace_port_rx(struct iosm_imem *ipc_imem, 67 struct sk_buff *skb) 68{ 69 dev_kfree_skb(skb); 70} 71 72#endif 73 74#endif