wifi: ath12k: refactor ath12k_hw_regs structure
[ Upstream commit 5257324583e32fd5bd6bbb6c82b4f5880b842f99 ] IPQ5332 device have different register address values for the below registers: HAL_TCL1_RING_BASE_LSB HAL_TCL1_RING_BASE_MSB HAL_TCL2_RING_BASE_LSB HAL_SEQ_WCSS_UMAC_CE0_SRC_REG HAL_SEQ_WCSS_UMAC_CE0_DST_REG HAL_SEQ_WCSS_UMAC_CE1_SRC_REG HAL_SEQ_WCSS_UMAC_CE1_DST_REG Hence, refactor ath12k_hw_regs structure to accommodate these changes in IPQ5332. Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1 Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00210-QCAHKSWPL_SILICONZ-1 Signed-off-by: P Praneesh <quic_ppranees@quicinc.com> Co-developed-by: Balamurugan S <quic_bselvara@quicinc.com> Signed-off-by: Balamurugan S <quic_bselvara@quicinc.com> Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com> Link: https://patch.msgid.link/20250321-ath12k-ahb-v12-3-bb389ed76ae5@quicinc.com Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com> Stable-dep-of: 7588a893cde5 ("wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6dabf9e054
commit
4c0153d7a1
@@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include "hal_tx.h"
|
#include "hal_tx.h"
|
||||||
@@ -547,9 +547,9 @@ static int ath12k_hal_srng_create_config_qcn9274(struct ath12k_base *ab)
|
|||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_REO_REG + HAL_REO_STATUS_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_REO_REG + HAL_REO_STATUS_HP;
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_TCL_DATA];
|
s = &hal->srng_config[HAL_TCL_DATA];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_BASE_LSB(ab);
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_HP;
|
||||||
s->reg_size[0] = HAL_TCL2_RING_BASE_LSB - HAL_TCL1_RING_BASE_LSB;
|
s->reg_size[0] = HAL_TCL2_RING_BASE_LSB(ab) - HAL_TCL1_RING_BASE_LSB(ab);
|
||||||
s->reg_size[1] = HAL_TCL2_RING_HP - HAL_TCL1_RING_HP;
|
s->reg_size[1] = HAL_TCL2_RING_HP - HAL_TCL1_RING_HP;
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_TCL_CMD];
|
s = &hal->srng_config[HAL_TCL_CMD];
|
||||||
@@ -561,29 +561,29 @@ static int ath12k_hal_srng_create_config_qcn9274(struct ath12k_base *ab)
|
|||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL_STATUS_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL_STATUS_RING_HP;
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_SRC];
|
s = &hal->srng_config[HAL_CE_SRC];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG + HAL_CE_DST_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) + HAL_CE_DST_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG + HAL_CE_DST_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) + HAL_CE_DST_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_DST];
|
s = &hal->srng_config[HAL_CE_DST];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_DST_STATUS];
|
s = &hal->srng_config[HAL_CE_DST_STATUS];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG +
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) +
|
||||||
HAL_CE_DST_STATUS_RING_BASE_LSB;
|
HAL_CE_DST_STATUS_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_STATUS_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_STATUS_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_WBM_IDLE_LINK];
|
s = &hal->srng_config[HAL_WBM_IDLE_LINK];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_WBM_REG + HAL_WBM_IDLE_LINK_RING_BASE_LSB(ab);
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_WBM_REG + HAL_WBM_IDLE_LINK_RING_BASE_LSB(ab);
|
||||||
@@ -1353,9 +1353,9 @@ static int ath12k_hal_srng_create_config_wcn7850(struct ath12k_base *ab)
|
|||||||
|
|
||||||
s = &hal->srng_config[HAL_TCL_DATA];
|
s = &hal->srng_config[HAL_TCL_DATA];
|
||||||
s->max_rings = 5;
|
s->max_rings = 5;
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_BASE_LSB(ab);
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_TCL_REG + HAL_TCL1_RING_HP;
|
||||||
s->reg_size[0] = HAL_TCL2_RING_BASE_LSB - HAL_TCL1_RING_BASE_LSB;
|
s->reg_size[0] = HAL_TCL2_RING_BASE_LSB(ab) - HAL_TCL1_RING_BASE_LSB(ab);
|
||||||
s->reg_size[1] = HAL_TCL2_RING_HP - HAL_TCL1_RING_HP;
|
s->reg_size[1] = HAL_TCL2_RING_HP - HAL_TCL1_RING_HP;
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_TCL_CMD];
|
s = &hal->srng_config[HAL_TCL_CMD];
|
||||||
@@ -1368,31 +1368,31 @@ static int ath12k_hal_srng_create_config_wcn7850(struct ath12k_base *ab)
|
|||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_SRC];
|
s = &hal->srng_config[HAL_CE_SRC];
|
||||||
s->max_rings = 12;
|
s->max_rings = 12;
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG + HAL_CE_DST_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) + HAL_CE_DST_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG + HAL_CE_DST_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) + HAL_CE_DST_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_DST];
|
s = &hal->srng_config[HAL_CE_DST];
|
||||||
s->max_rings = 12;
|
s->max_rings = 12;
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_RING_BASE_LSB;
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_CE_DST_STATUS];
|
s = &hal->srng_config[HAL_CE_DST_STATUS];
|
||||||
s->max_rings = 12;
|
s->max_rings = 12;
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG +
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) +
|
||||||
HAL_CE_DST_STATUS_RING_BASE_LSB;
|
HAL_CE_DST_STATUS_RING_BASE_LSB;
|
||||||
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG + HAL_CE_DST_STATUS_RING_HP;
|
s->reg_start[1] = HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) + HAL_CE_DST_STATUS_RING_HP;
|
||||||
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[0] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG -
|
s->reg_size[1] = HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) -
|
||||||
HAL_SEQ_WCSS_UMAC_CE0_DST_REG;
|
HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab);
|
||||||
|
|
||||||
s = &hal->srng_config[HAL_WBM_IDLE_LINK];
|
s = &hal->srng_config[HAL_WBM_IDLE_LINK];
|
||||||
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_WBM_REG + HAL_WBM_IDLE_LINK_RING_BASE_LSB(ab);
|
s->reg_start[0] = HAL_SEQ_WCSS_UMAC_WBM_REG + HAL_WBM_IDLE_LINK_RING_BASE_LSB(ab);
|
||||||
@@ -1737,7 +1737,7 @@ static void ath12k_hal_srng_src_hw_init(struct ath12k_base *ab,
|
|||||||
HAL_TCL1_RING_BASE_MSB_RING_BASE_ADDR_MSB) |
|
HAL_TCL1_RING_BASE_MSB_RING_BASE_ADDR_MSB) |
|
||||||
u32_encode_bits((srng->entry_size * srng->num_entries),
|
u32_encode_bits((srng->entry_size * srng->num_entries),
|
||||||
HAL_TCL1_RING_BASE_MSB_RING_SIZE);
|
HAL_TCL1_RING_BASE_MSB_RING_SIZE);
|
||||||
ath12k_hif_write32(ab, reg_base + HAL_TCL1_RING_BASE_MSB_OFFSET, val);
|
ath12k_hif_write32(ab, reg_base + HAL_TCL1_RING_BASE_MSB_OFFSET(ab), val);
|
||||||
|
|
||||||
val = u32_encode_bits(srng->entry_size, HAL_REO1_RING_ID_ENTRY_SIZE);
|
val = u32_encode_bits(srng->entry_size, HAL_REO1_RING_ID_ENTRY_SIZE);
|
||||||
ath12k_hif_write32(ab, reg_base + HAL_TCL1_RING_ID_OFFSET(ab), val);
|
ath12k_hif_write32(ab, reg_base + HAL_TCL1_RING_ID_OFFSET(ab), val);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ATH12K_HAL_H
|
#ifndef ATH12K_HAL_H
|
||||||
@@ -44,10 +44,14 @@ struct ath12k_base;
|
|||||||
#define HAL_SEQ_WCSS_UMAC_OFFSET 0x00a00000
|
#define HAL_SEQ_WCSS_UMAC_OFFSET 0x00a00000
|
||||||
#define HAL_SEQ_WCSS_UMAC_REO_REG 0x00a38000
|
#define HAL_SEQ_WCSS_UMAC_REO_REG 0x00a38000
|
||||||
#define HAL_SEQ_WCSS_UMAC_TCL_REG 0x00a44000
|
#define HAL_SEQ_WCSS_UMAC_TCL_REG 0x00a44000
|
||||||
#define HAL_SEQ_WCSS_UMAC_CE0_SRC_REG 0x01b80000
|
#define HAL_SEQ_WCSS_UMAC_CE0_SRC_REG(ab) \
|
||||||
#define HAL_SEQ_WCSS_UMAC_CE0_DST_REG 0x01b81000
|
((ab)->hw_params->regs->hal_umac_ce0_src_reg_base)
|
||||||
#define HAL_SEQ_WCSS_UMAC_CE1_SRC_REG 0x01b82000
|
#define HAL_SEQ_WCSS_UMAC_CE0_DST_REG(ab) \
|
||||||
#define HAL_SEQ_WCSS_UMAC_CE1_DST_REG 0x01b83000
|
((ab)->hw_params->regs->hal_umac_ce0_dest_reg_base)
|
||||||
|
#define HAL_SEQ_WCSS_UMAC_CE1_SRC_REG(ab) \
|
||||||
|
((ab)->hw_params->regs->hal_umac_ce1_src_reg_base)
|
||||||
|
#define HAL_SEQ_WCSS_UMAC_CE1_DST_REG(ab) \
|
||||||
|
((ab)->hw_params->regs->hal_umac_ce1_dest_reg_base)
|
||||||
#define HAL_SEQ_WCSS_UMAC_WBM_REG 0x00a34000
|
#define HAL_SEQ_WCSS_UMAC_WBM_REG 0x00a34000
|
||||||
|
|
||||||
#define HAL_CE_WFSS_CE_REG_BASE 0x01b80000
|
#define HAL_CE_WFSS_CE_REG_BASE 0x01b80000
|
||||||
@@ -57,8 +61,10 @@ struct ath12k_base;
|
|||||||
/* SW2TCL(x) R0 ring configuration address */
|
/* SW2TCL(x) R0 ring configuration address */
|
||||||
#define HAL_TCL1_RING_CMN_CTRL_REG 0x00000020
|
#define HAL_TCL1_RING_CMN_CTRL_REG 0x00000020
|
||||||
#define HAL_TCL1_RING_DSCP_TID_MAP 0x00000240
|
#define HAL_TCL1_RING_DSCP_TID_MAP 0x00000240
|
||||||
#define HAL_TCL1_RING_BASE_LSB 0x00000900
|
#define HAL_TCL1_RING_BASE_LSB(ab) \
|
||||||
#define HAL_TCL1_RING_BASE_MSB 0x00000904
|
((ab)->hw_params->regs->hal_tcl1_ring_base_lsb)
|
||||||
|
#define HAL_TCL1_RING_BASE_MSB(ab) \
|
||||||
|
((ab)->hw_params->regs->hal_tcl1_ring_base_msb)
|
||||||
#define HAL_TCL1_RING_ID(ab) ((ab)->hw_params->regs->hal_tcl1_ring_id)
|
#define HAL_TCL1_RING_ID(ab) ((ab)->hw_params->regs->hal_tcl1_ring_id)
|
||||||
#define HAL_TCL1_RING_MISC(ab) \
|
#define HAL_TCL1_RING_MISC(ab) \
|
||||||
((ab)->hw_params->regs->hal_tcl1_ring_misc)
|
((ab)->hw_params->regs->hal_tcl1_ring_misc)
|
||||||
@@ -76,30 +82,31 @@ struct ath12k_base;
|
|||||||
((ab)->hw_params->regs->hal_tcl1_ring_msi1_base_msb)
|
((ab)->hw_params->regs->hal_tcl1_ring_msi1_base_msb)
|
||||||
#define HAL_TCL1_RING_MSI1_DATA(ab) \
|
#define HAL_TCL1_RING_MSI1_DATA(ab) \
|
||||||
((ab)->hw_params->regs->hal_tcl1_ring_msi1_data)
|
((ab)->hw_params->regs->hal_tcl1_ring_msi1_data)
|
||||||
#define HAL_TCL2_RING_BASE_LSB 0x00000978
|
#define HAL_TCL2_RING_BASE_LSB(ab) \
|
||||||
|
((ab)->hw_params->regs->hal_tcl2_ring_base_lsb)
|
||||||
#define HAL_TCL_RING_BASE_LSB(ab) \
|
#define HAL_TCL_RING_BASE_LSB(ab) \
|
||||||
((ab)->hw_params->regs->hal_tcl_ring_base_lsb)
|
((ab)->hw_params->regs->hal_tcl_ring_base_lsb)
|
||||||
|
|
||||||
#define HAL_TCL1_RING_MSI1_BASE_LSB_OFFSET(ab) \
|
#define HAL_TCL1_RING_MSI1_BASE_LSB_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_MSI1_BASE_LSB(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_MSI1_BASE_LSB(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_MSI1_BASE_MSB_OFFSET(ab) \
|
#define HAL_TCL1_RING_MSI1_BASE_MSB_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_MSI1_BASE_MSB(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_MSI1_BASE_MSB(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_MSI1_DATA_OFFSET(ab) \
|
#define HAL_TCL1_RING_MSI1_DATA_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_MSI1_DATA(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_MSI1_DATA(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_BASE_MSB_OFFSET \
|
#define HAL_TCL1_RING_BASE_MSB_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_BASE_MSB - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_BASE_MSB(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_ID_OFFSET(ab) \
|
#define HAL_TCL1_RING_ID_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_ID(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_ID(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_CONSR_INT_SETUP_IX0_OFFSET(ab) \
|
#define HAL_TCL1_RING_CONSR_INT_SETUP_IX0_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_CONSUMER_INT_SETUP_IX0(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_CONSUMER_INT_SETUP_IX0(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_CONSR_INT_SETUP_IX1_OFFSET(ab) \
|
#define HAL_TCL1_RING_CONSR_INT_SETUP_IX1_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_CONSUMER_INT_SETUP_IX1(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_CONSUMER_INT_SETUP_IX1(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_TP_ADDR_LSB_OFFSET(ab) \
|
#define HAL_TCL1_RING_TP_ADDR_LSB_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_TP_ADDR_LSB(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_TP_ADDR_LSB(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_TP_ADDR_MSB_OFFSET(ab) \
|
#define HAL_TCL1_RING_TP_ADDR_MSB_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_TP_ADDR_MSB(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_TP_ADDR_MSB(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
#define HAL_TCL1_RING_MISC_OFFSET(ab) \
|
#define HAL_TCL1_RING_MISC_OFFSET(ab) ({ typeof(ab) _ab = (ab); \
|
||||||
(HAL_TCL1_RING_MISC(ab) - HAL_TCL1_RING_BASE_LSB)
|
(HAL_TCL1_RING_MISC(_ab) - HAL_TCL1_RING_BASE_LSB(_ab)); })
|
||||||
|
|
||||||
/* SW2TCL(x) R2 ring pointers (head/tail) address */
|
/* SW2TCL(x) R2 ring pointers (head/tail) address */
|
||||||
#define HAL_TCL1_RING_HP 0x00002000
|
#define HAL_TCL1_RING_HP 0x00002000
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
@@ -615,6 +615,9 @@ static const struct ath12k_hw_regs qcn9274_v1_regs = {
|
|||||||
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
||||||
.hal_tcl1_ring_msi1_data = 0x00000950,
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
||||||
.hal_tcl_ring_base_lsb = 0x00000b58,
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
||||||
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
||||||
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
||||||
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
||||||
|
|
||||||
/* TCL STATUS ring address */
|
/* TCL STATUS ring address */
|
||||||
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
||||||
@@ -677,6 +680,12 @@ static const struct ath12k_hw_regs qcn9274_v1_regs = {
|
|||||||
|
|
||||||
/* REO status ring address */
|
/* REO status ring address */
|
||||||
.hal_reo_status_ring_base = 0x00000a84,
|
.hal_reo_status_ring_base = 0x00000a84,
|
||||||
|
|
||||||
|
/* CE base address */
|
||||||
|
.hal_umac_ce0_src_reg_base = 0x01b80000,
|
||||||
|
.hal_umac_ce0_dest_reg_base = 0x01b81000,
|
||||||
|
.hal_umac_ce1_src_reg_base = 0x01b82000,
|
||||||
|
.hal_umac_ce1_dest_reg_base = 0x01b83000,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct ath12k_hw_regs qcn9274_v2_regs = {
|
static const struct ath12k_hw_regs qcn9274_v2_regs = {
|
||||||
@@ -691,6 +700,9 @@ static const struct ath12k_hw_regs qcn9274_v2_regs = {
|
|||||||
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
||||||
.hal_tcl1_ring_msi1_data = 0x00000950,
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
||||||
.hal_tcl_ring_base_lsb = 0x00000b58,
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
||||||
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
||||||
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
||||||
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
||||||
|
|
||||||
/* TCL STATUS ring address */
|
/* TCL STATUS ring address */
|
||||||
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
||||||
@@ -757,6 +769,12 @@ static const struct ath12k_hw_regs qcn9274_v2_regs = {
|
|||||||
|
|
||||||
/* REO status ring address */
|
/* REO status ring address */
|
||||||
.hal_reo_status_ring_base = 0x00000aa0,
|
.hal_reo_status_ring_base = 0x00000aa0,
|
||||||
|
|
||||||
|
/* CE base address */
|
||||||
|
.hal_umac_ce0_src_reg_base = 0x01b80000,
|
||||||
|
.hal_umac_ce0_dest_reg_base = 0x01b81000,
|
||||||
|
.hal_umac_ce1_src_reg_base = 0x01b82000,
|
||||||
|
.hal_umac_ce1_dest_reg_base = 0x01b83000,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct ath12k_hw_regs wcn7850_regs = {
|
static const struct ath12k_hw_regs wcn7850_regs = {
|
||||||
@@ -771,6 +789,9 @@ static const struct ath12k_hw_regs wcn7850_regs = {
|
|||||||
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
||||||
.hal_tcl1_ring_msi1_data = 0x00000950,
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
||||||
.hal_tcl_ring_base_lsb = 0x00000b58,
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
||||||
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
||||||
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
||||||
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
||||||
|
|
||||||
/* TCL STATUS ring address */
|
/* TCL STATUS ring address */
|
||||||
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
||||||
@@ -833,6 +854,12 @@ static const struct ath12k_hw_regs wcn7850_regs = {
|
|||||||
|
|
||||||
/* REO status ring address */
|
/* REO status ring address */
|
||||||
.hal_reo_status_ring_base = 0x00000a84,
|
.hal_reo_status_ring_base = 0x00000a84,
|
||||||
|
|
||||||
|
/* CE base address */
|
||||||
|
.hal_umac_ce0_src_reg_base = 0x01b80000,
|
||||||
|
.hal_umac_ce0_dest_reg_base = 0x01b81000,
|
||||||
|
.hal_umac_ce1_src_reg_base = 0x01b82000,
|
||||||
|
.hal_umac_ce1_dest_reg_base = 0x01b83000,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct ath12k_hw_hal_params ath12k_hw_hal_params_qcn9274 = {
|
static const struct ath12k_hw_hal_params ath12k_hw_hal_params_qcn9274 = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ATH12K_HW_H
|
#ifndef ATH12K_HW_H
|
||||||
@@ -293,6 +293,9 @@ struct ath12k_hw_regs {
|
|||||||
u32 hal_tcl1_ring_msi1_base_msb;
|
u32 hal_tcl1_ring_msi1_base_msb;
|
||||||
u32 hal_tcl1_ring_msi1_data;
|
u32 hal_tcl1_ring_msi1_data;
|
||||||
u32 hal_tcl_ring_base_lsb;
|
u32 hal_tcl_ring_base_lsb;
|
||||||
|
u32 hal_tcl1_ring_base_lsb;
|
||||||
|
u32 hal_tcl1_ring_base_msb;
|
||||||
|
u32 hal_tcl2_ring_base_lsb;
|
||||||
|
|
||||||
u32 hal_tcl_status_ring_base_lsb;
|
u32 hal_tcl_status_ring_base_lsb;
|
||||||
|
|
||||||
@@ -316,6 +319,11 @@ struct ath12k_hw_regs {
|
|||||||
u32 pcie_qserdes_sysclk_en_sel;
|
u32 pcie_qserdes_sysclk_en_sel;
|
||||||
u32 pcie_pcs_osc_dtct_config_base;
|
u32 pcie_pcs_osc_dtct_config_base;
|
||||||
|
|
||||||
|
u32 hal_umac_ce0_src_reg_base;
|
||||||
|
u32 hal_umac_ce0_dest_reg_base;
|
||||||
|
u32 hal_umac_ce1_src_reg_base;
|
||||||
|
u32 hal_umac_ce1_dest_reg_base;
|
||||||
|
|
||||||
u32 hal_ppe_rel_ring_base;
|
u32 hal_ppe_rel_ring_base;
|
||||||
|
|
||||||
u32 hal_reo2_ring_base;
|
u32 hal_reo2_ring_base;
|
||||||
|
|||||||
Reference in New Issue
Block a user