qcacmn: Add support for Waikiki HAL Tx
Added HAL Tx specific function to support Waikiki Tx. Change-Id: I7ded253739c91ab19490425b3ddd333a86f237c8
This commit is contained in:

committed by
Madan Koyyalamudi

父節點
7ccb73b31f
當前提交
d5006a849b
@@ -1228,6 +1228,18 @@ static void hal_rx_dump_pkt_tlvs_9224(hal_soc_handle_t hal_soc_hdl,
|
||||
}
|
||||
#endif
|
||||
|
||||
#define HAL_NUM_TCL_BANKS_9224 48
|
||||
|
||||
/**
|
||||
* hal_tx_get_num_tcl_banks_9224() - Get number of banks in target
|
||||
*
|
||||
* Returns: number of bank
|
||||
*/
|
||||
static uint8_t hal_tx_get_num_tcl_banks_9224(void)
|
||||
{
|
||||
return HAL_NUM_TCL_BANKS_9224;
|
||||
}
|
||||
|
||||
static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
|
||||
{
|
||||
/* init and setup */
|
||||
@@ -1239,21 +1251,8 @@ static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
|
||||
/* tx */
|
||||
hal_soc->ops->hal_tx_set_dscp_tid_map = hal_tx_set_dscp_tid_map_9224;
|
||||
hal_soc->ops->hal_tx_update_dscp_tid = hal_tx_update_dscp_tid_9224;
|
||||
hal_soc->ops->hal_tx_desc_set_lmac_id = hal_tx_desc_set_lmac_id_9224;
|
||||
hal_soc->ops->hal_tx_desc_set_buf_addr =
|
||||
hal_tx_desc_set_buf_addr_generic_be;
|
||||
hal_soc->ops->hal_tx_desc_set_search_type =
|
||||
hal_tx_desc_set_search_type_generic_be;
|
||||
hal_soc->ops->hal_tx_desc_set_search_index =
|
||||
hal_tx_desc_set_search_index_generic_be;
|
||||
hal_soc->ops->hal_tx_desc_set_cache_set_num =
|
||||
hal_tx_desc_set_cache_set_num_generic_be;
|
||||
hal_soc->ops->hal_tx_comp_get_status =
|
||||
hal_tx_comp_get_status_generic_be;
|
||||
hal_soc->ops->hal_tx_comp_get_release_reason =
|
||||
hal_tx_comp_get_release_reason_generic_be;
|
||||
hal_soc->ops->hal_get_wbm_internal_error =
|
||||
hal_get_wbm_internal_error_generic_be;
|
||||
hal_soc->ops->hal_tx_init_cmd_credit_ring =
|
||||
hal_tx_init_cmd_credit_ring_9224;
|
||||
|
||||
@@ -1394,6 +1393,7 @@ static void hal_hw_txrx_ops_attach_qcn9224(struct hal_soc *hal_soc)
|
||||
hal_soc->ops->hal_rx_get_tlv_size = hal_rx_get_tlv_size_generic_be;
|
||||
hal_soc->ops->hal_rx_msdu_is_wlan_mcast =
|
||||
hal_rx_msdu_is_wlan_mcast_generic_be;
|
||||
hal_soc->ops->hal_tx_get_num_tcl_banks = hal_tx_get_num_tcl_banks_9224;
|
||||
hal_soc->ops->hal_rx_tlv_decap_format_get =
|
||||
hal_rx_tlv_decap_format_get_be;
|
||||
#ifdef RECEIVE_OFFLOAD
|
||||
|
142
hal/wifi3.0/qcn9224/hal_9224_tx.h
Normal file
142
hal/wifi3.0/qcn9224/hal_9224_tx.h
Normal file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
* above copyright notice and this permission notice appear in all
|
||||
* copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "tcl_data_cmd.h"
|
||||
#include "phyrx_rssi_legacy.h"
|
||||
#include "hal_internal.h"
|
||||
#include "qdf_trace.h"
|
||||
#include "hal_rx.h"
|
||||
#include "hal_tx.h"
|
||||
#include "hal_api_mon.h"
|
||||
|
||||
#define DSCP_TID_TABLE_SIZE 24
|
||||
#define NUM_WORDS_PER_DSCP_TID_TABLE (DSCP_TID_TABLE_SIZE / 4)
|
||||
|
||||
/**
|
||||
* hal_tx_set_dscp_tid_map_9224() - Configure default DSCP to TID map table
|
||||
* @soc: HAL SoC context
|
||||
* @map: DSCP-TID mapping table
|
||||
* @id: mapping table ID - 0-31
|
||||
*
|
||||
* DSCP are mapped to 8 TID values using TID values programmed
|
||||
* in any of the 32 DSCP_TID_MAPS (id = 0-31).
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void hal_tx_set_dscp_tid_map_9224(struct hal_soc *hal_soc, uint8_t *map,
|
||||
uint8_t id)
|
||||
{
|
||||
int i;
|
||||
uint32_t addr, cmn_reg_addr;
|
||||
uint32_t value = 0, regval;
|
||||
uint8_t val[DSCP_TID_TABLE_SIZE], cnt = 0;
|
||||
|
||||
struct hal_soc *soc = (struct hal_soc *)hal_soc;
|
||||
|
||||
if (id >= HAL_MAX_HW_DSCP_TID_MAPS_11AX)
|
||||
return;
|
||||
|
||||
cmn_reg_addr = HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_ADDR(
|
||||
MAC_TCL_REG_REG_BASE);
|
||||
|
||||
addr = HWIO_TCL_R0_DSCP_TID_MAP_n_ADDR(
|
||||
MAC_TCL_REG_REG_BASE,
|
||||
id * NUM_WORDS_PER_DSCP_TID_TABLE);
|
||||
|
||||
/* Enable read/write access */
|
||||
regval = HAL_REG_READ(soc, cmn_reg_addr);
|
||||
regval |=
|
||||
(1 <<
|
||||
HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_SHFT);
|
||||
|
||||
HAL_REG_WRITE(soc, cmn_reg_addr, regval);
|
||||
|
||||
/* Write 8 (24 bits) DSCP-TID mappings in each interation */
|
||||
for (i = 0; i < 64; i += 8) {
|
||||
value = (map[i] |
|
||||
(map[i + 1] << 0x3) |
|
||||
(map[i + 2] << 0x6) |
|
||||
(map[i + 3] << 0x9) |
|
||||
(map[i + 4] << 0xc) |
|
||||
(map[i + 5] << 0xf) |
|
||||
(map[i + 6] << 0x12) |
|
||||
(map[i + 7] << 0x15));
|
||||
|
||||
qdf_mem_copy(&val[cnt], (void *)&value, 3);
|
||||
cnt += 3;
|
||||
}
|
||||
|
||||
for (i = 0; i < DSCP_TID_TABLE_SIZE; i += 4) {
|
||||
regval = *(uint32_t *)(val + i);
|
||||
HAL_REG_WRITE(soc, addr,
|
||||
(regval & HWIO_TCL_R0_DSCP_TID_MAP_n_RMSK));
|
||||
addr += 4;
|
||||
}
|
||||
|
||||
/* Diasble read/write access */
|
||||
regval = HAL_REG_READ(soc, cmn_reg_addr);
|
||||
regval &=
|
||||
~(HWIO_TCL_R0_CONS_RING_CMN_CTRL_REG_DSCP_TID_MAP_PROGRAM_EN_BMSK);
|
||||
|
||||
HAL_REG_WRITE(soc, cmn_reg_addr, regval);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_tx_update_dscp_tid_9224() - Update the dscp tid map table as updated
|
||||
* by the user
|
||||
* @soc: HAL SoC context
|
||||
* @map: DSCP-TID mapping table
|
||||
* @id : MAP ID
|
||||
* @dscp: DSCP_TID map index
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static void hal_tx_update_dscp_tid_9224(struct hal_soc *hal_soc, uint8_t tid,
|
||||
uint8_t id, uint8_t dscp)
|
||||
{
|
||||
int index;
|
||||
uint32_t addr;
|
||||
uint32_t value;
|
||||
uint32_t regval;
|
||||
struct hal_soc *soc = (struct hal_soc *)hal_soc;
|
||||
|
||||
addr = HWIO_TCL_R0_DSCP_TID_MAP_n_ADDR(
|
||||
MAC_TCL_REG_REG_BASE, id);
|
||||
|
||||
index = dscp % HAL_TX_NUM_DSCP_PER_REGISTER;
|
||||
addr += 4 * (dscp / HAL_TX_NUM_DSCP_PER_REGISTER);
|
||||
value = tid << (HAL_TX_BITS_PER_TID * index);
|
||||
|
||||
regval = HAL_REG_READ(soc, addr);
|
||||
regval &= ~(HAL_TX_TID_BITS_MASK << (HAL_TX_BITS_PER_TID * index));
|
||||
regval |= value;
|
||||
|
||||
HAL_REG_WRITE(soc, addr, (regval & HWIO_TCL_R0_DSCP_TID_MAP_n_RMSK));
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_tx_init_cmd_credit_ring_9224() - Initialize command/credit SRNG
|
||||
* @hal_soc_hdl: Handle to HAL SoC structure
|
||||
* @hal_srng: Handle to HAL SRNG structure
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void
|
||||
hal_tx_init_cmd_credit_ring_9224(hal_soc_handle_t hal_soc_hdl,
|
||||
hal_ring_handle_t hal_ring_hdl)
|
||||
{
|
||||
}
|
Reference in New Issue
Block a user