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/ipc_host.h | 336 -------------------------------------------------------- 1 files changed, 0 insertions(+), 336 deletions(-) diff --git a/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.h b/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.h old mode 100644 new mode 100755 index c153862..583b668 --- a/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.h +++ b/longan/kernel/linux-4.9/drivers/net/wireless/aic8800/aic8800_fdrv/ipc_host.h @@ -23,24 +23,6 @@ #include "ipc_compat.h" #endif -/* - * ENUMERATION - ****************************************************************************** - */ - -enum ipc_host_desc_status { - /// Descriptor is IDLE - IPC_HOST_DESC_IDLE = 0, - /// Data can be forwarded - IPC_HOST_DESC_FORWARD, - /// Data has to be kept in UMAC memory - IPC_HOST_DESC_KEEP, - /// Delete stored packet - IPC_HOST_DESC_DELETE, - /// Update Frame Length status - IPC_HOST_DESC_LEN_UPDATE, -}; - /** ****************************************************************************** * @brief This structure is used to initialize the MAC SW @@ -182,323 +164,5 @@ extern const int nx_txdesc_cnt[]; extern const int nx_txuser_cnt[]; - -/** - ****************************************************************************** - * @brief Returns the full/not full status of the queue the index of which is - * passed as parameter. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] queue_idx Index of the queue to be checked - * - * @return true if the queue is full, false otherwise - * - ****************************************************************************** - */ -static __INLINE bool ipc_host_queue_full(struct ipc_host_env_tag *env, - const int queue_idx) -{ - return (env->txdesc_free_idx[queue_idx] == - (env->txdesc_used_idx[queue_idx] + nx_txdesc_cnt[queue_idx])); -} - -/** - ****************************************************************************** - * @brief Initialize the IPC running on the Application CPU. - * - * This function: - * - initializes the IPC software environments - * - enables the interrupts in the IPC block - * - * @param[in] env Pointer to the IPC host environment - * - * @warning Since this function resets the IPC Shared memory, it must be called - * before the LMAC FW is launched because LMAC sets some init values in IPC - * Shared memory at boot. - * - ****************************************************************************** - */ -void ipc_host_init(struct ipc_host_env_tag *env, - struct ipc_host_cb_tag *cb, - struct ipc_shared_env_tag *shared_env_ptr, - void *pthis); - -/** @addtogroup IPC_TX - * @{ - */ - -/** - ****************************************************************************** - * @brief Retrieve a new free Tx descriptor (host side). - * - * This function returns a pointer to the next Tx descriptor available from the - * queue queue_idx to the host driver. The driver will have to fill it with the - * appropriate endianness and to send it to the - * emb side with ipc_host_txdesc_push(). - * - * This function should only be called once until ipc_host_txdesc_push() is called. - * - * This function will return NULL if the queue is full. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] queue_idx Queue index. The index can be inferred from the - * user priority of the incoming packet. - * @param[in] user_pos User position. If MU-MIMO is not used, this value - * shall be 0. - * @return Pointer to the next Tx descriptor free. This can - * point to the host memory or to shared memory, - * depending on IPC implementation. - * - ****************************************************************************** - */ -volatile struct txdesc_host *ipc_host_txdesc_get(struct ipc_host_env_tag *env, - const int queue_idx, - const int user_pos); - - -/** - ****************************************************************************** - * @brief Push a filled Tx descriptor (host side). - * - * This function sets the next Tx descriptor available by the host side: - * - as used for the host side - * - as available for the emb side. - * The Tx descriptor must be correctly filled before calling this function. - * - * This function may trigger an IRQ to the emb CPU depending on the interrupt - * mitigation policy and on the push count. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] queue_idx Queue index. Same value than ipc_host_txdesc_get() - * @param[in] user_pos User position. If MU-MIMO is not used, this value - * shall be 0. - * @param[in] host_id Parameter indicated by the IPC at TX confirmation, - * that allows the driver finding the buffer - * - ****************************************************************************** - */ -void ipc_host_txdesc_push(struct ipc_host_env_tag *env, const int queue_idx, - const int user_pos, void *host_id); - - -/** - ****************************************************************************** - * @brief Check if there are TX frames pending in the TX queues. - * - * @param[in] env Pointer to the IPC host environment - * - * @return true if there are frames pending, false otherwise. - * - ****************************************************************************** - */ -bool ipc_host_tx_frames_pending(struct ipc_host_env_tag *env); - -/** - ****************************************************************************** - * @brief Get and flush a packet from the IPC queue passed as parameter. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] queue_idx Index of the queue to flush - * @param[in] user_pos User position to flush - * - * @return The flushed hostid if there is one, 0 otherwise. - * - ****************************************************************************** - */ -void *ipc_host_tx_flush(struct ipc_host_env_tag *env, const int queue_idx, - const int user_pos); - -/// @} IPC_TX - -/** @addtogroup IPC_RX - * @{ - */ -void ipc_host_patt_addr_push(struct ipc_host_env_tag *env, uint32_t addr); - -/** - ****************************************************************************** - * @brief Push a pre-allocated buffer descriptor for Rx packet (host side) - * - * This function should be called by the host IRQ handler to supply the - * embedded side with new empty buffer. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Packet ID used by the host (skbuff pointer on Linux) - * @param[in] hostbuf Pointer to the start of the buffer payload in the - * host memory (this may be inferred from the skbuff?) - * The length of this buffer should be predefined - * between host and emb statically (constant needed?). - * - ****************************************************************************** - */ -int ipc_host_rxbuf_push(struct ipc_host_env_tag *env, -#ifdef CONFIG_RWNX_FULLMAC - uint32_t hostid, -#endif - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push a pre-allocated Descriptor - * - * This function should be called by the host IRQ handler to supply the - * embedded side with new empty buffer. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Address of packet for host - * @param[in] hostbuf Pointer to the start of the buffer payload in the - * host memory. The length of this buffer should be - * predefined between host and emb statically. - * - ****************************************************************************** - */ -int ipc_host_rxdesc_push(struct ipc_host_env_tag *env, void *hostid, - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push a pre-allocated radar event buffer descriptor - * - * This function is called at Init time to initialize all radar event buffers. - * Then each time embedded send a radar event, this function is used to push - * back the same buffer once it has been handled. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Address of packet for host - * @param[in] hostbuf Pointer to the start of the buffer payload in the - * host memory. The length of this buffer should be - * predefined between host and emb statically. - * - ****************************************************************************** - */ -int ipc_host_radarbuf_push(struct ipc_host_env_tag *env, void *hostid, - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push a pre-allocated unsupported rx vector buffer descriptor - * - * This function is called at Init time to initialize all unsupported rx vector - * buffers. Then each time the embedded sends a unsupported rx vector, this - * function is used to push a new unsupported rx vector buffer. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Address of packet for host - * @param[in] hostbuf Pointer to the start of the buffer payload in the - * host memory. The length of this buffer should be - * predefined between host and emb statically. - * - ****************************************************************************** - */ -int ipc_host_unsup_rx_vec_buf_push(struct ipc_host_env_tag *env, void *hostid, - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push a pre-allocated buffer descriptor for IPC MSGs (host side) - * - * This function is called at Init time to initialize all Emb2App messages - * buffers. Then each time embedded send a IPC message, this function is used - * to push back the same buffer once it has been handled. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Address of buffer for host - * @param[in] hostbuf Address of buffer for embedded - * The length of this buffer should be predefined - * between host and emb statically. - * - ****************************************************************************** - */ -int ipc_host_msgbuf_push(struct ipc_host_env_tag *env, void *hostid, - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push a pre-allocated buffer descriptor for Debug messages (host side) - * - * This function is called at Init time to initialize all debug messages. - * Then each time embedded send a debug message, this function is used to push - * back the same buffer once it has been handled. - * - * @param[in] env Pointer to the IPC host environment - * @param[in] hostid Address of buffer for host - * @param[in] hostbuf Address of buffer for embedded - * The length of this buffer should be predefined - * between host and emb statically. - * - ****************************************************************************** - */ -int ipc_host_dbgbuf_push(struct ipc_host_env_tag *env, void *hostid, - uint32_t hostbuf); - -/** - ****************************************************************************** - * @brief Push the pre-allocated logic analyzer and debug information buffer - * - * @param[in] env Pointer to the IPC host environment - * @param[in] infobuf Address of buffer for embedded - * The length of this buffer should be predefined - * between host and emb statically. - * - ****************************************************************************** - */ -void ipc_host_dbginfobuf_push(struct ipc_host_env_tag *env, uint32_t infobuf); - -/// @} IPC_RX - - - -/** @addtogroup IPC_MISC - * @{ - */ - -/** - ****************************************************************************** - * @brief Handle all IPC interrupts on the host side. - * - * The following interrupts should be handled: - * Tx confirmation, Rx buffer requests, Rx packet ready and kernel messages - * - * @param[in] env Pointer to the IPC host environment - * - ****************************************************************************** - */ -void ipc_host_irq(struct ipc_host_env_tag *env, uint32_t status); - -/** - ****************************************************************************** - * @brief Send a message to the embedded side - * - * @param[in] env Pointer to the IPC host environment - * @param[in] msg_buf Pointer to the message buffer - * @param[in] msg_len Length of the message to be transmitted - * - * @return Non-null value on failure - * - ****************************************************************************** - */ -int ipc_host_msg_push(struct ipc_host_env_tag *env, void *msg_buf, uint16_t len); - -/** - ****************************************************************************** - * @brief Enable IPC interrupts - * - * @param[in] env Global ipc_host environment pointer - * @param[in] value Bitfield of the interrupts to enable - * - * @warning After calling this function, IPC interrupts can be triggered at any - * time. Potentially, an interrupt could happen even before returning from the - * function if there is a request pending from the embedded side. - * - ****************************************************************************** - */ -void ipc_host_enable_irq(struct ipc_host_env_tag *env, uint32_t value); -void ipc_host_disable_irq(struct ipc_host_env_tag *env, uint32_t value); - -uint32_t ipc_host_get_status(struct ipc_host_env_tag *env); -uint32_t ipc_host_get_rawstatus(struct ipc_host_env_tag *env); - -/// @} IPC_MISC - #endif // _IPC_HOST_H_ -- Gitblit v1.6.2