qcacmn: Initialize command/credit ring for qca8074 & qcn9000

Initialize command/credit ring for qca8074 & qcn9000.

Change-Id: I28087dd4d8f4afddd954c764c2e85da43eaf78f1
CRs-fixed: 2562649
This commit is contained in:
Ankit Kumar
2019-10-29 10:29:00 +05:30
committed by nshrivas
parent 7e0bf6da72
commit 2bf9b7a18a
20 changed files with 214 additions and 17 deletions

View File

@@ -2948,12 +2948,6 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
soc->num_tcl_data_rings = 0; soc->num_tcl_data_rings = 0;
} }
if (dp_tx_soc_attach(soc)) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
FL("dp_tx_soc_attach failed"));
goto fail1;
}
entries = wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(soc_cfg_ctx); entries = wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(soc_cfg_ctx);
if (dp_srng_setup(soc, &soc->tcl_cmd_credit_ring, TCL_CMD_CREDIT, 0, 0, if (dp_srng_setup(soc, &soc->tcl_cmd_credit_ring, TCL_CMD_CREDIT, 0, 0,
entries, 0)) { entries, 0)) {
@@ -2967,6 +2961,12 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
WLAN_MD_DP_SRNG_TCL_CMD, WLAN_MD_DP_SRNG_TCL_CMD,
"tcl_cmd_credit_ring"); "tcl_cmd_credit_ring");
if (dp_tx_soc_attach(soc)) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
FL("dp_tx_soc_attach failed"));
goto fail1;
}
entries = wlan_cfg_get_dp_soc_tcl_status_ring_size(soc_cfg_ctx); entries = wlan_cfg_get_dp_soc_tcl_status_ring_size(soc_cfg_ctx);
if (dp_srng_setup(soc, &soc->tcl_status_ring, TCL_STATUS, 0, 0, if (dp_srng_setup(soc, &soc->tcl_status_ring, TCL_STATUS, 0, 0,
entries, 0)) { entries, 0)) {

View File

@@ -4335,6 +4335,13 @@ QDF_STATUS dp_tx_soc_attach(struct dp_soc *soc)
soc->tcl_data_ring[IPA_TCL_DATA_RING_IDX].hal_srng); soc->tcl_data_ring[IPA_TCL_DATA_RING_IDX].hal_srng);
} }
/*
* Initialize command/credit ring descriptor
* Command/CREDIT ring also used for sending DATA cmds
*/
hal_tx_init_cmd_credit_ring(soc->hal_soc,
soc->tcl_cmd_credit_ring.hal_srng);
/* /*
* todo - Add a runtime config option to enable this. * todo - Add a runtime config option to enable this.
*/ */

View File

@@ -240,6 +240,15 @@ static inline qdf_iomem_t hal_get_window_address(struct hal_soc *hal_soc,
return hal_soc->ops->hal_get_window_address(hal_soc, addr); return hal_soc->ops->hal_get_window_address(hal_soc, addr);
} }
static inline void hal_tx_init_cmd_credit_ring(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
return hal_soc->ops->hal_tx_init_cmd_credit_ring(hal_soc_hdl,
hal_ring_hdl);
}
/** /**
* hal_write32_mb() - Access registers to update configuration * hal_write32_mb() - Access registers to update configuration
* @hal_soc: hal soc handle * @hal_soc: hal soc handle

View File

@@ -375,6 +375,8 @@ struct hal_hw_txrx_ops {
uint8_t (*hal_tx_comp_get_release_reason)(void *hal_desc); uint8_t (*hal_tx_comp_get_release_reason)(void *hal_desc);
uint8_t (*hal_get_wbm_internal_error)(void *hal_desc); uint8_t (*hal_get_wbm_internal_error)(void *hal_desc);
void (*hal_tx_desc_set_mesh_en)(void *desc, uint8_t en); void (*hal_tx_desc_set_mesh_en)(void *desc, uint8_t en);
void (*hal_tx_init_cmd_credit_ring)(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl);
/* rx */ /* rx */
uint32_t (*hal_rx_msdu_start_nss_get)(uint8_t *); uint32_t (*hal_rx_msdu_start_nss_get)(uint8_t *);

View File

@@ -1366,6 +1366,7 @@ struct hal_hw_txrx_ops qca5018_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_5018, hal_tx_desc_set_mesh_en_5018,
hal_tx_init_cmd_credit_ring_5018,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_5018, hal_rx_msdu_start_nss_get_5018,
@@ -1571,7 +1572,7 @@ struct hal_hw_srng_config hw_srng_table_5018[] = {
.start_ring_id = HAL_SRNG_SW2TCL_CMD, .start_ring_id = HAL_SRNG_SW2TCL_CMD,
.max_rings = 1, .max_rings = 1,
.entry_size = (sizeof(struct tlv_32_hdr) + .entry_size = (sizeof(struct tlv_32_hdr) +
sizeof(struct tcl_gse_cmd)) >> 2, sizeof(struct tcl_data_cmd)) >> 2,
.lmac_ring = FALSE, .lmac_ring = FALSE,
.ring_dir = HAL_SRNG_SRC_RING, .ring_dir = HAL_SRNG_SRC_RING,
.reg_start = { .reg_start = {

View File

@@ -207,3 +207,33 @@ static void hal_tx_desc_set_lmac_id_5018(void *desc, uint8_t lmac_id)
HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |= HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |=
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_5018() - Initialize TCL 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_5018(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
uint8_t *desc_addr;
struct hal_srng_params srng_params;
uint32_t desc_size;
uint32_t num_desc;
hal_get_srng_params(hal_soc_hdl, hal_ring_hdl, &srng_params);
desc_addr = (uint8_t *)srng_params.ring_base_vaddr;
desc_size = sizeof(struct tcl_data_cmd);
num_desc = srng_params.num_entries;
while (num_desc) {
/* using CMD/CREDIT Ring to send DATA CMD tag */
HAL_TX_DESC_SET_TLV_HDR(desc_addr, WIFITCL_DATA_CMD_E,
desc_size);
desc_addr += (desc_size + sizeof(struct tlv_32_hdr));
num_desc--;
}
}

View File

@@ -1014,6 +1014,8 @@ struct hal_hw_txrx_ops qca6290_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_6290, hal_tx_desc_set_mesh_en_6290,
hal_tx_init_cmd_credit_ring_6290,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_6290, hal_rx_msdu_start_nss_get_6290,
hal_rx_mon_hw_desc_get_mpdu_status_6290, hal_rx_mon_hw_desc_get_mpdu_status_6290,

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -254,3 +254,15 @@ static void hal_tx_desc_set_lmac_id_6290(void *desc, uint8_t lmac_id)
{ {
} }
#endif #endif
/**
* hal_tx_init_cmd_credit_ring_6290() - 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_6290(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
}

View File

@@ -1010,6 +1010,8 @@ struct hal_hw_txrx_ops qca6390_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_6390, hal_tx_desc_set_mesh_en_6390,
hal_tx_init_cmd_credit_ring_6390,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_6390, hal_rx_msdu_start_nss_get_6390,
hal_rx_mon_hw_desc_get_mpdu_status_6390, hal_rx_mon_hw_desc_get_mpdu_status_6390,

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -161,3 +161,14 @@ static void hal_tx_desc_set_lmac_id_6390(void *desc, uint8_t lmac_id)
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_6390() - 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_6390(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
}

View File

@@ -1433,6 +1433,7 @@ struct hal_hw_txrx_ops qca6490_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_6490, hal_tx_desc_set_mesh_en_6490,
hal_tx_init_cmd_credit_ring_6490,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_6490, hal_rx_msdu_start_nss_get_6490,

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2019 The Linux Foundation. All rights reserved. * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -164,3 +164,15 @@ static void hal_tx_desc_set_lmac_id_6490(void *desc, uint8_t lmac_id)
HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |= HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |=
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_6490() - 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_6490(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
}

View File

@@ -1342,6 +1342,7 @@ struct hal_hw_txrx_ops qca6750_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_6750, hal_tx_desc_set_mesh_en_6750,
hal_tx_init_cmd_credit_ring_6750,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_6750, hal_rx_msdu_start_nss_get_6750,

View File

@@ -167,4 +167,16 @@ static void hal_tx_desc_set_lmac_id_6750(void *desc, uint8_t lmac_id)
HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |= HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |=
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_6750() - 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_6750(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
}
#endif #endif

View File

@@ -1035,6 +1035,8 @@ struct hal_hw_txrx_ops qca8074_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_8074v1, hal_tx_desc_set_mesh_en_8074v1,
hal_tx_init_cmd_credit_ring_8074v1,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_8074, hal_rx_msdu_start_nss_get_8074,
hal_rx_mon_hw_desc_get_mpdu_status_8074, hal_rx_mon_hw_desc_get_mpdu_status_8074,
@@ -1248,7 +1250,7 @@ struct hal_hw_srng_config hw_srng_table_8074[] = {
.start_ring_id = HAL_SRNG_SW2TCL_CMD, .start_ring_id = HAL_SRNG_SW2TCL_CMD,
.max_rings = 1, .max_rings = 1,
.entry_size = (sizeof(struct tlv_32_hdr) + .entry_size = (sizeof(struct tlv_32_hdr) +
sizeof(struct tcl_gse_cmd)) >> 2, sizeof(struct tcl_data_cmd)) >> 2,
.lmac_ring = FALSE, .lmac_ring = FALSE,
.ring_dir = HAL_SRNG_SRC_RING, .ring_dir = HAL_SRNG_SRC_RING,
.reg_start = { .reg_start = {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -144,3 +144,33 @@ void hal_tx_update_dscp_tid_8074(struct hal_soc *soc, uint8_t tid,
static void hal_tx_desc_set_lmac_id_8074(void *desc, uint8_t lmac_id) static void hal_tx_desc_set_lmac_id_8074(void *desc, uint8_t lmac_id)
{ {
} }
/**
* hal_tx_init_cmd_credit_ring_8074v1() - 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_8074v1(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
uint8_t *desc_addr;
struct hal_srng_params srng_params;
uint32_t desc_size;
uint32_t num_desc;
hal_get_srng_params(hal_soc_hdl, hal_ring_hdl, &srng_params);
desc_addr = (uint8_t *)srng_params.ring_base_vaddr;
desc_size = sizeof(struct tcl_data_cmd);
num_desc = srng_params.num_entries;
while (num_desc) {
/* using CMD/CREDIT Ring to send DATA CMD tag */
HAL_TX_DESC_SET_TLV_HDR(desc_addr, WIFITCL_DATA_CMD_E,
desc_size);
desc_addr += (desc_size + sizeof(struct tlv_32_hdr));
num_desc--;
}
}

View File

@@ -1032,6 +1032,7 @@ struct hal_hw_txrx_ops qca8074v2_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_8074v2, hal_tx_desc_set_mesh_en_8074v2,
hal_tx_init_cmd_credit_ring_8074v2,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_8074v2, hal_rx_msdu_start_nss_get_8074v2,
@@ -1249,10 +1250,11 @@ struct hal_hw_srng_config hw_srng_table_8074v2[] = {
HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_SHFT, HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_SHFT,
}, },
{ /* TCL_CMD */ { /* TCL_CMD */
/* qca8074v2 and qcn9000 uses this ring for data commands */
.start_ring_id = HAL_SRNG_SW2TCL_CMD, .start_ring_id = HAL_SRNG_SW2TCL_CMD,
.max_rings = 1, .max_rings = 1,
.entry_size = (sizeof(struct tlv_32_hdr) + .entry_size = (sizeof(struct tlv_32_hdr) +
sizeof(struct tcl_gse_cmd)) >> 2, sizeof(struct tcl_data_cmd)) >> 2,
.lmac_ring = FALSE, .lmac_ring = FALSE,
.ring_dir = HAL_SRNG_SRC_RING, .ring_dir = HAL_SRNG_SRC_RING,
.reg_start = { .reg_start = {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -212,3 +212,32 @@ static void hal_tx_desc_set_lmac_id_8074v2(void *desc, uint8_t lmac_id)
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_8074v2() - 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_8074v2(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
uint8_t *desc_addr;
struct hal_srng_params srng_params;
uint32_t desc_size;
uint32_t num_desc;
hal_get_srng_params(hal_soc_hdl, hal_ring_hdl, &srng_params);
desc_addr = (uint8_t *)srng_params.ring_base_vaddr;
desc_size = sizeof(struct tcl_data_cmd);
num_desc = srng_params.num_entries;
while (num_desc) {
/* using CMD/CREDIT Ring to send DATA CMD tag */
HAL_TX_DESC_SET_TLV_HDR(desc_addr, WIFITCL_DATA_CMD_E,
desc_size);
desc_addr += (desc_size + sizeof(struct tlv_32_hdr));
num_desc--;
}
}

View File

@@ -1412,6 +1412,7 @@ struct hal_hw_txrx_ops qcn9000_hal_hw_txrx_ops = {
hal_tx_comp_get_release_reason_generic, hal_tx_comp_get_release_reason_generic,
hal_get_wbm_internal_error_generic, hal_get_wbm_internal_error_generic,
hal_tx_desc_set_mesh_en_9000, hal_tx_desc_set_mesh_en_9000,
hal_tx_init_cmd_credit_ring_9000,
/* rx */ /* rx */
hal_rx_msdu_start_nss_get_9000, hal_rx_msdu_start_nss_get_9000,
@@ -1622,11 +1623,12 @@ struct hal_hw_srng_config hw_srng_table_9000[] = {
HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_BMSK >> HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_BMSK >>
HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_SHFT, HWIO_TCL_R0_SW2TCL1_RING_BASE_MSB_RING_SIZE_SHFT,
}, },
{ /* TCL_CMD */ { /* TCL_CMD/CREDIT */
/* qca8074v2 and qcn9000 uses this ring for data commands */
.start_ring_id = HAL_SRNG_SW2TCL_CMD, .start_ring_id = HAL_SRNG_SW2TCL_CMD,
.max_rings = 1, .max_rings = 1,
.entry_size = (sizeof(struct tlv_32_hdr) + .entry_size = (sizeof(struct tlv_32_hdr) +
sizeof(struct tcl_gse_cmd)) >> 2, sizeof(struct tcl_data_cmd)) >> 2,
.lmac_ring = FALSE, .lmac_ring = FALSE,
.ring_dir = HAL_SRNG_SRC_RING, .ring_dir = HAL_SRNG_SRC_RING,
.reg_start = { .reg_start = {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -207,3 +207,33 @@ static void hal_tx_desc_set_lmac_id_9000(void *desc, uint8_t lmac_id)
HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |= HAL_SET_FLD(desc, TCL_DATA_CMD_4, LMAC_ID) |=
HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id); HAL_TX_SM(TCL_DATA_CMD_4, LMAC_ID, lmac_id);
} }
/**
* hal_tx_init_cmd_credit_ring_9000() - Initialize TCL 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_9000(hal_soc_handle_t hal_soc_hdl,
hal_ring_handle_t hal_ring_hdl)
{
uint8_t *desc_addr;
struct hal_srng_params srng_params;
uint32_t desc_size;
uint32_t num_desc;
hal_get_srng_params(hal_soc_hdl, hal_ring_hdl, &srng_params);
desc_addr = (uint8_t *)srng_params.ring_base_vaddr;
desc_size = sizeof(struct tcl_data_cmd);
num_desc = srng_params.num_entries;
while (num_desc) {
/* using CMD/CREDIT Ring to send DATA CMD tag */
HAL_TX_DESC_SET_TLV_HDR(desc_addr, WIFITCL_DATA_CMD_E,
desc_size);
desc_addr += (desc_size + sizeof(struct tlv_32_hdr));
num_desc--;
}
}