From d4a1bd480003f3e1a0590bc46fbcb24f05652ca7 Mon Sep 17 00:00:00 2001 From: tzh <tanzhtanzh@gmail.com> Date: Thu, 15 Aug 2024 06:56:47 +0000 Subject: [PATCH] feat(wfit/bt): update aic8800 wifi/bt drive and hal --- longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h | 144 +++-------------------------------------------- 1 files changed, 11 insertions(+), 133 deletions(-) diff --git a/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h b/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h old mode 100644 new mode 100755 index 0338460..7956790 --- a/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h +++ b/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/rwnx_fw_trace.h @@ -15,143 +15,21 @@ #include <linux/wait.h> #include <linux/workqueue.h> -/** - * struct rwnx_fw_trace_desc - Trace buffer info as provided by fw in ipc - * - * @pattern: Synchro pattern - * @start: Index of first entry in trace buffer - * @end: Index of last entry in trace buffer - * @size: Size, in 16bits words, od the trace buffer - * @offset: Offset, in bytest, to the start of the buffer from the address of - * this field. - * @nb_compo: Number of filterable component (16LSB) synchro pattern (16 MSB) - * @offset_compo: Offset, in bytest, to the start of the component activation - * table from the address of this field. - */ -struct rwnx_fw_trace_ipc_desc { - volatile uint16_t pattern; - volatile uint32_t start; - volatile uint32_t end; - volatile uint32_t size; - volatile uint32_t offset; - volatile uint32_t nb_compo; - volatile uint32_t offset_compo; -}; +#define FW_LOG_SIZE (10240) -/** - * struct rwnx_fw_trace_buf - Info for trace buffer in shared memory - * - * @lock: Address of the synchro word - * @data: Address of the trace buffer - * @size: Size, in 16bits words, of the trace buffer - * @start: Address on the current index (in 16 bits words) of the first trace - * entry. - * @end: Address on the current index (in 16 bits words) of the last trace - * entry. If *end > size, it means that the trace buffer contains no traces. - * @reset_idx: Increased each time the trace buffer is reset - * (by calling _rwnx_fw_trace_reset()) - * @nb_compo: Size of the compo_table - * @compo_table: Table containing component filter status. - */ -struct rwnx_fw_trace_buf { - volatile uint16_t *lock; - uint16_t *data; +struct rwnx_fw_log_buf { + uint8_t *data; + uint8_t *start; + uint8_t *end; + uint8_t *dataend; uint32_t size; - volatile uint32_t *start; - volatile uint32_t *end; - int reset_idx; - unsigned int nb_compo; - uint32_t *compo_table; }; -/** - * struct rwnx_fw_trace_local_buf - Info for a local trace buffer - * - * @data: Address of the local buffer - * @data_end: Address after the end of the local buffer - * @size: Size, in 16bits words, oth the local buffer - * @read: Pointer to the next trace entry to read - * @write: Pointer to the next entry to write - * @nb_entries: Number of trace entries ready to be read - * @free_space: Free space, in 16bits words, in the buffer. - * @last_read: Address of the last entry read in the shared buffer - * @last_read_value: First word of the last trace entry read. - * @reset_idx: Reset index. If it doesn't match share buffer index then it - * means that share buffer has been resetted since last read. - */ -struct rwnx_fw_trace_local_buf { - uint16_t *data; - uint16_t *data_end; - uint32_t size; - uint16_t *read; - uint16_t *write; - uint16_t nb_entries; - uint32_t free_space; - uint16_t *last_read; - uint16_t last_read_value; - int reset_idx; - uint16_t *show_reset; +struct rwnx_fw_log { + struct rwnx_fw_log_buf buf; + spinlock_t lock; }; - -/** - * struct rwnx_fw_trace - info to handle several reader of the shared buffer - * - * @buf: shared trace buffer. - * @mutex: mutex, used to prevent several reader updating shared buffer at the - * same time. - * @queue: queue, used to delay reader. - * @work: work used to periodically check for new traces in shared buffer. - * @last_read_index: Last read index from shared buffer - * @closing: Indicate whether is driver is being removed, meaning that reader - * should no longer wait no new traces - */ -struct rwnx_fw_trace { - struct rwnx_fw_trace_buf buf; - struct mutex mutex; - wait_queue_head_t queue; - struct delayed_work work; - int last_read_index; - bool closing; -}; - -int rwnx_fw_trace_init(struct rwnx_fw_trace *trace, - struct rwnx_fw_trace_ipc_desc *ipc); -void rwnx_fw_trace_deinit(struct rwnx_fw_trace *trace); - -int rwnx_fw_trace_buf_init(struct rwnx_fw_trace_buf *shared_buf, - struct rwnx_fw_trace_ipc_desc *ipc); - -int _rwnx_fw_trace_reset(struct rwnx_fw_trace *trace, bool lock); -void _rwnx_fw_trace_dump(struct rwnx_fw_trace_buf *trace); - -int rwnx_fw_trace_alloc_local(struct rwnx_fw_trace_local_buf *local, - int size); -void rwnx_fw_trace_free_local(struct rwnx_fw_trace_local_buf *local); - - -size_t rwnx_fw_trace_read(struct rwnx_fw_trace *trace, - struct rwnx_fw_trace_local_buf *local_buf, - bool dont_wait, char __user *user_buf, size_t size); - - -size_t rwnx_fw_trace_level_read(struct rwnx_fw_trace *trace, - char __user *user_buf, size_t len, loff_t *ppos); -size_t rwnx_fw_trace_level_write(struct rwnx_fw_trace *trace, - const char __user *user_buf, size_t len); - - -int rwnx_fw_trace_config_filters(struct rwnx_fw_trace_buf *trace_buf, - struct rwnx_fw_trace_ipc_desc *ipc, char *ftl); - -/** - * rwnx_fw_trace_empty() - Check if shared buffer is empty - * - * @shared_buf: Pointer to shared buffer - */ -static inline bool rwnx_fw_trace_empty(struct rwnx_fw_trace_buf *shared_buf) -{ - return (*shared_buf->end >= shared_buf->size); -} - +int rwnx_fw_log_init(struct rwnx_fw_log *fw_log); +void rwnx_fw_log_deinit(struct rwnx_fw_log *fw_log); #endif /* _RWNX_FW_TRACE_H_ */ -- Gitblit v1.6.2