wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
|
|
/*
|
|
|
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
2025-03-21 16:22:40 +05:30
|
|
|
* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include <linux/bitops.h>
|
|
|
|
#include <linux/bitfield.h>
|
|
|
|
|
|
|
|
#include "debug.h"
|
|
|
|
#include "core.h"
|
|
|
|
#include "ce.h"
|
|
|
|
#include "hw.h"
|
|
|
|
#include "mhi.h"
|
|
|
|
#include "dp_rx.h"
|
wifi: ath12k: Add support to enqueue management frame at MLD level
A multi-link client can use any link for transmissions. It can decide to
put one link in power save mode for longer periods while listening on the
other links as per MLD listen interval. Unicast management frames sent to
that link station might get dropped if that link station is in power save
mode or inactive. In such cases, firmware can take decision on which link
to use.
Allow the firmware to decide on which link management frame should be
sent on, by filling the hardware link with maximum value of u32, so that
the firmware will not have a specific link to transmit data on and so
the management frames will be link agnostic. For QCN devices, all action
frames are marked as link agnostic. For WCN devices, if the device is
configured as an AP, then all frames other than probe response frames,
authentication frames, association response frames, re-association response
frames and ADDBA response frames are marked as link agnostic and if the
device is configured as a station, then all frames other than probe request
frames, authentication frames, de-authentication frames and ADDBA response
frames are marked as link agnostic.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711091704.3704379-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
2025-07-11 14:47:04 +05:30
|
|
|
#include "peer.h"
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
2024-04-22 11:30:50 +08:00
|
|
|
static const guid_t wcn7850_uuid = GUID_INIT(0xf634f534, 0x6147, 0x11ec,
|
|
|
|
0x90, 0xd6, 0x02, 0x42,
|
|
|
|
0xac, 0x12, 0x00, 0x03);
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static u8 ath12k_hw_qcn9274_mac_from_pdev_id(int pdev_idx)
|
|
|
|
{
|
|
|
|
return pdev_idx;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int ath12k_hw_mac_id_to_pdev_id_qcn9274(const struct ath12k_hw_params *hw,
|
|
|
|
int mac_id)
|
|
|
|
{
|
|
|
|
return mac_id;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int ath12k_hw_mac_id_to_srng_id_qcn9274(const struct ath12k_hw_params *hw,
|
|
|
|
int mac_id)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static u8 ath12k_hw_get_ring_selector_qcn9274(struct sk_buff *skb)
|
|
|
|
{
|
|
|
|
return smp_processor_id();
|
|
|
|
}
|
|
|
|
|
|
|
|
static bool ath12k_dp_srng_is_comp_ring_qcn9274(int ring_num)
|
|
|
|
{
|
|
|
|
if (ring_num < 3 || ring_num == 4)
|
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
wifi: ath12k: Add support to enqueue management frame at MLD level
A multi-link client can use any link for transmissions. It can decide to
put one link in power save mode for longer periods while listening on the
other links as per MLD listen interval. Unicast management frames sent to
that link station might get dropped if that link station is in power save
mode or inactive. In such cases, firmware can take decision on which link
to use.
Allow the firmware to decide on which link management frame should be
sent on, by filling the hardware link with maximum value of u32, so that
the firmware will not have a specific link to transmit data on and so
the management frames will be link agnostic. For QCN devices, all action
frames are marked as link agnostic. For WCN devices, if the device is
configured as an AP, then all frames other than probe response frames,
authentication frames, association response frames, re-association response
frames and ADDBA response frames are marked as link agnostic and if the
device is configured as a station, then all frames other than probe request
frames, authentication frames, de-authentication frames and ADDBA response
frames are marked as link agnostic.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711091704.3704379-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
2025-07-11 14:47:04 +05:30
|
|
|
static bool ath12k_is_frame_link_agnostic_qcn9274(struct ath12k_link_vif *arvif,
|
|
|
|
struct ieee80211_mgmt *mgmt)
|
|
|
|
{
|
|
|
|
return ieee80211_is_action(mgmt->frame_control);
|
|
|
|
}
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static int ath12k_hw_mac_id_to_pdev_id_wcn7850(const struct ath12k_hw_params *hw,
|
|
|
|
int mac_id)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int ath12k_hw_mac_id_to_srng_id_wcn7850(const struct ath12k_hw_params *hw,
|
|
|
|
int mac_id)
|
|
|
|
{
|
|
|
|
return mac_id;
|
|
|
|
}
|
|
|
|
|
|
|
|
static u8 ath12k_hw_get_ring_selector_wcn7850(struct sk_buff *skb)
|
|
|
|
{
|
|
|
|
return skb_get_queue_mapping(skb);
|
|
|
|
}
|
|
|
|
|
|
|
|
static bool ath12k_dp_srng_is_comp_ring_wcn7850(int ring_num)
|
|
|
|
{
|
|
|
|
if (ring_num == 0 || ring_num == 2 || ring_num == 4)
|
|
|
|
return true;
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
wifi: ath12k: Add support to enqueue management frame at MLD level
A multi-link client can use any link for transmissions. It can decide to
put one link in power save mode for longer periods while listening on the
other links as per MLD listen interval. Unicast management frames sent to
that link station might get dropped if that link station is in power save
mode or inactive. In such cases, firmware can take decision on which link
to use.
Allow the firmware to decide on which link management frame should be
sent on, by filling the hardware link with maximum value of u32, so that
the firmware will not have a specific link to transmit data on and so
the management frames will be link agnostic. For QCN devices, all action
frames are marked as link agnostic. For WCN devices, if the device is
configured as an AP, then all frames other than probe response frames,
authentication frames, association response frames, re-association response
frames and ADDBA response frames are marked as link agnostic and if the
device is configured as a station, then all frames other than probe request
frames, authentication frames, de-authentication frames and ADDBA response
frames are marked as link agnostic.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711091704.3704379-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
2025-07-11 14:47:04 +05:30
|
|
|
static bool ath12k_is_addba_resp_action_code(struct ieee80211_mgmt *mgmt)
|
|
|
|
{
|
|
|
|
if (!ieee80211_is_action(mgmt->frame_control))
|
|
|
|
return false;
|
|
|
|
|
|
|
|
if (mgmt->u.action.category != WLAN_CATEGORY_BACK)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
if (mgmt->u.action.u.addba_resp.action_code != WLAN_ACTION_ADDBA_RESP)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
static bool ath12k_is_frame_link_agnostic_wcn7850(struct ath12k_link_vif *arvif,
|
|
|
|
struct ieee80211_mgmt *mgmt)
|
|
|
|
{
|
|
|
|
struct ieee80211_vif *vif = ath12k_ahvif_to_vif(arvif->ahvif);
|
|
|
|
struct ath12k_hw *ah = ath12k_ar_to_ah(arvif->ar);
|
|
|
|
struct ath12k_base *ab = arvif->ar->ab;
|
|
|
|
__le16 fc = mgmt->frame_control;
|
|
|
|
|
|
|
|
spin_lock_bh(&ab->base_lock);
|
|
|
|
if (!ath12k_peer_find_by_addr(ab, mgmt->da) &&
|
|
|
|
!ath12k_peer_ml_find(ah, mgmt->da)) {
|
|
|
|
spin_unlock_bh(&ab->base_lock);
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
spin_unlock_bh(&ab->base_lock);
|
|
|
|
|
|
|
|
if (vif->type == NL80211_IFTYPE_STATION)
|
|
|
|
return arvif->is_up &&
|
|
|
|
(vif->valid_links == vif->active_links) &&
|
|
|
|
!ieee80211_is_probe_req(fc) &&
|
|
|
|
!ieee80211_is_auth(fc) &&
|
|
|
|
!ieee80211_is_deauth(fc) &&
|
|
|
|
!ath12k_is_addba_resp_action_code(mgmt);
|
|
|
|
|
|
|
|
if (vif->type == NL80211_IFTYPE_AP)
|
|
|
|
return !(ieee80211_is_probe_resp(fc) || ieee80211_is_auth(fc) ||
|
|
|
|
ieee80211_is_assoc_resp(fc) || ieee80211_is_reassoc_resp(fc) ||
|
|
|
|
ath12k_is_addba_resp_action_code(mgmt));
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static const struct ath12k_hw_ops qcn9274_ops = {
|
|
|
|
.get_hw_mac_from_pdev_id = ath12k_hw_qcn9274_mac_from_pdev_id,
|
|
|
|
.mac_id_to_pdev_id = ath12k_hw_mac_id_to_pdev_id_qcn9274,
|
|
|
|
.mac_id_to_srng_id = ath12k_hw_mac_id_to_srng_id_qcn9274,
|
|
|
|
.rxdma_ring_sel_config = ath12k_dp_rxdma_ring_sel_config_qcn9274,
|
|
|
|
.get_ring_selector = ath12k_hw_get_ring_selector_qcn9274,
|
|
|
|
.dp_srng_is_tx_comp_ring = ath12k_dp_srng_is_comp_ring_qcn9274,
|
wifi: ath12k: Add support to enqueue management frame at MLD level
A multi-link client can use any link for transmissions. It can decide to
put one link in power save mode for longer periods while listening on the
other links as per MLD listen interval. Unicast management frames sent to
that link station might get dropped if that link station is in power save
mode or inactive. In such cases, firmware can take decision on which link
to use.
Allow the firmware to decide on which link management frame should be
sent on, by filling the hardware link with maximum value of u32, so that
the firmware will not have a specific link to transmit data on and so
the management frames will be link agnostic. For QCN devices, all action
frames are marked as link agnostic. For WCN devices, if the device is
configured as an AP, then all frames other than probe response frames,
authentication frames, association response frames, re-association response
frames and ADDBA response frames are marked as link agnostic and if the
device is configured as a station, then all frames other than probe request
frames, authentication frames, de-authentication frames and ADDBA response
frames are marked as link agnostic.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711091704.3704379-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
2025-07-11 14:47:04 +05:30
|
|
|
.is_frame_link_agnostic = ath12k_is_frame_link_agnostic_qcn9274,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ath12k_hw_ops wcn7850_ops = {
|
|
|
|
.get_hw_mac_from_pdev_id = ath12k_hw_qcn9274_mac_from_pdev_id,
|
|
|
|
.mac_id_to_pdev_id = ath12k_hw_mac_id_to_pdev_id_wcn7850,
|
|
|
|
.mac_id_to_srng_id = ath12k_hw_mac_id_to_srng_id_wcn7850,
|
|
|
|
.rxdma_ring_sel_config = ath12k_dp_rxdma_ring_sel_config_wcn7850,
|
|
|
|
.get_ring_selector = ath12k_hw_get_ring_selector_wcn7850,
|
|
|
|
.dp_srng_is_tx_comp_ring = ath12k_dp_srng_is_comp_ring_wcn7850,
|
wifi: ath12k: Add support to enqueue management frame at MLD level
A multi-link client can use any link for transmissions. It can decide to
put one link in power save mode for longer periods while listening on the
other links as per MLD listen interval. Unicast management frames sent to
that link station might get dropped if that link station is in power save
mode or inactive. In such cases, firmware can take decision on which link
to use.
Allow the firmware to decide on which link management frame should be
sent on, by filling the hardware link with maximum value of u32, so that
the firmware will not have a specific link to transmit data on and so
the management frames will be link agnostic. For QCN devices, all action
frames are marked as link agnostic. For WCN devices, if the device is
configured as an AP, then all frames other than probe response frames,
authentication frames, association response frames, re-association response
frames and ADDBA response frames are marked as link agnostic and if the
device is configured as a station, then all frames other than probe request
frames, authentication frames, de-authentication frames and ADDBA response
frames are marked as link agnostic.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250711091704.3704379-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
2025-07-11 14:47:04 +05:30
|
|
|
.is_frame_link_agnostic = ath12k_is_frame_link_agnostic_wcn7850,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#define ATH12K_TX_RING_MASK_0 0x1
|
|
|
|
#define ATH12K_TX_RING_MASK_1 0x2
|
|
|
|
#define ATH12K_TX_RING_MASK_2 0x4
|
|
|
|
#define ATH12K_TX_RING_MASK_3 0x8
|
|
|
|
#define ATH12K_TX_RING_MASK_4 0x10
|
|
|
|
|
|
|
|
#define ATH12K_RX_RING_MASK_0 0x1
|
|
|
|
#define ATH12K_RX_RING_MASK_1 0x2
|
|
|
|
#define ATH12K_RX_RING_MASK_2 0x4
|
|
|
|
#define ATH12K_RX_RING_MASK_3 0x8
|
|
|
|
|
|
|
|
#define ATH12K_RX_ERR_RING_MASK_0 0x1
|
|
|
|
|
|
|
|
#define ATH12K_RX_WBM_REL_RING_MASK_0 0x1
|
|
|
|
|
|
|
|
#define ATH12K_REO_STATUS_RING_MASK_0 0x1
|
|
|
|
|
|
|
|
#define ATH12K_HOST2RXDMA_RING_MASK_0 0x1
|
|
|
|
|
|
|
|
#define ATH12K_RX_MON_RING_MASK_0 0x1
|
|
|
|
#define ATH12K_RX_MON_RING_MASK_1 0x2
|
|
|
|
#define ATH12K_RX_MON_RING_MASK_2 0x4
|
|
|
|
|
|
|
|
#define ATH12K_TX_MON_RING_MASK_0 0x1
|
|
|
|
#define ATH12K_TX_MON_RING_MASK_1 0x2
|
|
|
|
|
2025-04-21 10:34:36 +08:00
|
|
|
#define ATH12K_RX_MON_STATUS_RING_MASK_0 0x1
|
|
|
|
#define ATH12K_RX_MON_STATUS_RING_MASK_1 0x2
|
|
|
|
#define ATH12K_RX_MON_STATUS_RING_MASK_2 0x4
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
/* Target firmware's Copy Engine configuration. */
|
|
|
|
static const struct ce_pipe_config ath12k_target_ce_config_wlan_qcn9274[] = {
|
|
|
|
/* CE0: host->target HTC control and raw streams */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(0),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE1: target->host HTT + HTC control */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(1),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE2: target->host WMI */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(2),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE3: host->target WMI (mac0) */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(3),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE4: host->target HTT */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(4),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(256),
|
|
|
|
.nbytes_max = __cpu_to_le32(256),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE5: target->host Pktlog */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(5),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE6: Reserved for target autonomous hif_memcpy */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(6),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE7: host->target WMI (mac1) */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(7),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE8: Reserved for target autonomous hif_memcpy */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(8),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE9, 10 and 11: Reserved for MHI */
|
|
|
|
|
|
|
|
/* CE12: Target CV prefetch */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(12),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE13: Target CV prefetch */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(13),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE14: WMI logging/CFR/Spectral/Radar */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(14),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE15: Reserved */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Target firmware's Copy Engine configuration. */
|
|
|
|
static const struct ce_pipe_config ath12k_target_ce_config_wlan_wcn7850[] = {
|
|
|
|
/* CE0: host->target HTC control and raw streams */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(0),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE1: target->host HTT + HTC control */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(1),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE2: target->host WMI */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(2),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE3: host->target WMI */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(3),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE4: host->target HTT */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(4),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(256),
|
|
|
|
.nbytes_max = __cpu_to_le32(256),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE5: target->host Pktlog */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(5),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE6: Reserved for target autonomous hif_memcpy */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(6),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE7 used only by Host */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(7),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H),
|
|
|
|
.nentries = __cpu_to_le32(0),
|
|
|
|
.nbytes_max = __cpu_to_le32(0),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* CE8 target->host used only by IPA */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(8),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* CE 9, 10, 11 are used by MHI driver */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Map from service/endpoint to Copy Engine.
|
|
|
|
* This table is derived from the CE_PCI TABLE, above.
|
|
|
|
* It is passed to the Target at startup for use by firmware.
|
|
|
|
*/
|
|
|
|
static const struct service_to_pipe ath12k_target_service_to_ce_map_wlan_qcn9274[] = {
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(4),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_MAC1),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(7),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_MAC1),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_PKT_LOG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(5),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_DIAG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(14),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* (Additions here) */
|
|
|
|
|
|
|
|
{ /* must be last */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct service_to_pipe ath12k_target_service_to_ce_map_wlan_wcn7850[] = {
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
|
|
|
|
__cpu_to_le32(4),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
|
|
|
|
/* (Additions here) */
|
|
|
|
|
|
|
|
{ /* must be last */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
2025-03-21 16:22:41 +05:30
|
|
|
static const struct ce_pipe_config ath12k_target_ce_config_wlan_ipq5332[] = {
|
|
|
|
/* host->target HTC control and raw streams */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(0),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* target->host HTT */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(1),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* target->host WMI + HTC control */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(2),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* host->target WMI */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(3),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* host->target HTT */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(4),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(256),
|
|
|
|
.nbytes_max = __cpu_to_le32(256),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* Target -> host PKTLOG */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(5),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* Reserved for target autonomous HIF_memcpy */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(6),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* CE7 Reserved for CV Prefetch */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(7),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* CE8 Reserved for target generic HIF memcpy */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(8),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(16384),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* CE9 WMI logging/CFR/Spectral/Radar/ */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(9),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_IN),
|
|
|
|
.nentries = __cpu_to_le32(32),
|
|
|
|
.nbytes_max = __cpu_to_le32(2048),
|
|
|
|
.flags = __cpu_to_le32(CE_ATTR_FLAGS),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* Unused TBD */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(10),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_NONE),
|
|
|
|
.nentries = __cpu_to_le32(0),
|
|
|
|
.nbytes_max = __cpu_to_le32(0),
|
|
|
|
.flags = __cpu_to_le32(0),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
/* Unused TBD */
|
|
|
|
{
|
|
|
|
.pipenum = __cpu_to_le32(11),
|
|
|
|
.pipedir = __cpu_to_le32(PIPEDIR_NONE),
|
|
|
|
.nentries = __cpu_to_le32(0),
|
|
|
|
.nbytes_max = __cpu_to_le32(0),
|
|
|
|
.flags = __cpu_to_le32(0),
|
|
|
|
.reserved = __cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct service_to_pipe ath12k_target_service_to_ce_map_wlan_ipq5332[] = {
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(3),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(2),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_OUT),
|
|
|
|
__cpu_to_le32(4),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(1),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_PKT_LOG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(5),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_DIAG),
|
|
|
|
__cpu_to_le32(PIPEDIR_IN),
|
|
|
|
__cpu_to_le32(9),
|
|
|
|
},
|
|
|
|
/* (Additions here) */
|
|
|
|
|
|
|
|
{ /* must be last */
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
__cpu_to_le32(0),
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static const struct ath12k_hw_ring_mask ath12k_hw_ring_mask_qcn9274 = {
|
|
|
|
.tx = {
|
|
|
|
ATH12K_TX_RING_MASK_0,
|
|
|
|
ATH12K_TX_RING_MASK_1,
|
|
|
|
ATH12K_TX_RING_MASK_2,
|
|
|
|
ATH12K_TX_RING_MASK_3,
|
|
|
|
},
|
|
|
|
.rx_mon_dest = {
|
2024-12-23 11:31:32 +05:30
|
|
|
0, 0, 0, 0,
|
|
|
|
0, 0, 0, 0,
|
|
|
|
ATH12K_RX_MON_RING_MASK_0,
|
|
|
|
ATH12K_RX_MON_RING_MASK_1,
|
|
|
|
ATH12K_RX_MON_RING_MASK_2,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
.rx = {
|
|
|
|
0, 0, 0, 0,
|
|
|
|
ATH12K_RX_RING_MASK_0,
|
|
|
|
ATH12K_RX_RING_MASK_1,
|
|
|
|
ATH12K_RX_RING_MASK_2,
|
|
|
|
ATH12K_RX_RING_MASK_3,
|
|
|
|
},
|
|
|
|
.rx_err = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_RX_ERR_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.rx_wbm_rel = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_RX_WBM_REL_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.reo_status = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_REO_STATUS_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.host2rxdma = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_HOST2RXDMA_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.tx_mon_dest = {
|
2024-05-20 12:30:44 +05:30
|
|
|
0, 0, 0,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
2025-03-21 16:22:41 +05:30
|
|
|
static const struct ath12k_hw_ring_mask ath12k_hw_ring_mask_ipq5332 = {
|
|
|
|
.tx = {
|
|
|
|
ATH12K_TX_RING_MASK_0,
|
|
|
|
ATH12K_TX_RING_MASK_1,
|
|
|
|
ATH12K_TX_RING_MASK_2,
|
|
|
|
ATH12K_TX_RING_MASK_3,
|
|
|
|
},
|
|
|
|
.rx_mon_dest = {
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
ATH12K_RX_MON_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.rx = {
|
|
|
|
0, 0, 0, 0,
|
|
|
|
ATH12K_RX_RING_MASK_0,
|
|
|
|
ATH12K_RX_RING_MASK_1,
|
|
|
|
ATH12K_RX_RING_MASK_2,
|
|
|
|
ATH12K_RX_RING_MASK_3,
|
|
|
|
},
|
|
|
|
.rx_err = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_RX_ERR_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.rx_wbm_rel = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_RX_WBM_REL_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.reo_status = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_REO_STATUS_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.host2rxdma = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_HOST2RXDMA_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.tx_mon_dest = {
|
|
|
|
ATH12K_TX_MON_RING_MASK_0,
|
|
|
|
ATH12K_TX_MON_RING_MASK_1,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static const struct ath12k_hw_ring_mask ath12k_hw_ring_mask_wcn7850 = {
|
|
|
|
.tx = {
|
|
|
|
ATH12K_TX_RING_MASK_0,
|
wifi: ath12k: Fix tx completion ring (WBM2SW) setup failure
We observe intermittent ping failures from the access point (AP) to
station (STA) in any mode (AP-STA or Mesh) configured. Specifically,
the transmission completion status is not received at tx completion
ring id 4 (WBM2SW ring4) for the packets transmitted via TCL DATA
ring id 3. This prevents freeing up tx descriptors and leads
to buffer exhaustion.
Currently, during initialization of the WBM2SW ring, we are directly
mapping the ring number to the ring mask to obtain the ring mask
group index. This approach is causing setup failures for WBM2SW
ring 4. Similarly, during runtime, when receiving incoming
transmission completion status, the validation of the ring number by
mapping the interrupted ring mask. This is resulting in
validation failure. Thereby preventing entry into the completion
handler ath12k_dp_tx_completion_handler().
The existing design assumed that the ring numbers would always be
sequential and could be directly mapped with the ring mask. However,
this assumption does not hold true for WBM2SW ring 4. Therefore,
modify the design such that, instead of mapping the ring number,
the ring ID is mapped with the ring mask.
According to this design:
1. During initialization of the WBM2SW ring, mapping the ring ID
to the ring mask will ensure obtaining the correct ring mask group
ID.
2. During runtime, validating the interrupted ring mask group ID
within the transmission completion group is sufficient. This
approach allows the ring ID to be derived from the interrupted ring
mask and enables entry into the completion handler.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Nithyanantham Paramasivam <quic_nithp@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240510070427.206152-1-quic_nithp@quicinc.com
2024-05-10 12:34:27 +05:30
|
|
|
ATH12K_TX_RING_MASK_1,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
ATH12K_TX_RING_MASK_2,
|
|
|
|
},
|
|
|
|
.rx_mon_dest = {
|
|
|
|
},
|
2025-04-21 10:34:36 +08:00
|
|
|
.rx_mon_status = {
|
|
|
|
0, 0, 0, 0,
|
|
|
|
ATH12K_RX_MON_STATUS_RING_MASK_0,
|
|
|
|
ATH12K_RX_MON_STATUS_RING_MASK_1,
|
|
|
|
ATH12K_RX_MON_STATUS_RING_MASK_2,
|
|
|
|
},
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.rx = {
|
|
|
|
0, 0, 0,
|
|
|
|
ATH12K_RX_RING_MASK_0,
|
|
|
|
ATH12K_RX_RING_MASK_1,
|
|
|
|
ATH12K_RX_RING_MASK_2,
|
|
|
|
ATH12K_RX_RING_MASK_3,
|
|
|
|
},
|
|
|
|
.rx_err = {
|
|
|
|
ATH12K_RX_ERR_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.rx_wbm_rel = {
|
|
|
|
ATH12K_RX_WBM_REL_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.reo_status = {
|
|
|
|
ATH12K_REO_STATUS_RING_MASK_0,
|
|
|
|
},
|
|
|
|
.host2rxdma = {
|
|
|
|
},
|
|
|
|
.tx_mon_dest = {
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ath12k_hw_regs qcn9274_v1_regs = {
|
|
|
|
/* SW2TCL(x) R0 ring configuration address */
|
|
|
|
.hal_tcl1_ring_id = 0x00000908,
|
|
|
|
.hal_tcl1_ring_misc = 0x00000910,
|
|
|
|
.hal_tcl1_ring_tp_addr_lsb = 0x0000091c,
|
|
|
|
.hal_tcl1_ring_tp_addr_msb = 0x00000920,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000930,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000934,
|
|
|
|
.hal_tcl1_ring_msi1_base_lsb = 0x00000948,
|
|
|
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
|
|
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
|
|
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
2025-03-21 16:22:40 +05:30
|
|
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
|
|
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
|
|
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
|
|
|
/* TCL STATUS ring address */
|
|
|
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
|
|
|
|
|
|
|
.hal_wbm_idle_ring_base_lsb = 0x00000d0c,
|
|
|
|
.hal_wbm_idle_ring_misc_addr = 0x00000d1c,
|
|
|
|
.hal_wbm_r0_idle_list_cntl_addr = 0x00000210,
|
|
|
|
.hal_wbm_r0_idle_list_size_addr = 0x00000214,
|
|
|
|
.hal_wbm_scattered_ring_base_lsb = 0x00000220,
|
|
|
|
.hal_wbm_scattered_ring_base_msb = 0x00000224,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix0 = 0x00000230,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix1 = 0x00000234,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix0 = 0x00000240,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix1 = 0x00000244,
|
|
|
|
.hal_wbm_scattered_desc_ptr_hp_addr = 0x0000024c,
|
|
|
|
|
|
|
|
.hal_wbm_sw_release_ring_base_lsb = 0x0000034c,
|
|
|
|
.hal_wbm_sw1_release_ring_base_lsb = 0x000003c4,
|
|
|
|
.hal_wbm0_release_ring_base_lsb = 0x00000dd8,
|
|
|
|
.hal_wbm1_release_ring_base_lsb = 0x00000e50,
|
|
|
|
|
|
|
|
/* PCIe base address */
|
|
|
|
.pcie_qserdes_sysclk_en_sel = 0x01e0c0a8,
|
|
|
|
.pcie_pcs_osc_dtct_config_base = 0x01e0d45c,
|
|
|
|
|
|
|
|
/* PPE release ring address */
|
|
|
|
.hal_ppe_rel_ring_base = 0x0000043c,
|
|
|
|
|
|
|
|
/* REO DEST ring address */
|
|
|
|
.hal_reo2_ring_base = 0x0000055c,
|
|
|
|
.hal_reo1_misc_ctrl_addr = 0x00000b7c,
|
|
|
|
.hal_reo1_sw_cookie_cfg0 = 0x00000050,
|
|
|
|
.hal_reo1_sw_cookie_cfg1 = 0x00000054,
|
|
|
|
.hal_reo1_qdesc_lut_base0 = 0x00000058,
|
|
|
|
.hal_reo1_qdesc_lut_base1 = 0x0000005c,
|
|
|
|
.hal_reo1_ring_base_lsb = 0x000004e4,
|
|
|
|
.hal_reo1_ring_base_msb = 0x000004e8,
|
|
|
|
.hal_reo1_ring_id = 0x000004ec,
|
|
|
|
.hal_reo1_ring_misc = 0x000004f4,
|
|
|
|
.hal_reo1_ring_hp_addr_lsb = 0x000004f8,
|
|
|
|
.hal_reo1_ring_hp_addr_msb = 0x000004fc,
|
|
|
|
.hal_reo1_ring_producer_int_setup = 0x00000508,
|
|
|
|
.hal_reo1_ring_msi1_base_lsb = 0x0000052C,
|
|
|
|
.hal_reo1_ring_msi1_base_msb = 0x00000530,
|
|
|
|
.hal_reo1_ring_msi1_data = 0x00000534,
|
|
|
|
.hal_reo1_aging_thres_ix0 = 0x00000b08,
|
|
|
|
.hal_reo1_aging_thres_ix1 = 0x00000b0c,
|
|
|
|
.hal_reo1_aging_thres_ix2 = 0x00000b10,
|
|
|
|
.hal_reo1_aging_thres_ix3 = 0x00000b14,
|
|
|
|
|
|
|
|
/* REO Exception ring address */
|
|
|
|
.hal_reo2_sw0_ring_base = 0x000008a4,
|
|
|
|
|
|
|
|
/* REO Reinject ring address */
|
|
|
|
.hal_sw2reo_ring_base = 0x00000304,
|
|
|
|
.hal_sw2reo1_ring_base = 0x0000037c,
|
|
|
|
|
|
|
|
/* REO cmd ring address */
|
|
|
|
.hal_reo_cmd_ring_base = 0x0000028c,
|
|
|
|
|
|
|
|
/* REO status ring address */
|
|
|
|
.hal_reo_status_ring_base = 0x00000a84,
|
2025-03-21 16:22:40 +05:30
|
|
|
|
|
|
|
/* 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,
|
2025-05-23 10:23:05 +08:00
|
|
|
|
|
|
|
.gcc_gcc_pcie_hot_rst = 0x1e38338,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ath12k_hw_regs qcn9274_v2_regs = {
|
|
|
|
/* SW2TCL(x) R0 ring configuration address */
|
|
|
|
.hal_tcl1_ring_id = 0x00000908,
|
|
|
|
.hal_tcl1_ring_misc = 0x00000910,
|
|
|
|
.hal_tcl1_ring_tp_addr_lsb = 0x0000091c,
|
|
|
|
.hal_tcl1_ring_tp_addr_msb = 0x00000920,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000930,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000934,
|
|
|
|
.hal_tcl1_ring_msi1_base_lsb = 0x00000948,
|
|
|
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
|
|
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
|
|
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
2025-03-21 16:22:40 +05:30
|
|
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
|
|
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
|
|
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
|
|
|
/* TCL STATUS ring address */
|
|
|
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
|
|
|
|
|
|
|
/* WBM idle link ring address */
|
|
|
|
.hal_wbm_idle_ring_base_lsb = 0x00000d3c,
|
|
|
|
.hal_wbm_idle_ring_misc_addr = 0x00000d4c,
|
|
|
|
.hal_wbm_r0_idle_list_cntl_addr = 0x00000240,
|
|
|
|
.hal_wbm_r0_idle_list_size_addr = 0x00000244,
|
|
|
|
.hal_wbm_scattered_ring_base_lsb = 0x00000250,
|
|
|
|
.hal_wbm_scattered_ring_base_msb = 0x00000254,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix0 = 0x00000260,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix1 = 0x00000264,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix0 = 0x00000270,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix1 = 0x00000274,
|
|
|
|
.hal_wbm_scattered_desc_ptr_hp_addr = 0x0000027c,
|
|
|
|
|
|
|
|
/* SW2WBM release ring address */
|
|
|
|
.hal_wbm_sw_release_ring_base_lsb = 0x0000037c,
|
|
|
|
.hal_wbm_sw1_release_ring_base_lsb = 0x000003f4,
|
|
|
|
|
|
|
|
/* WBM2SW release ring address */
|
|
|
|
.hal_wbm0_release_ring_base_lsb = 0x00000e08,
|
|
|
|
.hal_wbm1_release_ring_base_lsb = 0x00000e80,
|
|
|
|
|
|
|
|
/* PCIe base address */
|
|
|
|
.pcie_qserdes_sysclk_en_sel = 0x01e0c0a8,
|
|
|
|
.pcie_pcs_osc_dtct_config_base = 0x01e0d45c,
|
|
|
|
|
|
|
|
/* PPE release ring address */
|
|
|
|
.hal_ppe_rel_ring_base = 0x0000046c,
|
|
|
|
|
|
|
|
/* REO DEST ring address */
|
|
|
|
.hal_reo2_ring_base = 0x00000578,
|
|
|
|
.hal_reo1_misc_ctrl_addr = 0x00000b9c,
|
|
|
|
.hal_reo1_sw_cookie_cfg0 = 0x0000006c,
|
|
|
|
.hal_reo1_sw_cookie_cfg1 = 0x00000070,
|
|
|
|
.hal_reo1_qdesc_lut_base0 = 0x00000074,
|
|
|
|
.hal_reo1_qdesc_lut_base1 = 0x00000078,
|
2025-04-02 20:55:27 +05:30
|
|
|
.hal_reo1_qdesc_addr = 0x0000007c,
|
|
|
|
.hal_reo1_qdesc_max_peerid = 0x00000088,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.hal_reo1_ring_base_lsb = 0x00000500,
|
|
|
|
.hal_reo1_ring_base_msb = 0x00000504,
|
|
|
|
.hal_reo1_ring_id = 0x00000508,
|
|
|
|
.hal_reo1_ring_misc = 0x00000510,
|
|
|
|
.hal_reo1_ring_hp_addr_lsb = 0x00000514,
|
|
|
|
.hal_reo1_ring_hp_addr_msb = 0x00000518,
|
|
|
|
.hal_reo1_ring_producer_int_setup = 0x00000524,
|
|
|
|
.hal_reo1_ring_msi1_base_lsb = 0x00000548,
|
|
|
|
.hal_reo1_ring_msi1_base_msb = 0x0000054C,
|
|
|
|
.hal_reo1_ring_msi1_data = 0x00000550,
|
|
|
|
.hal_reo1_aging_thres_ix0 = 0x00000B28,
|
|
|
|
.hal_reo1_aging_thres_ix1 = 0x00000B2C,
|
|
|
|
.hal_reo1_aging_thres_ix2 = 0x00000B30,
|
|
|
|
.hal_reo1_aging_thres_ix3 = 0x00000B34,
|
|
|
|
|
|
|
|
/* REO Exception ring address */
|
|
|
|
.hal_reo2_sw0_ring_base = 0x000008c0,
|
|
|
|
|
|
|
|
/* REO Reinject ring address */
|
|
|
|
.hal_sw2reo_ring_base = 0x00000320,
|
|
|
|
.hal_sw2reo1_ring_base = 0x00000398,
|
|
|
|
|
|
|
|
/* REO cmd ring address */
|
|
|
|
.hal_reo_cmd_ring_base = 0x000002A8,
|
|
|
|
|
|
|
|
/* REO status ring address */
|
|
|
|
.hal_reo_status_ring_base = 0x00000aa0,
|
2025-03-21 16:22:40 +05:30
|
|
|
|
|
|
|
/* 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,
|
2025-05-23 10:23:05 +08:00
|
|
|
|
|
|
|
.gcc_gcc_pcie_hot_rst = 0x1e38338,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
2025-03-21 16:22:41 +05:30
|
|
|
static const struct ath12k_hw_regs ipq5332_regs = {
|
|
|
|
/* SW2TCL(x) R0 ring configuration address */
|
|
|
|
.hal_tcl1_ring_id = 0x00000918,
|
|
|
|
.hal_tcl1_ring_misc = 0x00000920,
|
|
|
|
.hal_tcl1_ring_tp_addr_lsb = 0x0000092c,
|
|
|
|
.hal_tcl1_ring_tp_addr_msb = 0x00000930,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000940,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000944,
|
|
|
|
.hal_tcl1_ring_msi1_base_lsb = 0x00000958,
|
|
|
|
.hal_tcl1_ring_msi1_base_msb = 0x0000095c,
|
|
|
|
.hal_tcl1_ring_base_lsb = 0x00000910,
|
|
|
|
.hal_tcl1_ring_base_msb = 0x00000914,
|
|
|
|
.hal_tcl1_ring_msi1_data = 0x00000960,
|
|
|
|
.hal_tcl2_ring_base_lsb = 0x00000988,
|
|
|
|
.hal_tcl_ring_base_lsb = 0x00000b68,
|
|
|
|
|
|
|
|
/* TCL STATUS ring address */
|
|
|
|
.hal_tcl_status_ring_base_lsb = 0x00000d48,
|
|
|
|
|
|
|
|
/* REO DEST ring address */
|
|
|
|
.hal_reo2_ring_base = 0x00000578,
|
|
|
|
.hal_reo1_misc_ctrl_addr = 0x00000b9c,
|
|
|
|
.hal_reo1_sw_cookie_cfg0 = 0x0000006c,
|
|
|
|
.hal_reo1_sw_cookie_cfg1 = 0x00000070,
|
|
|
|
.hal_reo1_qdesc_lut_base0 = 0x00000074,
|
|
|
|
.hal_reo1_qdesc_lut_base1 = 0x00000078,
|
|
|
|
.hal_reo1_ring_base_lsb = 0x00000500,
|
|
|
|
.hal_reo1_ring_base_msb = 0x00000504,
|
|
|
|
.hal_reo1_ring_id = 0x00000508,
|
|
|
|
.hal_reo1_ring_misc = 0x00000510,
|
|
|
|
.hal_reo1_ring_hp_addr_lsb = 0x00000514,
|
|
|
|
.hal_reo1_ring_hp_addr_msb = 0x00000518,
|
|
|
|
.hal_reo1_ring_producer_int_setup = 0x00000524,
|
|
|
|
.hal_reo1_ring_msi1_base_lsb = 0x00000548,
|
|
|
|
.hal_reo1_ring_msi1_base_msb = 0x0000054C,
|
|
|
|
.hal_reo1_ring_msi1_data = 0x00000550,
|
|
|
|
.hal_reo1_aging_thres_ix0 = 0x00000B28,
|
|
|
|
.hal_reo1_aging_thres_ix1 = 0x00000B2C,
|
|
|
|
.hal_reo1_aging_thres_ix2 = 0x00000B30,
|
|
|
|
.hal_reo1_aging_thres_ix3 = 0x00000B34,
|
|
|
|
|
|
|
|
/* REO Exception ring address */
|
|
|
|
.hal_reo2_sw0_ring_base = 0x000008c0,
|
|
|
|
|
|
|
|
/* REO Reinject ring address */
|
|
|
|
.hal_sw2reo_ring_base = 0x00000320,
|
|
|
|
.hal_sw2reo1_ring_base = 0x00000398,
|
|
|
|
|
|
|
|
/* REO cmd ring address */
|
|
|
|
.hal_reo_cmd_ring_base = 0x000002A8,
|
|
|
|
|
|
|
|
/* REO status ring address */
|
|
|
|
.hal_reo_status_ring_base = 0x00000aa0,
|
|
|
|
|
|
|
|
/* WBM idle link ring address */
|
|
|
|
.hal_wbm_idle_ring_base_lsb = 0x00000d3c,
|
|
|
|
.hal_wbm_idle_ring_misc_addr = 0x00000d4c,
|
|
|
|
.hal_wbm_r0_idle_list_cntl_addr = 0x00000240,
|
|
|
|
.hal_wbm_r0_idle_list_size_addr = 0x00000244,
|
|
|
|
.hal_wbm_scattered_ring_base_lsb = 0x00000250,
|
|
|
|
.hal_wbm_scattered_ring_base_msb = 0x00000254,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix0 = 0x00000260,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix1 = 0x00000264,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix0 = 0x00000270,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix1 = 0x00000274,
|
|
|
|
.hal_wbm_scattered_desc_ptr_hp_addr = 0x0000027c,
|
|
|
|
|
|
|
|
/* SW2WBM release ring address */
|
|
|
|
.hal_wbm_sw_release_ring_base_lsb = 0x0000037c,
|
|
|
|
|
|
|
|
/* WBM2SW release ring address */
|
|
|
|
.hal_wbm0_release_ring_base_lsb = 0x00000e08,
|
|
|
|
.hal_wbm1_release_ring_base_lsb = 0x00000e80,
|
|
|
|
|
|
|
|
/* PPE release ring address */
|
|
|
|
.hal_ppe_rel_ring_base = 0x0000046c,
|
|
|
|
|
|
|
|
/* CE address */
|
2025-03-21 16:22:43 +05:30
|
|
|
.hal_umac_ce0_src_reg_base = 0x00740000 -
|
|
|
|
HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.hal_umac_ce0_dest_reg_base = 0x00741000 -
|
|
|
|
HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.hal_umac_ce1_src_reg_base = 0x00742000 -
|
|
|
|
HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.hal_umac_ce1_dest_reg_base = 0x00743000 -
|
|
|
|
HAL_IPQ5332_CE_WFSS_REG_BASE,
|
2025-03-21 16:22:41 +05:30
|
|
|
};
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static const struct ath12k_hw_regs wcn7850_regs = {
|
|
|
|
/* SW2TCL(x) R0 ring configuration address */
|
|
|
|
.hal_tcl1_ring_id = 0x00000908,
|
|
|
|
.hal_tcl1_ring_misc = 0x00000910,
|
|
|
|
.hal_tcl1_ring_tp_addr_lsb = 0x0000091c,
|
|
|
|
.hal_tcl1_ring_tp_addr_msb = 0x00000920,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000930,
|
|
|
|
.hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000934,
|
|
|
|
.hal_tcl1_ring_msi1_base_lsb = 0x00000948,
|
|
|
|
.hal_tcl1_ring_msi1_base_msb = 0x0000094c,
|
|
|
|
.hal_tcl1_ring_msi1_data = 0x00000950,
|
|
|
|
.hal_tcl_ring_base_lsb = 0x00000b58,
|
2025-03-21 16:22:40 +05:30
|
|
|
.hal_tcl1_ring_base_lsb = 0x00000900,
|
|
|
|
.hal_tcl1_ring_base_msb = 0x00000904,
|
|
|
|
.hal_tcl2_ring_base_lsb = 0x00000978,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
|
|
|
/* TCL STATUS ring address */
|
|
|
|
.hal_tcl_status_ring_base_lsb = 0x00000d38,
|
|
|
|
|
|
|
|
.hal_wbm_idle_ring_base_lsb = 0x00000d3c,
|
|
|
|
.hal_wbm_idle_ring_misc_addr = 0x00000d4c,
|
|
|
|
.hal_wbm_r0_idle_list_cntl_addr = 0x00000240,
|
|
|
|
.hal_wbm_r0_idle_list_size_addr = 0x00000244,
|
|
|
|
.hal_wbm_scattered_ring_base_lsb = 0x00000250,
|
|
|
|
.hal_wbm_scattered_ring_base_msb = 0x00000254,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix0 = 0x00000260,
|
|
|
|
.hal_wbm_scattered_desc_head_info_ix1 = 0x00000264,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix0 = 0x00000270,
|
|
|
|
.hal_wbm_scattered_desc_tail_info_ix1 = 0x00000274,
|
|
|
|
.hal_wbm_scattered_desc_ptr_hp_addr = 0x00000027c,
|
|
|
|
|
|
|
|
.hal_wbm_sw_release_ring_base_lsb = 0x0000037c,
|
|
|
|
.hal_wbm_sw1_release_ring_base_lsb = 0x00000284,
|
|
|
|
.hal_wbm0_release_ring_base_lsb = 0x00000e08,
|
|
|
|
.hal_wbm1_release_ring_base_lsb = 0x00000e80,
|
|
|
|
|
|
|
|
/* PCIe base address */
|
|
|
|
.pcie_qserdes_sysclk_en_sel = 0x01e0e0a8,
|
|
|
|
.pcie_pcs_osc_dtct_config_base = 0x01e0f45c,
|
|
|
|
|
|
|
|
/* PPE release ring address */
|
|
|
|
.hal_ppe_rel_ring_base = 0x0000043c,
|
|
|
|
|
|
|
|
/* REO DEST ring address */
|
|
|
|
.hal_reo2_ring_base = 0x0000055c,
|
|
|
|
.hal_reo1_misc_ctrl_addr = 0x00000b7c,
|
|
|
|
.hal_reo1_sw_cookie_cfg0 = 0x00000050,
|
|
|
|
.hal_reo1_sw_cookie_cfg1 = 0x00000054,
|
|
|
|
.hal_reo1_qdesc_lut_base0 = 0x00000058,
|
|
|
|
.hal_reo1_qdesc_lut_base1 = 0x0000005c,
|
|
|
|
.hal_reo1_ring_base_lsb = 0x000004e4,
|
|
|
|
.hal_reo1_ring_base_msb = 0x000004e8,
|
|
|
|
.hal_reo1_ring_id = 0x000004ec,
|
|
|
|
.hal_reo1_ring_misc = 0x000004f4,
|
|
|
|
.hal_reo1_ring_hp_addr_lsb = 0x000004f8,
|
|
|
|
.hal_reo1_ring_hp_addr_msb = 0x000004fc,
|
|
|
|
.hal_reo1_ring_producer_int_setup = 0x00000508,
|
|
|
|
.hal_reo1_ring_msi1_base_lsb = 0x0000052C,
|
|
|
|
.hal_reo1_ring_msi1_base_msb = 0x00000530,
|
|
|
|
.hal_reo1_ring_msi1_data = 0x00000534,
|
|
|
|
.hal_reo1_aging_thres_ix0 = 0x00000b08,
|
|
|
|
.hal_reo1_aging_thres_ix1 = 0x00000b0c,
|
|
|
|
.hal_reo1_aging_thres_ix2 = 0x00000b10,
|
|
|
|
.hal_reo1_aging_thres_ix3 = 0x00000b14,
|
|
|
|
|
|
|
|
/* REO Exception ring address */
|
|
|
|
.hal_reo2_sw0_ring_base = 0x000008a4,
|
|
|
|
|
|
|
|
/* REO Reinject ring address */
|
|
|
|
.hal_sw2reo_ring_base = 0x00000304,
|
|
|
|
.hal_sw2reo1_ring_base = 0x0000037c,
|
|
|
|
|
|
|
|
/* REO cmd ring address */
|
|
|
|
.hal_reo_cmd_ring_base = 0x0000028c,
|
|
|
|
|
|
|
|
/* REO status ring address */
|
|
|
|
.hal_reo_status_ring_base = 0x00000a84,
|
2025-03-21 16:22:40 +05:30
|
|
|
|
|
|
|
/* 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,
|
2025-05-23 10:23:05 +08:00
|
|
|
|
|
|
|
.gcc_gcc_pcie_hot_rst = 0x1e40304,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ath12k_hw_hal_params ath12k_hw_hal_params_qcn9274 = {
|
|
|
|
.rx_buf_rbm = HAL_RX_BUF_RBM_SW3_BM,
|
|
|
|
.wbm2sw_cc_enable = HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW0_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW1_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW2_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW3_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW4_EN,
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ath12k_hw_hal_params ath12k_hw_hal_params_wcn7850 = {
|
|
|
|
.rx_buf_rbm = HAL_RX_BUF_RBM_SW1_BM,
|
|
|
|
.wbm2sw_cc_enable = HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW0_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW2_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW3_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW4_EN,
|
|
|
|
};
|
|
|
|
|
2025-03-21 16:22:41 +05:30
|
|
|
static const struct ath12k_hw_hal_params ath12k_hw_hal_params_ipq5332 = {
|
|
|
|
.rx_buf_rbm = HAL_RX_BUF_RBM_SW3_BM,
|
|
|
|
.wbm2sw_cc_enable = HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW0_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW1_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW2_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW3_EN |
|
|
|
|
HAL_WBM_SW_COOKIE_CONV_CFG_WBM2SW4_EN,
|
|
|
|
};
|
|
|
|
|
2025-03-21 16:22:43 +05:30
|
|
|
static const struct ce_ie_addr ath12k_ce_ie_addr_ipq5332 = {
|
|
|
|
.ie1_reg_addr = CE_HOST_IE_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.ie2_reg_addr = CE_HOST_IE_2_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.ie3_reg_addr = CE_HOST_IE_3_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
};
|
|
|
|
|
|
|
|
static const struct ce_remap ath12k_ce_remap_ipq5332 = {
|
|
|
|
.base = HAL_IPQ5332_CE_WFSS_REG_BASE,
|
|
|
|
.size = HAL_IPQ5332_CE_SIZE,
|
|
|
|
};
|
|
|
|
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
static const struct ath12k_hw_params ath12k_hw_params[] = {
|
|
|
|
{
|
|
|
|
.name = "qcn9274 hw1.0",
|
|
|
|
.hw_rev = ATH12K_HW_QCN9274_HW10,
|
|
|
|
.fw = {
|
|
|
|
.dir = "QCN9274/hw1.0",
|
|
|
|
.board_size = 256 * 1024,
|
|
|
|
.cal_offset = 128 * 1024,
|
2025-03-21 16:22:42 +05:30
|
|
|
.m3_loader = ath12k_m3_fw_loader_driver,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
.max_radios = 1,
|
|
|
|
.single_pdev_only = false,
|
|
|
|
.qmi_service_ins_id = ATH12K_QMI_WLFW_SERVICE_INS_ID_V01_QCN9274,
|
|
|
|
.internal_sleep_clock = false,
|
|
|
|
|
|
|
|
.hw_ops = &qcn9274_ops,
|
|
|
|
.ring_mask = &ath12k_hw_ring_mask_qcn9274,
|
|
|
|
.regs = &qcn9274_v1_regs,
|
|
|
|
|
|
|
|
.host_ce_config = ath12k_host_ce_config_qcn9274,
|
|
|
|
.ce_count = 16,
|
|
|
|
.target_ce_config = ath12k_target_ce_config_wlan_qcn9274,
|
|
|
|
.target_ce_count = 12,
|
|
|
|
.svc_to_ce_map = ath12k_target_service_to_ce_map_wlan_qcn9274,
|
|
|
|
.svc_to_ce_map_len = 18,
|
|
|
|
|
|
|
|
.hal_params = &ath12k_hw_hal_params_qcn9274,
|
|
|
|
|
|
|
|
.rxdma1_enable = false,
|
2024-05-04 14:45:17 -07:00
|
|
|
.num_rxdma_per_pdev = 1,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.num_rxdma_dst_ring = 0,
|
|
|
|
.rx_mac_buf_ring = false,
|
|
|
|
.vdev_start_delay = false,
|
|
|
|
|
|
|
|
.interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
2023-10-13 12:30:06 +05:30
|
|
|
BIT(NL80211_IFTYPE_AP) |
|
2024-05-17 10:00:30 +03:00
|
|
|
BIT(NL80211_IFTYPE_MESH_POINT) |
|
|
|
|
BIT(NL80211_IFTYPE_AP_VLAN),
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.supports_monitor = false,
|
|
|
|
|
|
|
|
.idle_ps = false,
|
|
|
|
.download_calib = true,
|
|
|
|
.supports_suspend = false,
|
|
|
|
.tcl_ring_retry = true,
|
2025-04-02 20:55:29 +05:30
|
|
|
.reoq_lut_support = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.supports_shadow_regs = false,
|
|
|
|
|
|
|
|
.num_tcl_banks = 48,
|
|
|
|
.max_tx_ring = 4,
|
|
|
|
|
|
|
|
.mhi_config = &ath12k_mhi_config_qcn9274,
|
|
|
|
|
|
|
|
.wmi_init = ath12k_wmi_init_qcn9274,
|
|
|
|
|
|
|
|
.hal_ops = &hal_qcn9274_ops,
|
|
|
|
|
2023-04-21 12:44:56 +03:00
|
|
|
.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
|
2023-09-06 19:04:12 +08:00
|
|
|
|
|
|
|
.rfkill_pin = 0,
|
|
|
|
.rfkill_cfg = 0,
|
|
|
|
.rfkill_on_level = 0,
|
2023-10-10 10:27:20 +03:00
|
|
|
|
2024-07-17 14:26:04 +05:30
|
|
|
.rddm_size = 0x600000,
|
2024-01-16 14:33:07 +02:00
|
|
|
|
|
|
|
.def_num_link = 0,
|
|
|
|
.max_mlo_peer = 256,
|
2024-01-29 12:27:23 +05:30
|
|
|
|
|
|
|
.otp_board_id_register = QCN9274_QFPROM_RAW_RFA_PDET_ROW13_LSB,
|
2024-02-01 11:58:30 +08:00
|
|
|
|
|
|
|
.supports_sta_ps = false,
|
2024-04-22 11:30:50 +08:00
|
|
|
|
|
|
|
.acpi_guid = NULL,
|
2024-05-08 10:36:55 -07:00
|
|
|
.supports_dynamic_smps_6ghz = true,
|
2024-08-01 18:04:07 +03:00
|
|
|
|
|
|
|
.iova_mask = 0,
|
2024-09-04 17:20:14 -07:00
|
|
|
|
2024-07-09 11:28:17 +05:30
|
|
|
.supports_aspm = false,
|
2025-03-21 16:22:43 +05:30
|
|
|
|
|
|
|
.ce_ie_addr = NULL,
|
|
|
|
.ce_remap = NULL,
|
2025-03-21 16:22:44 +05:30
|
|
|
.bdf_addr_offset = 0,
|
2025-04-01 10:08:38 +08:00
|
|
|
|
|
|
|
.current_cc_support = false,
|
2025-04-09 10:26:41 +08:00
|
|
|
|
|
|
|
.dp_primary_link_only = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
.name = "wcn7850 hw2.0",
|
|
|
|
.hw_rev = ATH12K_HW_WCN7850_HW20,
|
|
|
|
|
|
|
|
.fw = {
|
|
|
|
.dir = "WCN7850/hw2.0",
|
|
|
|
.board_size = 256 * 1024,
|
|
|
|
.cal_offset = 256 * 1024,
|
2025-03-21 16:22:42 +05:30
|
|
|
.m3_loader = ath12k_m3_fw_loader_driver,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
.max_radios = 1,
|
|
|
|
.single_pdev_only = true,
|
|
|
|
.qmi_service_ins_id = ATH12K_QMI_WLFW_SERVICE_INS_ID_V01_WCN7850,
|
|
|
|
.internal_sleep_clock = true,
|
|
|
|
|
|
|
|
.hw_ops = &wcn7850_ops,
|
|
|
|
.ring_mask = &ath12k_hw_ring_mask_wcn7850,
|
|
|
|
.regs = &wcn7850_regs,
|
|
|
|
|
|
|
|
.host_ce_config = ath12k_host_ce_config_wcn7850,
|
|
|
|
.ce_count = 9,
|
|
|
|
.target_ce_config = ath12k_target_ce_config_wlan_wcn7850,
|
|
|
|
.target_ce_count = 9,
|
|
|
|
.svc_to_ce_map = ath12k_target_service_to_ce_map_wlan_wcn7850,
|
|
|
|
.svc_to_ce_map_len = 14,
|
|
|
|
|
|
|
|
.hal_params = &ath12k_hw_hal_params_wcn7850,
|
|
|
|
|
|
|
|
.rxdma1_enable = false,
|
2024-05-04 14:45:17 -07:00
|
|
|
.num_rxdma_per_pdev = 2,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.num_rxdma_dst_ring = 1,
|
|
|
|
.rx_mac_buf_ring = true,
|
|
|
|
.vdev_start_delay = true,
|
|
|
|
|
2023-12-01 18:09:48 +02:00
|
|
|
.interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
2024-02-05 19:03:31 +02:00
|
|
|
BIT(NL80211_IFTYPE_AP) |
|
|
|
|
BIT(NL80211_IFTYPE_P2P_DEVICE) |
|
|
|
|
BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
|
|
|
BIT(NL80211_IFTYPE_P2P_GO),
|
2025-04-21 10:34:44 +08:00
|
|
|
.supports_monitor = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
2023-03-17 14:25:33 +08:00
|
|
|
.idle_ps = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.download_calib = false,
|
2024-04-22 15:11:45 +03:00
|
|
|
.supports_suspend = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.tcl_ring_retry = false,
|
|
|
|
.reoq_lut_support = false,
|
|
|
|
.supports_shadow_regs = true,
|
|
|
|
|
|
|
|
.num_tcl_banks = 7,
|
|
|
|
.max_tx_ring = 3,
|
|
|
|
|
|
|
|
.mhi_config = &ath12k_mhi_config_wcn7850,
|
|
|
|
|
|
|
|
.wmi_init = ath12k_wmi_init_wcn7850,
|
|
|
|
|
|
|
|
.hal_ops = &hal_wcn7850_ops,
|
2023-04-21 12:44:56 +03:00
|
|
|
|
2023-04-21 12:44:57 +03:00
|
|
|
.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01) |
|
|
|
|
BIT(CNSS_PCIE_PERST_NO_PULL_V01),
|
2023-09-06 19:04:12 +08:00
|
|
|
|
|
|
|
.rfkill_pin = 48,
|
|
|
|
.rfkill_cfg = 0,
|
|
|
|
.rfkill_on_level = 1,
|
2023-10-10 10:27:20 +03:00
|
|
|
|
|
|
|
.rddm_size = 0x780000,
|
2024-01-16 14:33:07 +02:00
|
|
|
|
|
|
|
.def_num_link = 2,
|
|
|
|
.max_mlo_peer = 32,
|
2024-01-29 12:27:23 +05:30
|
|
|
|
|
|
|
.otp_board_id_register = 0,
|
2024-02-01 11:58:30 +08:00
|
|
|
|
|
|
|
.supports_sta_ps = true,
|
2024-04-22 11:30:50 +08:00
|
|
|
|
|
|
|
.acpi_guid = &wcn7850_uuid,
|
2024-05-08 10:36:55 -07:00
|
|
|
.supports_dynamic_smps_6ghz = false,
|
2024-08-01 18:04:07 +03:00
|
|
|
|
|
|
|
.iova_mask = ATH12K_PCIE_MAX_PAYLOAD_SIZE - 1,
|
2024-09-04 17:20:14 -07:00
|
|
|
|
2024-07-09 11:28:17 +05:30
|
|
|
.supports_aspm = true,
|
2025-03-21 16:22:43 +05:30
|
|
|
|
|
|
|
.ce_ie_addr = NULL,
|
|
|
|
.ce_remap = NULL,
|
2025-03-21 16:22:44 +05:30
|
|
|
.bdf_addr_offset = 0,
|
2025-04-01 10:08:38 +08:00
|
|
|
|
|
|
|
.current_cc_support = true,
|
2025-04-09 10:26:41 +08:00
|
|
|
|
|
|
|
.dp_primary_link_only = false,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
.name = "qcn9274 hw2.0",
|
|
|
|
.hw_rev = ATH12K_HW_QCN9274_HW20,
|
|
|
|
.fw = {
|
|
|
|
.dir = "QCN9274/hw2.0",
|
|
|
|
.board_size = 256 * 1024,
|
|
|
|
.cal_offset = 128 * 1024,
|
2025-03-21 16:22:42 +05:30
|
|
|
.m3_loader = ath12k_m3_fw_loader_driver,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
2024-01-29 12:27:23 +05:30
|
|
|
.max_radios = 2,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.single_pdev_only = false,
|
|
|
|
.qmi_service_ins_id = ATH12K_QMI_WLFW_SERVICE_INS_ID_V01_QCN9274,
|
|
|
|
.internal_sleep_clock = false,
|
|
|
|
|
|
|
|
.hw_ops = &qcn9274_ops,
|
|
|
|
.ring_mask = &ath12k_hw_ring_mask_qcn9274,
|
|
|
|
.regs = &qcn9274_v2_regs,
|
|
|
|
|
|
|
|
.host_ce_config = ath12k_host_ce_config_qcn9274,
|
|
|
|
.ce_count = 16,
|
|
|
|
.target_ce_config = ath12k_target_ce_config_wlan_qcn9274,
|
|
|
|
.target_ce_count = 12,
|
|
|
|
.svc_to_ce_map = ath12k_target_service_to_ce_map_wlan_qcn9274,
|
|
|
|
.svc_to_ce_map_len = 18,
|
|
|
|
|
|
|
|
.hal_params = &ath12k_hw_hal_params_qcn9274,
|
|
|
|
|
2024-12-23 11:31:19 +05:30
|
|
|
.rxdma1_enable = true,
|
2024-05-04 14:45:17 -07:00
|
|
|
.num_rxdma_per_pdev = 1,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.num_rxdma_dst_ring = 0,
|
|
|
|
.rx_mac_buf_ring = false,
|
|
|
|
.vdev_start_delay = false,
|
|
|
|
|
|
|
|
.interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
2023-10-13 12:30:06 +05:30
|
|
|
BIT(NL80211_IFTYPE_AP) |
|
2024-05-17 10:00:30 +03:00
|
|
|
BIT(NL80211_IFTYPE_MESH_POINT) |
|
|
|
|
BIT(NL80211_IFTYPE_AP_VLAN),
|
2025-03-24 11:55:18 +05:30
|
|
|
.supports_monitor = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
|
|
|
|
.idle_ps = false,
|
|
|
|
.download_calib = true,
|
|
|
|
.supports_suspend = false,
|
|
|
|
.tcl_ring_retry = true,
|
2025-06-09 08:48:50 +05:30
|
|
|
.reoq_lut_support = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
.supports_shadow_regs = false,
|
|
|
|
|
|
|
|
.num_tcl_banks = 48,
|
|
|
|
.max_tx_ring = 4,
|
|
|
|
|
|
|
|
.mhi_config = &ath12k_mhi_config_qcn9274,
|
|
|
|
|
|
|
|
.wmi_init = ath12k_wmi_init_qcn9274,
|
|
|
|
|
|
|
|
.hal_ops = &hal_qcn9274_ops,
|
2023-04-21 12:44:56 +03:00
|
|
|
|
|
|
|
.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
|
2023-09-06 19:04:12 +08:00
|
|
|
|
|
|
|
.rfkill_pin = 0,
|
|
|
|
.rfkill_cfg = 0,
|
|
|
|
.rfkill_on_level = 0,
|
2023-10-10 10:27:20 +03:00
|
|
|
|
2024-07-17 14:26:04 +05:30
|
|
|
.rddm_size = 0x600000,
|
2024-01-16 14:33:07 +02:00
|
|
|
|
|
|
|
.def_num_link = 0,
|
|
|
|
.max_mlo_peer = 256,
|
2024-01-29 12:27:23 +05:30
|
|
|
|
|
|
|
.otp_board_id_register = QCN9274_QFPROM_RAW_RFA_PDET_ROW13_LSB,
|
2024-02-01 11:58:30 +08:00
|
|
|
|
|
|
|
.supports_sta_ps = false,
|
2024-04-22 11:30:50 +08:00
|
|
|
|
|
|
|
.acpi_guid = NULL,
|
2024-05-08 10:36:55 -07:00
|
|
|
.supports_dynamic_smps_6ghz = true,
|
2024-08-01 18:04:07 +03:00
|
|
|
|
|
|
|
.iova_mask = 0,
|
2024-09-04 17:20:14 -07:00
|
|
|
|
2024-07-09 11:28:17 +05:30
|
|
|
.supports_aspm = false,
|
2025-03-21 16:22:43 +05:30
|
|
|
|
|
|
|
.ce_ie_addr = NULL,
|
|
|
|
.ce_remap = NULL,
|
2025-03-21 16:22:44 +05:30
|
|
|
.bdf_addr_offset = 0,
|
2025-04-01 10:08:38 +08:00
|
|
|
|
|
|
|
.current_cc_support = false,
|
2025-04-09 10:26:41 +08:00
|
|
|
|
|
|
|
.dp_primary_link_only = true,
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
},
|
2025-03-21 16:22:41 +05:30
|
|
|
{
|
|
|
|
.name = "ipq5332 hw1.0",
|
|
|
|
.hw_rev = ATH12K_HW_IPQ5332_HW10,
|
|
|
|
.fw = {
|
|
|
|
.dir = "IPQ5332/hw1.0",
|
|
|
|
.board_size = 256 * 1024,
|
|
|
|
.cal_offset = 128 * 1024,
|
2025-03-21 16:22:42 +05:30
|
|
|
.m3_loader = ath12k_m3_fw_loader_remoteproc,
|
2025-03-21 16:22:41 +05:30
|
|
|
},
|
|
|
|
.max_radios = 1,
|
|
|
|
.single_pdev_only = false,
|
|
|
|
.qmi_service_ins_id = ATH12K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ5332,
|
|
|
|
.internal_sleep_clock = false,
|
|
|
|
|
|
|
|
.hw_ops = &qcn9274_ops,
|
|
|
|
.regs = &ipq5332_regs,
|
|
|
|
.ring_mask = &ath12k_hw_ring_mask_ipq5332,
|
|
|
|
|
|
|
|
.host_ce_config = ath12k_host_ce_config_ipq5332,
|
|
|
|
.ce_count = 12,
|
|
|
|
.target_ce_config = ath12k_target_ce_config_wlan_ipq5332,
|
|
|
|
.target_ce_count = 12,
|
|
|
|
.svc_to_ce_map = ath12k_target_service_to_ce_map_wlan_ipq5332,
|
|
|
|
.svc_to_ce_map_len = 18,
|
|
|
|
|
|
|
|
.hal_params = &ath12k_hw_hal_params_ipq5332,
|
|
|
|
|
|
|
|
.rxdma1_enable = false,
|
|
|
|
.num_rxdma_per_pdev = 1,
|
|
|
|
.num_rxdma_dst_ring = 0,
|
|
|
|
.rx_mac_buf_ring = false,
|
|
|
|
.vdev_start_delay = false,
|
|
|
|
|
|
|
|
.interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
|
|
|
BIT(NL80211_IFTYPE_AP) |
|
|
|
|
BIT(NL80211_IFTYPE_MESH_POINT),
|
|
|
|
.supports_monitor = false,
|
|
|
|
|
|
|
|
.idle_ps = false,
|
|
|
|
.download_calib = true,
|
|
|
|
.supports_suspend = false,
|
|
|
|
.tcl_ring_retry = true,
|
|
|
|
.reoq_lut_support = false,
|
|
|
|
.supports_shadow_regs = false,
|
|
|
|
|
|
|
|
.num_tcl_banks = 48,
|
|
|
|
.max_tx_ring = 4,
|
|
|
|
|
|
|
|
.wmi_init = &ath12k_wmi_init_qcn9274,
|
|
|
|
|
|
|
|
.hal_ops = &hal_qcn9274_ops,
|
|
|
|
|
|
|
|
.qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
|
|
|
|
|
|
|
|
.rfkill_pin = 0,
|
|
|
|
.rfkill_cfg = 0,
|
|
|
|
.rfkill_on_level = 0,
|
|
|
|
|
|
|
|
.rddm_size = 0,
|
|
|
|
|
|
|
|
.def_num_link = 0,
|
|
|
|
.max_mlo_peer = 256,
|
|
|
|
|
|
|
|
.otp_board_id_register = 0,
|
|
|
|
|
|
|
|
.supports_sta_ps = false,
|
|
|
|
|
|
|
|
.acpi_guid = NULL,
|
|
|
|
.supports_dynamic_smps_6ghz = false,
|
|
|
|
.iova_mask = 0,
|
|
|
|
.supports_aspm = false,
|
2025-03-21 16:22:43 +05:30
|
|
|
|
|
|
|
.ce_ie_addr = &ath12k_ce_ie_addr_ipq5332,
|
|
|
|
.ce_remap = &ath12k_ce_remap_ipq5332,
|
2025-03-21 16:22:44 +05:30
|
|
|
.bdf_addr_offset = 0xC00000,
|
2025-04-09 10:26:41 +08:00
|
|
|
|
|
|
|
.dp_primary_link_only = true,
|
2025-03-21 16:22:41 +05:30
|
|
|
},
|
wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices
ath12k is a new mac80211 driver for Qualcomm Wi-Fi 7 devices, first
supporting QCN9274 and WCN7850 PCI devices. QCN9274 supports both AP
and station; WCN7850 supports only station mode. Monitor mode is not
(yet) supported. Only PCI bus devices are supported.
ath12k is forked from an earlier version of ath11k. It was simpler to
have a "clean start" for the new generation and not try to share the
code with ath11k. This makes maintenance easier and avoids major
changes in ath11k, which would have significantly increased the risk
of regressions in existing setups.
ath12k uses le32 and cpu_to_le32() macros to handle endian
conversions, instead of using the firmware byte swap feature utilized
by ath11k. There is only one kernel module, named ath12k.ko.
Currently ath12k only supports HE mode (IEEE 802.11ax) or older, but
work is ongoing to add EHT mode (IEEE 802.11be) support.
The size of the driver is ~41 kLOC and 45 files. To make the review
easier, this initial version of ath12k does not support Device Tree,
debugfs or any other extra features. Those will be added later, after
ath12k is accepted to upstream.
The driver is build tested by Intel's kernel test robot with both GCC
and Clang. Sparse reports no warnings. The driver is mostly free of
checkpatch warnings, albeit few of the warnings are omitted on
purpose, list of them here:
https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath12k/ath12k-check#L52
The driver has had multiple authors who are listed in alphabetical
order below.
Co-developed-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Signed-off-by: Balamurugan Selvarajan <quic_bselvara@quicinc.com>
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Co-developed-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Signed-off-by: Bhagavathi Perumal S <quic_bperumal@quicinc.com>
Co-developed-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Co-developed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Co-developed-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Co-developed-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Signed-off-by: Ramya Gnanasekar <quic_rgnanase@quicinc.com>
Co-developed-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
2022-11-28 17:09:53 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
int ath12k_hw_init(struct ath12k_base *ab)
|
|
|
|
{
|
|
|
|
const struct ath12k_hw_params *hw_params = NULL;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(ath12k_hw_params); i++) {
|
|
|
|
hw_params = &ath12k_hw_params[i];
|
|
|
|
|
|
|
|
if (hw_params->hw_rev == ab->hw_rev)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (i == ARRAY_SIZE(ath12k_hw_params)) {
|
|
|
|
ath12k_err(ab, "Unsupported hardware version: 0x%x\n", ab->hw_rev);
|
|
|
|
return -EINVAL;
|
|
|
|
}
|
|
|
|
|
|
|
|
ab->hw_params = hw_params;
|
|
|
|
|
|
|
|
ath12k_info(ab, "Hardware name: %s\n", ab->hw_params->name);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|