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>
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
|
/*
|
|
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
#ifndef _ATH12K_MHI_H
|
|
#define _ATH12K_MHI_H
|
|
|
|
#include "pci.h"
|
|
|
|
#define PCIE_TXVECDB 0x360
|
|
#define PCIE_TXVECSTATUS 0x368
|
|
#define PCIE_RXVECDB 0x394
|
|
#define PCIE_RXVECSTATUS 0x39C
|
|
|
|
#define MHISTATUS 0x48
|
|
#define MHICTRL 0x38
|
|
#define MHICTRL_RESET_MASK 0x2
|
|
|
|
enum ath12k_mhi_state {
|
|
ATH12K_MHI_INIT,
|
|
ATH12K_MHI_DEINIT,
|
|
ATH12K_MHI_POWER_ON,
|
|
ATH12K_MHI_POWER_OFF,
|
|
ATH12K_MHI_FORCE_POWER_OFF,
|
|
ATH12K_MHI_SUSPEND,
|
|
ATH12K_MHI_RESUME,
|
|
ATH12K_MHI_TRIGGER_RDDM,
|
|
ATH12K_MHI_RDDM,
|
|
ATH12K_MHI_RDDM_DONE,
|
|
};
|
|
|
|
extern const struct mhi_controller_config ath12k_mhi_config_qcn9274;
|
|
extern const struct mhi_controller_config ath12k_mhi_config_wcn7850;
|
|
|
|
int ath12k_mhi_start(struct ath12k_pci *ar_pci);
|
|
void ath12k_mhi_stop(struct ath12k_pci *ar_pci);
|
|
int ath12k_mhi_register(struct ath12k_pci *ar_pci);
|
|
void ath12k_mhi_unregister(struct ath12k_pci *ar_pci);
|
|
void ath12k_mhi_set_mhictrl_reset(struct ath12k_base *ab);
|
|
void ath12k_mhi_clear_vector(struct ath12k_base *ab);
|
|
|
|
void ath12k_mhi_suspend(struct ath12k_pci *ar_pci);
|
|
void ath12k_mhi_resume(struct ath12k_pci *ar_pci);
|
|
|
|
#endif
|