qcacmn: Hal related changes for QCA5332
1. Changes to move hal_tx_config_rbm_mapping_be function from common to device specific as it has ppe related snippets. 2. Changes to remove all PPE related codes in QCA5332 hal code. 3. Changes to correct macros according to fw_hrs. 4. Changes to move functions with device specific Macros to header files so that it gets compiled with respective device's FW headers and gets correct Macros Change-Id: I479b406f318aa42d2b1032349aaf42d95b8c18e5 CRs-Fixed: 3235966
This commit is contained in:

committed by
Madan Koyyalamudi

parent
7e799fcbae
commit
16630d2422
@@ -296,155 +296,6 @@ static uint8_t hal_get_wbm_internal_error_generic_be(void *hal_desc)
|
||||
HAL_WBM_INTERNAL_ERROR_LSB;
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_setup_link_idle_list_generic_be - Setup scattered idle list using the
|
||||
* buffer list provided
|
||||
*
|
||||
* @hal_soc: Opaque HAL SOC handle
|
||||
* @scatter_bufs_base_paddr: Array of physical base addresses
|
||||
* @scatter_bufs_base_vaddr: Array of virtual base addresses
|
||||
* @num_scatter_bufs: Number of scatter buffers in the above lists
|
||||
* @scatter_buf_size: Size of each scatter buffer
|
||||
* @last_buf_end_offset: Offset to the last entry
|
||||
* @num_entries: Total entries of all scatter bufs
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
hal_setup_link_idle_list_generic_be(struct hal_soc *soc,
|
||||
qdf_dma_addr_t scatter_bufs_base_paddr[],
|
||||
void *scatter_bufs_base_vaddr[],
|
||||
uint32_t num_scatter_bufs,
|
||||
uint32_t scatter_buf_size,
|
||||
uint32_t last_buf_end_offset,
|
||||
uint32_t num_entries)
|
||||
{
|
||||
int i;
|
||||
uint32_t *prev_buf_link_ptr = NULL;
|
||||
uint32_t reg_scatter_buf_size, reg_tot_scatter_buf_size;
|
||||
uint32_t val;
|
||||
|
||||
/* Link the scatter buffers */
|
||||
for (i = 0; i < num_scatter_bufs; i++) {
|
||||
if (i > 0) {
|
||||
prev_buf_link_ptr[0] =
|
||||
scatter_bufs_base_paddr[i] & 0xffffffff;
|
||||
prev_buf_link_ptr[1] = HAL_SM(
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB,
|
||||
BASE_ADDRESS_39_32,
|
||||
((uint64_t)(scatter_bufs_base_paddr[i])
|
||||
>> 32)) | HAL_SM(
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB,
|
||||
ADDRESS_MATCH_TAG,
|
||||
ADDRESS_MATCH_TAG_VAL);
|
||||
}
|
||||
prev_buf_link_ptr = (uint32_t *)(scatter_bufs_base_vaddr[i] +
|
||||
scatter_buf_size - WBM_IDLE_SCATTER_BUF_NEXT_PTR_SIZE);
|
||||
}
|
||||
|
||||
/* TBD: Register programming partly based on MLD & the rest based on
|
||||
* inputs from HW team. Not complete yet.
|
||||
*/
|
||||
|
||||
reg_scatter_buf_size = (scatter_buf_size -
|
||||
WBM_IDLE_SCATTER_BUF_NEXT_PTR_SIZE) / 64;
|
||||
reg_tot_scatter_buf_size = ((scatter_buf_size -
|
||||
WBM_IDLE_SCATTER_BUF_NEXT_PTR_SIZE) * num_scatter_bufs) / 64;
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_IDLE_LIST_CONTROL_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
HAL_SM(HWIO_WBM_R0_IDLE_LIST_CONTROL, SCATTER_BUFFER_SIZE,
|
||||
reg_scatter_buf_size) |
|
||||
HAL_SM(HWIO_WBM_R0_IDLE_LIST_CONTROL, LINK_DESC_IDLE_LIST_MODE,
|
||||
0x1));
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_IDLE_LIST_SIZE_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
HAL_SM(HWIO_WBM_R0_IDLE_LIST_SIZE,
|
||||
SCATTER_RING_SIZE_OF_IDLE_LINK_DESC_LIST,
|
||||
reg_tot_scatter_buf_size));
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_LSB_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
scatter_bufs_base_paddr[0] & 0xffffffff);
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
((uint64_t)(scatter_bufs_base_paddr[0]) >> 32) &
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_BASE_ADDRESS_39_32_BMSK);
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB,
|
||||
BASE_ADDRESS_39_32, ((uint64_t)(scatter_bufs_base_paddr[0])
|
||||
>> 32)) |
|
||||
HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB,
|
||||
ADDRESS_MATCH_TAG, ADDRESS_MATCH_TAG_VAL));
|
||||
|
||||
/* ADDRESS_MATCH_TAG field in the above register is expected to match
|
||||
* with the upper bits of link pointer. The above write sets this field
|
||||
* to zero and we are also setting the upper bits of link pointers to
|
||||
* zero while setting up the link list of scatter buffers above
|
||||
*/
|
||||
|
||||
/* Setup head and tail pointers for the idle list */
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX0_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
scatter_bufs_base_paddr[num_scatter_bufs - 1] & 0xffffffff);
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1,
|
||||
BUFFER_ADDRESS_39_32,
|
||||
((uint64_t)(scatter_bufs_base_paddr[num_scatter_bufs - 1])
|
||||
>> 32)) |
|
||||
HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1,
|
||||
HEAD_POINTER_OFFSET, last_buf_end_offset >> 2));
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX0_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
scatter_bufs_base_paddr[0] & 0xffffffff);
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX0_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
scatter_bufs_base_paddr[0] & 0xffffffff);
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1,
|
||||
BUFFER_ADDRESS_39_32,
|
||||
((uint64_t)(scatter_bufs_base_paddr[0]) >>
|
||||
32)) | HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1,
|
||||
TAIL_POINTER_OFFSET, 0));
|
||||
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HP_ADDR(
|
||||
WBM_REG_REG_BASE),
|
||||
2 * num_entries);
|
||||
|
||||
/* Set RING_ID_DISABLE */
|
||||
val = HAL_SM(HWIO_WBM_R0_WBM_IDLE_LINK_RING_MISC, RING_ID_DISABLE, 1);
|
||||
|
||||
/*
|
||||
* SRNG_ENABLE bit is not available in HWK v1 (QCA8074v1). Hence
|
||||
* check the presence of the bit before toggling it.
|
||||
*/
|
||||
#ifdef HWIO_WBM_R0_WBM_IDLE_LINK_RING_MISC_SRNG_ENABLE_BMSK
|
||||
val |= HAL_SM(HWIO_WBM_R0_WBM_IDLE_LINK_RING_MISC, SRNG_ENABLE, 1);
|
||||
#endif
|
||||
HAL_REG_WRITE(soc,
|
||||
HWIO_WBM_R0_WBM_IDLE_LINK_RING_MISC_ADDR(WBM_REG_REG_BASE),
|
||||
val);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_rx_wbm_err_src_get_be() - Get WBM error source from descriptor
|
||||
* @ring_desc: ring descriptor
|
||||
@@ -757,125 +608,9 @@ static uint8_t hal_rx_reo_buf_type_get_be(hal_ring_desc_t rx_desc)
|
||||
void hal_cookie_conversion_reg_cfg_be(hal_soc_handle_t hal_soc_hdl,
|
||||
struct hal_hw_cc_config *cc_cfg)
|
||||
{
|
||||
uint32_t reg_addr, reg_val = 0;
|
||||
struct hal_soc *soc = (struct hal_soc *)hal_soc_hdl;
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
/* REO CFG */
|
||||
reg_addr = HWIO_REO_R0_SW_COOKIE_CFG0_ADDR(REO_REG_REG_BASE);
|
||||
reg_val = cc_cfg->lut_base_addr_31_0;
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
|
||||
reg_addr = HWIO_REO_R0_SW_COOKIE_CFG1_ADDR(REO_REG_REG_BASE);
|
||||
reg_val = 0;
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
SW_COOKIE_CONVERT_GLOBAL_ENABLE,
|
||||
cc_cfg->cc_global_en);
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
SW_COOKIE_CONVERT_ENABLE,
|
||||
cc_cfg->cc_global_en);
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
PAGE_ALIGNMENT,
|
||||
cc_cfg->page_4k_align);
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
COOKIE_OFFSET_MSB,
|
||||
cc_cfg->cookie_offset_msb);
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
COOKIE_PAGE_MSB,
|
||||
cc_cfg->cookie_page_msb);
|
||||
reg_val |= HAL_SM(HWIO_REO_R0_SW_COOKIE_CFG1,
|
||||
CMEM_LUT_BASE_ADDR_39_32,
|
||||
cc_cfg->lut_base_addr_39_32);
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
|
||||
/* WBM CFG */
|
||||
reg_addr = HWIO_WBM_R0_SW_COOKIE_CFG0_ADDR(WBM_REG_REG_BASE);
|
||||
reg_val = cc_cfg->lut_base_addr_31_0;
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
|
||||
reg_addr = HWIO_WBM_R0_SW_COOKIE_CFG1_ADDR(WBM_REG_REG_BASE);
|
||||
reg_val = 0;
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CFG1,
|
||||
PAGE_ALIGNMENT,
|
||||
cc_cfg->page_4k_align);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CFG1,
|
||||
COOKIE_OFFSET_MSB,
|
||||
cc_cfg->cookie_offset_msb);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CFG1,
|
||||
COOKIE_PAGE_MSB,
|
||||
cc_cfg->cookie_page_msb);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CFG1,
|
||||
CMEM_LUT_BASE_ADDR_39_32,
|
||||
cc_cfg->lut_base_addr_39_32);
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
|
||||
/*
|
||||
* WCSS_UMAC_WBM_R0_SW_COOKIE_CONVERT_CFG default value is 0x1FE,
|
||||
*/
|
||||
reg_addr = HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG_ADDR(WBM_REG_REG_BASE);
|
||||
reg_val = 0;
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM_COOKIE_CONV_GLOBAL_ENABLE,
|
||||
cc_cfg->cc_global_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW6_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw6_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW5_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw5_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW4_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw4_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW3_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw3_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW2_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw2_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW1_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw1_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2SW0_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2sw0_cc_en);
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_SW_COOKIE_CONVERT_CFG,
|
||||
WBM2FW_COOKIE_CONVERSION_EN,
|
||||
cc_cfg->wbm2fw_cc_en);
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
|
||||
#ifdef HWIO_WBM_R0_WBM_CFG_2_COOKIE_DEBUG_SEL_BMSK
|
||||
reg_addr = HWIO_WBM_R0_WBM_CFG_2_ADDR(WBM_REG_REG_BASE);
|
||||
reg_val = 0;
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_WBM_CFG_2,
|
||||
COOKIE_DEBUG_SEL,
|
||||
cc_cfg->cc_global_en);
|
||||
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_WBM_CFG_2,
|
||||
COOKIE_CONV_INDICATION_EN,
|
||||
cc_cfg->cc_global_en);
|
||||
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_WBM_CFG_2,
|
||||
ERROR_PATH_COOKIE_CONV_EN,
|
||||
cc_cfg->error_path_cookie_conv_en);
|
||||
|
||||
reg_val |= HAL_SM(HWIO_WBM_R0_WBM_CFG_2,
|
||||
RELEASE_PATH_COOKIE_CONV_EN,
|
||||
cc_cfg->release_path_cookie_conv_en);
|
||||
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
#endif
|
||||
#ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
|
||||
/*
|
||||
* To enable indication for HW cookie conversion done or not for
|
||||
* WBM, WCSS_UMAC_WBM_R0_MISC_CONTROL spare_control field 15th
|
||||
* bit spare_control[15] should be set.
|
||||
*/
|
||||
reg_addr = HWIO_WBM_R0_MISC_CONTROL_ADDR(WBM_REG_REG_BASE);
|
||||
reg_val = HAL_REG_READ(soc, reg_addr);
|
||||
reg_val |= HAL_SM(HWIO_WCSS_UMAC_WBM_R0_MISC_CONTROL,
|
||||
SPARE_CONTROL,
|
||||
HAL_WBM_MISC_CONTROL_SPARE_CONTROL_FIELD_BIT15);
|
||||
HAL_REG_WRITE(soc, reg_addr, reg_val);
|
||||
#endif
|
||||
hal_soc->ops->hal_cookie_conversion_reg_cfg_be(hal_soc_hdl, cc_cfg);
|
||||
}
|
||||
qdf_export_symbol(hal_cookie_conversion_reg_cfg_be);
|
||||
|
||||
@@ -1053,14 +788,9 @@ void hal_hw_txrx_default_ops_attach_be(struct hal_soc *hal_soc)
|
||||
hal_soc->ops->hal_get_rx_max_ba_window = hal_get_rx_max_ba_window_be;
|
||||
hal_soc->ops->hal_set_link_desc_addr = hal_set_link_desc_addr_be;
|
||||
hal_soc->ops->hal_tx_init_data_ring = hal_tx_init_data_ring_be;
|
||||
hal_soc->ops->hal_get_ba_aging_timeout = hal_get_ba_aging_timeout_be;
|
||||
hal_soc->ops->hal_set_ba_aging_timeout = hal_set_ba_aging_timeout_be;
|
||||
hal_soc->ops->hal_get_reo_reg_base_offset =
|
||||
hal_get_reo_reg_base_offset_be;
|
||||
hal_soc->ops->hal_setup_link_idle_list =
|
||||
hal_setup_link_idle_list_generic_be;
|
||||
hal_soc->ops->hal_reo_setup = hal_reo_setup_generic_be;
|
||||
|
||||
hal_soc->ops->hal_rx_reo_buf_paddr_get = hal_rx_reo_buf_paddr_get_be;
|
||||
hal_soc->ops->hal_rx_msdu_link_desc_set = hal_rx_msdu_link_desc_set_be;
|
||||
hal_soc->ops->hal_rx_buf_cookie_rbm_get = hal_rx_buf_cookie_rbm_get_be;
|
||||
|
Reference in New Issue
Block a user