From: Parth Panchoil <parth105105@gmail.com>
To: Baochen Qiang <quic_bqiang@quicinc.com>,
Jeff Johnson <jjohnson@kernel.org>,
Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>,
Wen Gong <quic_wgong@quicinc.com>,
Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>,
Bhagavathi Perumal S <quic_bperumal@quicinc.com>,
P Praneesh <quic_ppranees@quicinc.com>
Cc: Sriram R <quic_srirrama@quicinc.com>,
linux-wireless@vger.kernel.org, ath12k@lists.infradead.org,
linux-kernel@vger.kernel.org,
Francesco Dolcini <francesco@dolcini.it>
Subject: Re: [PATCH ath-next] wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850
Date: Fri, 23 May 2025 15:48:26 +0200 [thread overview]
Message-ID: <91bc6f30004f80feb193a24292f841ee88d48504.camel@gmail.com> (raw)
In-Reply-To: <20250523-ath12k-wrong-global-reset-addr-v1-1-3b06eb556196@quicinc.com>
Thanks Baochen for the patch.
This patch fixes a bug in older kernels, so it should be backported.
Minor correction needed on the reported tag.
Tested on TI AM69 SK board with SX-PCEBE (WCN7850) Wi-Fi module and did
not observe the reported crash anymore.
Cc: stable@vger.kernel.org
Reported-by: Parth Pancholi <parth.pancholi@toradex.com>
Tested-by: Parth Pancholi <parth.pancholi@toradex.com>
Regards,
Parth P
> GCC_GCC_PCIE_HOT_RST is wrongly defined for WCN7850, causing kernel
> crash
> on some specific platforms.
>
> Since this register is divergent for WCN7850 and QCN9274, move it to
> register table to allow different definitions. Then correct the
> register
> address for WCN7850 to fix this issue.
>
> Note IPQ5332 is not affected as it is not PCIe based device.
>
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-
> QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>
> Reported-by: Parth Panchoil <parth105105@gmail.com>
> Closes:
> https://lore.kernel.org/all/86899b2235a59c9134603beebe08f2bb0b244ea0.camel@gmail.com
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7
> devices")
> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
> ---
> ---
> drivers/net/wireless/ath/ath12k/hw.c | 6 ++++++
> drivers/net/wireless/ath/ath12k/hw.h | 2 ++
> drivers/net/wireless/ath/ath12k/pci.c | 6 +++---
> drivers/net/wireless/ath/ath12k/pci.h | 4 +++-
> 4 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/hw.c
> b/drivers/net/wireless/ath/ath12k/hw.c
> index
> 7e2cf0fb2085ab014fc14a5c81074802674b154e..8254dc10b53bbfb54a44c7ff2f7
> 05c72461d1031 100644
> --- a/drivers/net/wireless/ath/ath12k/hw.c
> +++ b/drivers/net/wireless/ath/ath12k/hw.c
> @@ -951,6 +951,8 @@ static const struct ath12k_hw_regs
> qcn9274_v1_regs = {
> .hal_umac_ce0_dest_reg_base = 0x01b81000,
> .hal_umac_ce1_src_reg_base = 0x01b82000,
> .hal_umac_ce1_dest_reg_base = 0x01b83000,
> +
> + .gcc_gcc_pcie_hot_rst = 0x1e38338,
> };
>
> static const struct ath12k_hw_regs qcn9274_v2_regs = {
> @@ -1042,6 +1044,8 @@ static const struct ath12k_hw_regs
> qcn9274_v2_regs = {
> .hal_umac_ce0_dest_reg_base = 0x01b81000,
> .hal_umac_ce1_src_reg_base = 0x01b82000,
> .hal_umac_ce1_dest_reg_base = 0x01b83000,
> +
> + .gcc_gcc_pcie_hot_rst = 0x1e38338,
> };
>
> static const struct ath12k_hw_regs ipq5332_regs = {
> @@ -1215,6 +1219,8 @@ static const struct ath12k_hw_regs wcn7850_regs
> = {
> .hal_umac_ce0_dest_reg_base = 0x01b81000,
> .hal_umac_ce1_src_reg_base = 0x01b82000,
> .hal_umac_ce1_dest_reg_base = 0x01b83000,
> +
> + .gcc_gcc_pcie_hot_rst = 0x1e40304,
> };
>
> static const struct ath12k_hw_hal_params
> ath12k_hw_hal_params_qcn9274 = {
> diff --git a/drivers/net/wireless/ath/ath12k/hw.h
> b/drivers/net/wireless/ath/ath12k/hw.h
> index
> 0fbc17649df463334aa0ebb3da407115985335ca..0a75bc5abfa2410ab3c7b6ce038
> f4d5f6445ecf9 100644
> --- a/drivers/net/wireless/ath/ath12k/hw.h
> +++ b/drivers/net/wireless/ath/ath12k/hw.h
> @@ -375,6 +375,8 @@ struct ath12k_hw_regs {
> u32 hal_reo_cmd_ring_base;
>
> u32 hal_reo_status_ring_base;
> +
> + u32 gcc_gcc_pcie_hot_rst;
> };
>
> static inline const char *ath12k_bd_ie_type_str(enum
> ath12k_bd_ie_type type)
> diff --git a/drivers/net/wireless/ath/ath12k/pci.c
> b/drivers/net/wireless/ath/ath12k/pci.c
> index
> 489d546390fcdab8f615cc9184006a958d9f140a..1f3cfd9b89fdcfd84731ec90c9c
> 678b0c477a2af 100644
> --- a/drivers/net/wireless/ath/ath12k/pci.c
> +++ b/drivers/net/wireless/ath/ath12k/pci.c
> @@ -292,10 +292,10 @@ static void ath12k_pci_enable_ltssm(struct
> ath12k_base *ab)
>
> ath12k_dbg(ab, ATH12K_DBG_PCI, "pci ltssm 0x%x\n", val);
>
> - val = ath12k_pci_read32(ab, GCC_GCC_PCIE_HOT_RST);
> + val = ath12k_pci_read32(ab, GCC_GCC_PCIE_HOT_RST(ab));
> val |= GCC_GCC_PCIE_HOT_RST_VAL;
> - ath12k_pci_write32(ab, GCC_GCC_PCIE_HOT_RST, val);
> - val = ath12k_pci_read32(ab, GCC_GCC_PCIE_HOT_RST);
> + ath12k_pci_write32(ab, GCC_GCC_PCIE_HOT_RST(ab), val);
> + val = ath12k_pci_read32(ab, GCC_GCC_PCIE_HOT_RST(ab));
>
> ath12k_dbg(ab, ATH12K_DBG_PCI, "pci pcie_hot_rst 0x%x\n",
> val);
>
> diff --git a/drivers/net/wireless/ath/ath12k/pci.h
> b/drivers/net/wireless/ath/ath12k/pci.h
> index
> 0b4c459d6d8eabb0773162e6bb3ca666c0a8f15a..d1ec8aad7f6c3b6f5cbdf8ce57a
> 4106733686521 100644
> --- a/drivers/net/wireless/ath/ath12k/pci.h
> +++ b/drivers/net/wireless/ath/ath12k/pci.h
> @@ -28,7 +28,9 @@
> #define PCIE_PCIE_PARF_LTSSM 0x1e081b0
> #define PARM_LTSSM_VALUE 0x111
>
> -#define GCC_GCC_PCIE_HOT_RST 0x1e38338
> +#define GCC_GCC_PCIE_HOT_RST(ab) \
> + ((ab)->hw_params->regs->gcc_gcc_pcie_hot_rst)
> +
> #define GCC_GCC_PCIE_HOT_RST_VAL 0x10
>
> #define PCIE_PCIE_INT_ALL_CLEAR 0x1e08228
>
> ---
> base-commit: 3d933084a072fd5fb5da54c06a017abc0412c86f
> change-id: 20250506-ath12k-wrong-global-reset-addr-b75ddc6e7850
>
> Best regards,
next prev parent reply other threads:[~2025-05-23 14:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-23 2:23 [PATCH ath-next] wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850 Baochen Qiang
2025-05-23 13:48 ` Parth Panchoil [this message]
2025-06-05 5:28 ` Vasanthakumar Thiagarajan
2025-06-07 14:44 ` Jeff Johnson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91bc6f30004f80feb193a24292f841ee88d48504.camel@gmail.com \
--to=parth105105@gmail.com \
--cc=ath12k@lists.infradead.org \
--cc=francesco@dolcini.it \
--cc=jjohnson@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_bperumal@quicinc.com \
--cc=quic_bqiang@quicinc.com \
--cc=quic_ppranees@quicinc.com \
--cc=quic_pradeepc@quicinc.com \
--cc=quic_srirrama@quicinc.com \
--cc=quic_vthiagar@quicinc.com \
--cc=quic_wgong@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox